大中华局域网实在太蛋疼了,导致我想用小派上个 Google 都不得不翻墙,但是网上一搜大把是用述莓派搭建 VPN 的教程,却没有树莓派如何连接 VPN 的教程,研究半天,各种 GUI 工具更本不好使,最直接的方法还是命令行配置,又轻量,又有效率。
一、安装必要软件 xl2tpd,这个软件即可以作为 L2TP 的服务端,又可以作为客户端,好软件啊。。。
sudo apt-get install xl2tpd
二、配置 xl2tpd
配置xl2tpd,需要修改它的配置文件,如下所示:
命令 sudo vim /etc/xl2tpd/xl2tpd.conf
修改内容为:
[global] port = 1701 access control = no [lac HelloMac] ;HelloMac 是你的服务名称,自己设定一个,连接的时候需要用到,区分大小写 lns = vpn.hellomac.com.cn ;此处输入你的 VPN 服务器地址 redial = yes redial timeout = 15 max redials = 5 require chap = yes ;使用使用chap质询握手认证协议 refuse pap = yes require authentication = yes name = name ;你的 VPN 用户名 pppoptfile = /etc/ppp/options.l2tpd.hellomac ppp debug = no
接下来配置 ppoptfile,如下所示:
命令
sudo vim /etc/ppp/options.l2tpd.hellomac
修改内容为:
asyncmap 0 noauth crtscts lock hide-password modem netmask 255.255.255.0 proxyarp lcp-echo-interval 30 lcp-echo-failure 4 ipcp-accept-local ipcp-accept-remote noipx
最后配置 chap 认证的用户名和密码
命令
sudo vi /etc/ppp/chap-secrets
修改内容为:
# Secrets for authentication using CHAP # client server secret IP addresses name * password *
其中 name = 你的 VPN 用户名,password = 你的 VPN 密码
好了,配置到这里就完成了,现在开始连接:
首先启动 xl2tpd 服务:
sudo service xl2tpd start
或
sudo /etc/init.d/xl2tpd start
然后使用如下命令连接 VPN:
sudo -u root -H sh -c "echo 'c HelloMac' > /var/run/xl2tpd/l2tp-control"
使用这个命令命令并不会提示连接是否成功,那么我们需要用 ifconfig 来验证:
输入 ifconfig 后查看结果中是否有 ppp0,如果有,则连接成功,如果没有,检查你的 xl2tpd 服务是否正常。
最后一步,当 ifconfig 中出现 ppp0 时,说明 VPN 拨号已经成功,但是你上网却发现还是在大中华局域网里,所以需要最后一步,更改你的默认网关为 VPN,这样系统系统就会从 VPN 连接数据了,输入命令:
sudo ip route replace default dev ppp0
打开浏览器,赶紧去墙外看看祖国是多么的繁荣娼盛吧。
要断开 VPN 连接,输入命令:
sudo -u root -H sh -c "echo 'd HelloMac' > /var/run/xl2tpd/l2tp-control"
后记:
为了更加方便,我写了两个超简单的脚本用于连接和断开,需要的同志自己复制吧,根据实际情况简单修改即可:
连接 VPN 脚本:
#!/bin/sh # sudo service xl2tpd restart sudo -u root -H sh -c "echo 'c HelloMac' > /var/run/xl2tpd/l2tp-control" sleep 5 echo "VPN Conecting..." sleep 5 echo "Waiting..." sleep 10 sudo ip route replace default dev ppp0 echo "VPN Connected"
断开 VPN 脚本:
#!/bin/sh # sudo -u root -H sh -c "echo 'd HelloMac' > /var/run/xl2tpd/l2tp-control" sudo service xl2tpd stop echo "VPN Disconected"
—————————————
2015年1月15日更新:
昨天这样配置后发现一个问题,就是当 VPN 断线自动重拨以后,默认路由不会增加,所以只要断线,就没办法继续翻墙了,必须手动添加一次默认路由,这样就显得很麻烦,历经千辛万苦终于在大神lfw19891101的博客找到解决办法,在 /etc/ppp/options.l2tpd.hellomac 文件中添加关键配置命令 replacedefaultroute,同时更具大神指引更新了这个配置文件,如下:
ipcp-accept-local ipcp-accept-remote asyncmap 0 noauth crtscts lock hide-password modem netmask 255.255.255.0 proxyarp lcp-echo-interval 30 lcp-echo-failure 4 ipcp-accept-local ipcp-accept-remote noipx defaultroute replacedefaultroute usepeerdns debug idle 1800 mtu 1410 mru 1410 connect-delay 5000 proxyarp
具体释义可以自己去大神博客浏览。
这样做了以后 replacedefaultroute 指令就会在ppp拨号成功以后,重置系统的默认路由,让所有浏览从 VPN 走了,所以我们就不再需要那么复杂的链接脚本去添加默认路由了,链接脚本更新为:
#!/bin/sh # sudo service xl2tpd restart sudo -u root -H sh -c "echo 'c HelloMac' > /var/run/xl2tpd/l2tp-control" sleep 2 echo "VPN Conecting..." sleep 3 echo "Waiting..." sleep 3 # sudo ip route replace default dev ppp0 route echo "VPN Connected"
运行脚本,自动连接,在 route 输出里,就可以很清洗的看到,ppp0已经是默认路由了。
谢谢分享~
你好,我在令连接 VPN后没有出现 ppp0, 查看xl2tpd 状态也正常,这怎么办啊