一、安装pptp服务
sudo apt-get install -y ppp pptpd
sudo vim /etc/pptpd.conf
修改:
option /etc/ppp/pptpd-options
localip 172.31.26.19 (本地vpn地址)
remoteip 172.31.26.20-200 (vpn客户点地址范围)
建立vpn账号
sudo vim /etc/ppp/chap-secrets
添加一个名为test 服务为pptpd 密码为123456 兵允许所有IP地址登陆:
test pptpd 123456 *
关于重启服务,如果sudo service pptpd stop无法停止则使用killall pptpd来关闭服务
然后用sudo service pptpd start来启动
sudo netstat -apnl | grep pptp
如果看到1723端口则说明pptpd服务启动成功,当然在外部的防火墙要开通1723端口的访问权限
下面开始设置转发,否则VPN客户端是无法访问外网的
sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p 刷新
设置iptables转发
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
并在/etc/rc.local中添加这一条,以防止重启后失效
二、关于局部vpn的设置如下:
1.设置vpn连接属性—网络—TCP/IP协议—高级 取消“在远程网络上使用默认网关”
如此即使连接上VPN 全局数据依然走的是本地网络。
2.设置本地路由表
以单ip 8.8.8.8为列:
route -p add 8.8.8.8 mask 255.255.255.255 172.31.26.19
这样设置后只要访问8.8.8.8这个ip 那么所有数据都会从172.31.26.19这个vpn的网关来走
而其他的ip则不受影响
删除的方法:
route delete 8.8.8.8
【关于连接VPN后 ssh无法连接linux的问题】
PPTPD默认的MTU太大,导致链路上有些设备堵塞。
解决思路就是把MTU改小些,方法大概有三种:
一、如果开启了iptables的(验证过可行)
iptables -A FORWARD -p tcp --syn -s 10.0.0.0/24 -j TCPMSS --set-mss 1356
其中粗体部分换上你的pptp client的IP段
二 、在 /etc/ppp/ip-up 中,exit 0行前添加 (验证过可行)
ifconfig $1 mtu 1356
看到ip-up中有一行:
[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@"
所以也在 ip-up.local文件中添加ifconfig $1 mtu 1356也同效。
三、在PPTPD配置文件中设置:
打开/etc/ppp/options.pptpd
在文件最后添加 mtu1356