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


Fedora 安装pptp vpn
https://usmacd.com/cn/fedora_pptp_vpn/
作者
henices
发布于
2014年10月8日
许可协议