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