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,执行下面的命令

1
# yum whatprovides 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

# Secrets for authentication using CHAP
# client server secret IP addresses
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

1
> sudo pppd call vpn

断开vpn

1
> sudo killall pppd

设置路由

成功连接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

#!/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,查看路由情况:

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 添加以下行

1
novj

保持长时间在线

后面还发现一个问题,一段时间不用就自动断开连接了,发现lcp-echo-interval 可以缓解这个问题。

编辑 /etc/ppp/options.pptp 添加以下行

1
lcp-echo-interval 30

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


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