Fedora 安装pptp vpn
使用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,执行下面的命令
# yum whatprovides pppd
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
# yum install ppp-2.4.5-33.fc20.x86_64
保证pppd版本高于2.4.2,然后开始修改配置文件。
设置用户名密码
> vi /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
user1 PPTP password123 *
user1 vpn用户名
PPTP 后面的文件需要用到,和用户名密码相对应
password123 vpn密码
创建vpn profile
> vi /etc/ppp/peers/vpn
pty "pptp serverip --nolaunchpppd"
name user1
remotename PPTP
require-mppe-128
file /etc/ppp/options.pptp
ipparam vpn
连接vpn
> sudo pppd call vpn
断开vpn
> sudo killall pppd
设置路由
成功连接vpn后,发现访问不了需要访问的10.6网段,使用route命令查看路由情况
> 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网段,需要添加下面的路由
> 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 !
> sudo vi /etc/ppp/ip-up.local
#!/bin/bash
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
#!/bin/bash
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,查看路由情况:
> sudo pppd call vpn
> 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.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的路由了。
> 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 选项可以大幅提高速度。
novj Disable Van Jacobson style TCP/IP header compression in both the transmit and the receive direction.
编辑 /etc/ppp/options.pptp 添加以下行
novj
保持长时间在线
后面还发现一个问题,一段时间不用就自动断开连接了,发现lcp-echo-interval 可以缓解这个问题。
编辑 /etc/ppp/options.pptp 添加以下行
lcp-echo-interval 30
Example Config file
最终使用的配置如下:/etc/ppp/options.pptp
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