VPN

网上能找到的 VPN 安装教程非常多,但是能按教程装成功的非常少,所以我把过程记录了下来。

在现在的网络环境下每个人都需要一个 VPN。一方面可以保证你在公共网络环境下安全使用网络,比如在咖啡厅、机场等提供免费 WIFI 的地方;另一方面众所周知的原因,我们尤其是互联网行业的技术人员需要 VPN 或者加密网络链路才能够正常使用某些国外合法服务。再次
谴责他们为我们获取技术资料设置障碍的行为。

通常情况下加密链路有 2 种方式:

这篇文章主要说明 VPN 的方式,因为这种方式几乎是一劳永逸的方式,后期成本很低。

GoAgengX 的方式:

这在 Mac 下使用非常方便,缺点和 SSH 隧道方式类似,手机和 iPad 不方便,并且有流量限制。而且这种方式经常或失效。

SSH 隧道的方式:

我之前几年都使用的是加密隧道的方式,比如在 Mac 或者 Linux 平台上,可以执行 ssh -D 1234 [email protected] 登陆后就会在本地打通一个端口,将需要加密的流量导入本地这个端口即可。
然后可以设置应用的 proxy 为 本地 IP 和 1234 端口即可。这种方式的好处是非常稳定,缺点是每次输入命令操作复杂,并且手机和 iPad 很难用这种方式访问国外合法网站。

VPN 的方式:

VPN 的方式可以方便的使用 VPN 客户端来完成整个过程。 VPN 的安装还是相对复杂的,网上能找到的 VPN 安装教程非常多,但是能够实现完整
安装,然后电脑、笔记本、手机、iPad 正常使用的教程几乎找不到。所以我把自己安装 VPN 的过程记录下来。

1. 购买国外的 VPS

digitalocean vps这里推荐 DigitalOcean,每月 5 美元的型号即可。除了完成 VPN 的所有功能外,你也可以把整个 VPS 当做自己的资料备份机器或者托管自己的博客或者网站。相对于你获得的技术资料和讯息,5 美元每月的 DigitalOcean 租用价格几乎可以忽略。关于 DigitalOcean VPS 的测试可以看另外一篇文章:目前发现的性价比最高的VPS: DigitalOcean VPS

2. 安装操作系统

这里推荐 Ubuntu 12.04LTS 版本。

3. 安装过程

安装必备的软件包:

sudo apt-get install openswan ppp xl2tpd

假设当前的设置如下:

192.168.2.200 DigitalOcean VPS 的外网 IP
192.168.2.1 DigitalOcean VPS 的网关 IP

编辑并检查 /etc/ipsec.conf 的以下几行,大部分情况下整个文件不需要修改:

config setup
  nat_traversal=yes
  virtual_private=%v4:10.0.0.0/8,%v4:192.168.2.0/16,%v4:172.16.0.0/12
  oe=off
  protostack=netkey

include /etc/ipsec.d/l2tp-psk.conf

编辑和检查 /etc/ipsec.d/l2tp-psk.conf
注意 left= 那行和 leftnexthop= 那行修改成你的 DigitalOcean VPS 的 IP 和网关地址。

conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
type=transport
left=192.168.2.200
leftnexthop=192.168.2.1
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
dpddelay=15
dpdtimeout=30
dpdaction=clear

编辑和检查 /etc/xl2tpd/xl2tpd.conf 修改 IP 范围和本地 IP 地址,注意这些地址和你的内网 IP 地址不能冲突或者重复:

[global]
ipsec saref = yes
[lns default]
ip range = 192.168.2.231-192.168.2.239
local ip = 192.168.2.230
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

编辑和检查 /etc/ppp/options.xl2tpd修改 ms-dns 的值,这里使用 Google 的 DNS 服务器 8.8.8.8

require-mschap-v2
ms-dns 8.8.8.8
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

编辑和检查 /etc/ppp/chap-secrets 这个文件保存的 VPN 的连接账号信息,以下只开通一个账号,并且指定这个账号的 IP 地址

l2tpd bruce mypassword 192.168.2.233

编辑和检查 /etc/ipsec.secrets 注意 TestSecret 这个值是机器鉴定的共享秘钥的值,可以修改成其他值

192.168.2.22   %any:  PSK "TestSecret"

修改内核参数

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
  echo 0 > $each/accept_redirects
  echo 0 > $each/send_redirects
done
/etc/init.d/ipsec restart

这些参数修改需要每次重启服务器的时候执行,最好加入到 /etc/rc.local 文件中自动随系统启动执行。

重启相关服务

sudo /etc/init.d/pppd-dns restart
sudo /etc/init.d/xl2tpd restart
sudo /etc/init.d/ipsec restart

验证操作过程是否成功

sudo ipsec verify

如果都显示 OK 则成功了,否则需要检查哪里有问题。

至此你可以从 Mac、iPhone、iPad、Android 的 VPN 处连接这台 VPN 服务器,正常访问所有合法网站了。

2016 最新的 DigitalOcean VPN 安装和搭建方式

Docker 最近几年很火,也可以通过 Docker 容器技术快速完成 VPN 服务的快速安装。
原理是 Docker 已经完成了所有需要的软件和设置,然后运行于你的 DigitalOcean VPS 虚拟机中。前提是你的虚拟机是比较新版本的 Ubuntu 或者 CentOS。
这是其他人已经配置完成的个人 VPN Docker 镜像:

https://hub.docker.com/r/siomiz/softethervpn/

安装和启动非常简单,只需要一行命令:

docker run -d -p 500:500/udp -p 4500:4500/udp -p 1701:1701/tcp -p 1194:1194/udp -e PSK=共享密码 -e USERNAME=用户名 -e PASSWORD=密码 siomiz/softethervpn

这个 Docker 镜像支持 IPSec/L2TP 两种模式。

注册 DigitalOcean 256MB 内存, 20GB 硬盘 VPS

推荐这些相关文章

订阅这个博客:

关注我的微博:

关注我的推特: