服务器环境:Ubuntu 16.0.4.2
客户端环境:windows7
VPN服务器搭建
一,卸载pptpd以及iptables(对于之前VPN配置错误的)
#卸载pptpd
sudo apt-get autoremove pptpd
sudo apt-get purge pptpd
#卸载iptables
sudo apt-get autoremove iptables*
sudo apt-get purge iptables*
二,安装pptpd
#安装pptpd
sudo apt-get install pptpd
三,配置pptpd
1.修改pptpd.conf配置文件信息
sudo vim /etc/pptpd.conf
打开文件后,在文件末尾找到
#localip 192.168.0.1
#remoteip 192.168.0.234-238,192.168.0.245
去掉前面的注释
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
localip是指本机IP,这个IP不是指公网IP也不是局域网IP.代表的是VPN服务器的ip地址,你可以把整个VPN网络理解为另一个局域网。remoteip是客户端连接后分配的ip地址;这里可以不用修改,如果要修改也可以,例如:
localip 10.0.0.1
remoteip 10.0.0.2-100
客户端连接后,服务器网卡接口如图:(ppp0)
2.添加VPN用户账号
sudo vim /etc/ppp/chap-secrets
打开文件以后,看见:
# Secrets for authentication using CHAP
# client server secret IP addresses
client代表用户名,server代表使用的VPN服务类型, secret代表用户登录的密码,IP address代表可以可以登录连接的IP
我的如下:
test pptpd 123456 *
如果是新搭建的VPN,服务类型填pptpd(常用的用PPTPD,LT2P,IKEv2,IPSec, 后面三种需要其它配置),IP address 填*(*代表不限制登录连接的IP)
3,设置VPN的ms-dns
sudo vim /etc/ppp/pptpd-options
找到下面内容:
#ms-dns 10.0.0.1
#ms-dns 10.0.0.1
去掉注释,修改为8.8.8.8、8.8.4.4或者你其它的DNS服务器;我的是:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
如果你使用的是云服务器,这个地方建议是使用云服务器内部的DNS服务器地址,不然,有可能会无法访问外网
如:
ms-dns 100.100.2.138
ms-dns 100.100.2.136
三,开启内核IP转发
sudo vim /etc/sysctl.conf
在打开的文档中找到
#net.ipv4.ip_forward=1
去掉注释
net.ipv4.ip_forward=1
保存以后,输入命令,使修改及时生效
sudo sysctl -p
四,安装配置iptables
1.安装iptables
sudo apt-get install iptables
2,清除iptables里旧的规则
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
3,允许gre协议以及1723端口、47端口
sudo iptables -A INPUT -p gre -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 47 -j ACCEPT
4,开启NAT转发
注意这里的网卡名称要些自己的网卡名称,我这里是eth0
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
5.防止VPN代理上网慢
sudo iptables -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356
6.保存iptables规则
sudo iptables-save > /etc/iptables-rules
打卡网卡配置文件
sudo vim /etc/network/interfaces
在文件末尾添加
pre-up iptables-restore < /etc/iptables-rules
五,重启pptpd服务
sudo service pptpd restart
查看端口1723是否被启用
如图,代表pptpd启动成功
客户端配置
一,打开网络共享中心
二,点击设置新的连接或网络
三,点击连接到工作区
点击下一步
四,点击使用我的Internet连接VPN
五,输入VPN服务器地址
继续下一步
六,输入VPN登录用户名密码
点击连接
点击跳过,最后关闭
七,回到网络共享中心,点击更改适配器设置
我这里已经是连接上了的
选中之前创建的新的网络连接,我的叫VPN连接,右键属性
八,点击安全修改VPN类型为PPTP
九,点击网络,双击TCP/IPV4或者选中TCP/IPV4
十,填写dns地址,我这里是8.8.8.8/8.8.4.4因为要访问外网
十一,打开高级设置,勾选在远程网络上使用默认网关
这里一定要勾选上,不然依然不能访问外网,如果国内网站也不能访问,那就是IP转发配置有问题,参考
1. 设置允许转发
sysctl -w net.ipv4.ip_forward=1 (这步一般文档都有)
2. 设置ppp0 -> eth0的跳转
iptables --insert FORWARD 1 --source 192.168.0.0/24 /
--destination 0.0.0.0/0.0.0.0 --jump ACCEPT
3. 设置Target-> eth0 的返回
iptables --table nat --append POSTROUTING --out-interface eth0 /
--jump MASQUERADE
4. 设置ppp0 -> eth0 的返回
iptables --insert FORWARD 1 --source 0.0.0.0/0.0.0.0 /
--destination 192.168.0.0/24 --jump ACCEPT --out-interface ppp0
设置完成,选中VPN连接,右键连接
如果你是云服务器,那么需要开启入网和出网的1723,47端口,可以在云服务器控制台设置安全组即可,重启服务器;
否则会出现807错误