从来就没有什么救世主
也不靠神仙皇帝
要创造人类的幸福
全靠我们自己
为了在 GFW 的封锁之下进行正常的上网活动,可以使用 VPN。为什么有各种各样的 VPN 服务提供商还要自己搭建 VPN 呢?有以下几方面的考虑:
注册任意一家 VPS 服务提供商的账号。此步可能需要一张双币信用卡。 至于选择哪家服务商,此处按下不表。下文将以 DigitalOcean 为例描述具体步骤。
我新建的 Droplet 是最低配置,具体配置包括:
地理位置选的是最近的。
操作系统开始选择的是 Ubuntu14.04,后来用的是 Ubuntu12.04(版本应该没有影响)。
没有选择多余的设置。
点击新建按钮会收到一份包含登陆密码的邮件。接着就可以通过ssh进行登录了。
其余添加用户、Linux 基本设置等内容在此不再赘述。
sudo apt-get install pptpd
编辑 /etc/pptpd.conf
,添加以下内容(基本上默认设置已经完成或者被注释了):
option /etc/ppp/pptpd-options
localip 192.168.0.1
remoteip 192.168.0.100-200
这里是 PPTP 服务器的 IP 地址设为 192.178.0.1
,把 PPTP 客户端的 IP 地址设置为 192.168.0.100
到 192.168.0.200
的区间内。当然你也可以自己的需要和喜欢进行相应的设置
编辑 /etc/ppp/pptpd-options
,添加 DNS 地址。这里我选择的是Google Public DNS。
ms-dns 8.8.8.8
ms-dns 8.8.4.4
编辑 /etc/ppp/chap-secrets
,添加账号和密码。其中第一列为账户名,第二列为密码。
# client server secret IP addresses
test pptpd 1234 *
打开 IPv4 转发,并重新载入设置。
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sudo sysctl -p
为 PPTP 连接设置 NAT,否则不能访问别的网站。
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
也可以直接编辑 /etc/rc.local
,在 exit 0
之前添加以上内容。
sudo service pptpd restart
这样PPTP服务器就搭建完毕了,可以「科学上网」了!
没有什么能够阻挡
你对自由地向往
第一次设置完毕之后尝试连接 VPN,发现连接失败。重新设置之后依然没有解决,以至于让我怀疑是 Ubuntu14.04 的问题。我新建了一个 Droplet,更换成 Ubuntu12.04 之后还是同样的问题。接着尝试用netstat
检查,发现连接已经建立,但是因为某种原因被断开了。检查/var/log/syslog
,发现了以下内容:
Mar 21 16:54:23 Server pptpd[1808]: GRE: Bad checksum from pppd.
Mar 21 16:54:53 Server pppd[1809]: LCP: timeout sending Config-Requests
Mar 21 16:54:53 Server pppd[1809]: Connection terminated.
Mar 21 16:54:53 Server pppd[1809]: Modem hangup
Mar 21 16:54:53 Server pppd[1809]: Exit.
Mar 21 16:54:53 Server pptpd[1808]: GRE: read(fd=6,buffer=80504c0,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs
Mar 21 16:54:53 Server pptpd[1808]: CTRL: PTY read or GRE write failed (pty,gre)=(6,7)
Mar 21 16:54:53 Server pptpd[1808]: CTRL: Reaping child PPP[1809]
Mar 21 16:54:53 Server pptpd[1808]: CTRL: Client 50.164.202.163 control connection finished
上网搜索,在 StackOverflow 上找到了答案。至此,终于定位到无法连接的根本原因 —— 是路由器不支持 PPTP Passthrough
功能。我上路由器厂商的官网一看,果然发现了去年12月发布了一个固件更新用来修复VPN连接的问题。
如果你选择 DigitalOcean,点击链接注册,可以获得10美元的优惠。