UBUNTU下用pptpd做VPN server

2012年09月07日

悲催的学校在寝室开放了学校的无线WIFI,结果又屏蔽了外网,只能上校园网。难不倒Linuxer!!!果断在办公室UBUNTU12.04上装VPN server来共享网络,因为办公室算是在学校内部,不过这样的话办公室的电脑就不能关了。

服务器端

  1. 安装pptpd

    $sudo apt-get install pptpd

  2. 编辑文件 /etc/pptpd.conf,取消以下内容中的文件注释(也就是去掉语句前面的#号)

    option /etc/ppp/pptpd-options debug #调试好了过后这个应该可以不用打开,这是输出日志的,日志在/var/log/syslog里 logwtmp localip 192.168.1.1 #这个IP是自己自定义的主机IP,就好像局域网内路由器IP一样 remoteip 192.168.1.100-102 #表示可以分配给客户端的IP范围,这里我只打开了3个地址,注意主机IP和客户端IP应该在同一网段内

  3. 编辑文件 /etc/ppp/pptpd-options

    name pptpd #服务器名称,默认为pptpd # 采用mschap-v2协议及mppe-128加密 refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 # 给客户端分配的DNS,和服务器主机一样就行 ms-dns 202.120.80.2 ms-dns 202.120.80.67

    nodefaultroute lock nobsdcomp

  4. 编辑文件 /etc/ppp/chap-secrets

    这个文件是存储VPN客户端用户名和密码的地方,非常抱歉这个是明文存储的,pptpd的安全性不是很好啊。

     #  client用户名    server服务器名    secret密码    IP 允许的addresses客户端IP
           nick             pptpd           IamSecret          * #任意IP均可
    
  5. 接下来就是进行IP转发设置等

    编辑 /etc/sysctl.conf,找到以下内容取消注释以开启数据包转发

     net.ipv4.ip-forward=1
    

    保存后在终端中运行 sudo sysctl -p 使配置生效

    编辑/etc/default/ufw,找到以下内容更改以打开数据包转发防火墙

     DEFAULT_FORWARD_POLICY="ACCEPT"
    

    保存后打开服务器端口

     $sudo ufw allow 1723/tcp #打开TCP1723端口
     $sudo ufw allow 47/tcp #打开TCP47端口
    

    如果服务器是在路由器下面还需要在路由器打开这个端口的映射

    然后添加iptables规则:

     $iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT  #24表示子网掩码,代表24个1.
     $iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
    

    为防止重启后丢失规则,保存规则到文件(注意权限问题)

     $sudo iptables-save |sudo tee /etc/iptables-rules
    

    编辑/etc/network/interfaces 添加以下语句到工作的界面上(如eth0等)

     $pre-up iptables-restore < /etc/iptables-rules
    

    如果iptables经常变化,可以在interface中再次添加以下语句以实现每次变化时备份规则

     $post-down iptables-save > /etc/iptables-rules
    
  6. 重启

     sudo service pptpd restart #重启pptpd服务 
     sudo service ufw restart #重启防火墙 
     sudo reboot #重启计算机
    

用户端

在客户端,可以通过如下方式进行连接

首先新建一个VPN账户:

sudo pptpsetup --create vpnname --server ip --username test --password test --encrypt --start

start参数表示立即开始这个拨号,password密码是可选的。以后要用时:

sudo pon vpnname
sudo poff#断开
plog#查看状态
sudo pptpsetup --delete vpnname#删除保存的会话

开启VPN后还需要添加一条路由信息

sudo route add default dev ppp0