使用NetWorkManger图形界面,可以简单地配置pptp vpn,但是有几个地方不是特别满意
- 操作繁琐,需要多次点击鼠标
- 拨号后全局生效,要设置路由
- 可以配置的参数不是特别多
- 不是通用的方法,在终端中使用不方便
- 还是比较习惯命令行操作
基于上面几个原因折腾了一下pppd,用了一段时间非常不错,很稳定,在这里记录配置的方法。使用pppd的方法应该可以在其他Linux的发行版上正常使用,配置文件的路径或许有稍许差别。
pppd是Point-to-Point Protocol Daemon的缩写,pppd 的源代码托管在GitHub上 https://github.com/paulusmack/ppp 可以访问 pppd 的官方网站获取更多信息 https://ppp.samba.org/pppd.html
安装所需要的软件
首先需要看看哪个包提供了pppd,执行下面的命令
1 2 3 4 5 6 7 8 9
| ppp-2.4.5-33.fc20.x86_64 : The Point-to-Point Protocol daemon 源 :fedora 匹配来源: 文件名 :/usr/sbin/pppd
ppp-2.4.5-33.fc20.x86_64 : The Point-to-Point Protocol daemon 源 :@koji-override-0/$releasever 匹配来源: 文件名 :/usr/sbin/pppd
|
安装pppd
1
| # yum install ppp-2.4.5-33.fc20.x86_64
|
保证pppd版本高于2.4.2,然后开始修改配置文件。
设置用户名密码
1 2 3 4 5
| > vi /etc/ppp/chap-secrets
user1 PPTP password123 *
|
user1 vpn用户名
PPTP 后面的文件需要用到,和用户名密码相对应
password123 vpn密码
创建vpn profile
1 2 3 4 5 6 7 8
| > vi /etc/ppp/peers/vpn
pty "pptp serverip --nolaunchpppd" name user1 remotename PPTP require-mppe-128 file /etc/ppp/options.pptp ipparam vpn
|
连接vpn
断开vpn
设置路由
成功连接vpn后,发现访问不了需要访问的10.6网段,使用route命令查看路由情况
1 2 3 4 5 6 7 8
| > route -n
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.51.255.* 0.0.0.0 UG 1024 0 0 em1 10.51.0.0 0.0.0.0 255.255.0.0 U 0 0 0 em1 172.16.58.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 *.99.*27.1*0 10.51.255.254 255.255.255.255 UGH 0 0 0 em1
|
因为需要访问10.6网段,需要添加下面的路由
1
| > sudo route add -net 10.6.0.0/16 gw 10.58.*.* dev ppp0
|
其中10.58.*.*为拨vpn后分配给你的IP地址,这里就有一个问题,每次连接后都需要重新设置路由,比较麻烦,摸索了一翻发现ip-up.local和ip-down.local可以解决这个问题,每次连接成功后会执行ip-up.local脚本,每次断开连接时会执行ip-down.local脚本。我们只要编写这两个脚本就可以自动设置路由,完全自动化,Cool !
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| > sudo vi /etc/ppp/ip-up.local
NET="10.6.0.0/16" IFACE="ppp0" IP=`ip addr show dev ${IFACE} | grep 'inet' | awk '{print $2}'`
route add -net ${NET} gw ${IP} dev ${IFACE}
> sudo vi /etc/ppp/ip-down.local
route del *.99.*27.1*0 dev em1
> sudo chmod +x /etc/ppp/ip-up.local > sudo chmod +x /etc/ppp/ip-down.local
|
重新连接vpn,查看路由情况:
1 2
| > sudo pppd call vpn > route -n
|
1 2 3 4 5 6 7
| Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.51.255.* 0.0.0.0 UG 1024 0 0 em1 10.6.0.0 172.16.58.89 255.255.0.0 UG 0 0 0 ppp0 10.51.0.0 0.0.0.0 255.255.0.0 U 0 0 0 em1 172.16.58.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 *.99.*27.1*0 10.51.255.254 255.255.255.255 UGH 0 0 0 em1
|
已经自动添加10.6.0.0的路由了。
1 2 3 4 5 6
| > sudo killall pppd > route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.51.255.* 0.0.0.0 UG 1024 0 0 em1 10.51.0.0 0.0.0.0 255.255.0.0 U 0 0 0 em1
|
提升速度
连接上vpn后发现速度很慢,经过研究 novj 选项可以大幅提高速度。
1
| novj Disable Van Jacobson style TCP/IP header compression in both the transmit and the receive direction.
|
编辑 /etc/ppp/options.pptp 添加以下行
保持长时间在线
后面还发现一个问题,一段时间不用就自动断开连接了,发现lcp-echo-interval 可以缓解这个问题。
编辑 /etc/ppp/options.pptp 添加以下行
Example Config file
最终使用的配置如下:/etc/ppp/options.pptp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| lock noauth refuse-pap refuse-eap refuse-chap refuse-mschap usepeerdns noipdefault nodefaultroute novj require-mppe nobsdcomp nodeflate lcp-echo-failure 5 lcp-echo-interval 30 mppe-stateful
/etc/ppp/peers/vpn
pty "pptp *.99.*27.1*0 --nolaunchpppd" name xxx remotename PPTP file /etc/ppp/options.pptp ipparam vpn
/etc/ppp/chap-secrets
user PPTP password *.99.*27.1*0
|
参考链接
http://shyju.wordpress.com/2013/08/13/linux-as-a-pptp-vpn-client-configuration-centosfedora/
http://www.cyberciti.biz/tips/howto-configure-ubuntu-fedora-linux-pptp-client.html
http://pptpclient.sourceforge.net/
https://ppp.samba.org/index.html