Archlinux使用pptpclient

pptpclient是一个实现Microsoft PPTP协议的程序。因此它能够被用来接入另一个Microsoft VPN网络,比如学校和单位。(from ArchWiki)

安装

sudo pacman -S pptpclient

配置

pptpsetup --create my_tunnel --server vpn.example.com --username alice --password foo --encrypt

要关心的配置文件包括:

/etc/ppp/options.pptp
/etc/ppp/chap-secrets
/etc/ppp/peers/my_tunnel

其中chap-secrects是用来存储密码的(是明文存的。。。只是需要管理员权限才能看到而已),对应的是默认的认证协议(CHAP)。根据各人需求的协议,该文件会有所不同。比如我这次需要的是更low的PAP协议,那么我需要修改options.pptp文件以生成一个pap-secrets文件,方法是注释掉下面这行:

refuse-pap

配置完成后,三个文件大概长这样:

# /etc/ppp/peers/sq
# written by pptpsetup
pty "/usr/sbin/pptp vpn.sei.pku.edu.cn --nolaunchpppd"
lock
noauth
nobsdcomp
nodeflate
name shenqi16
remotename sq
# require-mppe-128
file /etc/ppp/options.pptp
ipparam sq
# /etc/ppp/options.pptp
# Lock the port
lock

# Authentication
# We don't need the tunnel server to authenticate itself
noauth

# We won't do PAP, EAP, CHAP, or MSCHAP, but we will accept MSCHAP-V2
# (you may need to remove these refusals if the server is not using MPPE)
# refuse-pap
refuse-eap
refuse-chap
refuse-mschap

# Compression
# Turn off compression protocols we know won't be used
nobsdcomp
nodeflate
# Secrets for authentication using PAP
shenqi16 sq "xxx" *
# client    server  secret          IP addresses

其中sq是我为连接取的名字,shenqi16是我的登录用户名,"xxx"是我的登陆密码,对应替换掉就可以了。如果你在下面的连接过程中发现有MPPE相关的报错,可以考虑解注释掉那句require-mppe-128,具体干嘛的不懂。

连接

测试一下:

pon sq debug dump logfd 2 nodetach

这条命令应当不会终止,如果终止了说明配置出了问题。此时你查看一下ip应该能发现一个ppp0的网卡,我的输出信息如下:

[maxkibble@ARCH ~]$ ip addr
30: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 3

平时使用vpn需要下面两条命令:

pon sq
ip route add default dev ppp0

这样就可以访问局域网里的服务器啦!

结束使用vpn:

ip route del default dev ppp0
poff sq

推荐阅读更多精彩内容