1.L2TP第二层隧道协议 是需要证书的一种访问方式。需要在VPN服务器内网安装一证书服务器,然后让VPN服务器信任该证书颁布机构,然后发布证书服务器,下载证书。VPN客户端需要访问需要先下载安装证书才可进行连接
2.IPSEC网际安全协议 是智能卡访问模式。
Linode使用有一段时间了,上面一直都搭着PPTP作为翻墙VPN,实际上使用蛮少的。最近想躺在床上就可以通过ipad翻墙看看新闻,但是查了下方法,大家都一直建议使用L2TP/IPSec VPN。
翻阅了不少人博客上的搭建方法,本来以为蛮简单的一个事情,还是折腾了2个晚上才搞定。我试着记录下这次折腾的步骤,或许可以减少大家的误操作。
我搭建的基础环境如下:
Linode VPS
Ubuntu Server 12.04
以 root 用户登录
1. L2TP/IPSec扫盲
L2TP/IPSec 就是 L2TP over IPSec:L2TP Over IPSec VPN是将L2TP 协议和IPSec 协议结合使用,利用L2TP协议对用户进行认证并分配内网IP地
址,利用IPSec协议对通信进行加密,提供整体的point-to-site VPN解决方案。
有兴趣可以去看看Hillstone L2TP Over IPSec VPN技术解决方案白皮书, 不清楚也不影响后面的搭建。
2. IPSec的部署
2.1 安装IPSec
一般都是通过使用openswan来实现IPSec,网上流传了很多自己编译源码的步骤,但是我试了下,貌似还是有问题,所以还是简单点,直接使用最新的发行包安装就行。
apt-get install openswan
2.2 修改IPSec配置文件/etc/ipsec.conf
config setup
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=off
protostack=netkey
conn %default
forceencaps=yes
conn L2TP-PSK-NAT
rightsubnet=vhost:%no,%priv
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left= 填入自己linode的IP
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
2.3 设置 PSK 预共享密钥
编辑/etc/ipsec.secrets,插入下面一行内容:
服务器的公网IPv4地址 %any: PSK “wangyuxiong.com”
2.4 对系统的网络策略进行一些调整
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
将上面这段代码完整地复制一次,加入到 /etc/rc.local 中,使其在每次系统启动时都生效。
2.5 重启一次 IPSec 服务
service ipsec restart
2.6 运行ipsec verify,结果如下:
root@metaboy:~# ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path [OK]
Linux Openswan U2.6.37/K3.13.7-x86_64-linode38 (netkey)
Checking for IPsec support in kernel [OK]
SAref kernel support [N/A]
NETKEY: Testing XFRM related proc values [OK]
[OK]
[OK]
Checking that pluto is running [OK]
Pluto listening for IKE on udp 500 [OK]
Pluto listening for NAT-T on udp 4500 [OK]
Two or more interfaces found, checking IP forwarding [OK]
Checking NAT and MASQUERADEing [OK]
Checking for ‘ip’ command [OK]
Checking /bin/sh is not /bin/dash [OK]
Checking for ‘iptables’ command [OK]
Opportunistic Encryption Support [DISABLED]
3. L2TP的部署
3.1. 安装L2TP
apt-get install xl2tpd
3.2 编辑 L2TP 配置文件 /etc/xl2tpd/xl2tpd.conf
文件内容替换为下面的内容:
[global]
; listen-addr = 192.168.1.98
[lns default]
ip range = 10.1.1.2-10.1.1.255
local ip = 10.1.1.1
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
4. 配置PPP
4.1 安装PPP
apt-get install pop
4.2 配置/etc/ppp/options.xl2tpd
先从 xl2tpd 文档中复制一个配置文件样例到我们的配置文件目录:
cp /usr/share/doc/xl2tpd/examples/ppp-options.xl2tpd /etc/ppp/options.xl2tpd
编辑/etc/ppp/options.xl2tpd,内容如下:
ipcp-accept-local
ipcp-accept-remote
ms-dns 8.8.8.8
ms-dns 8.8.4.4
noccp
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
name l2tpd
lock
proxyarp
connect-delay 5000
注意下这个name很重要,需要记住,后面需要用到。
4.3. 添加用户账户,“账户”都在 /etc/ppp/chap-secrets 中
# Secrets for authentication using CHAP
# client server secret IP addresses
user l2tpd wangyuxiong.com *
这里的server与步骤4.2配置中的name必须保持一致。
4.4 重启xl2tpd
service xl2tpd restart
5. 转发设置
5.1 启用转发设置:
编辑/etc/sysctl.conf,找到net.ipv4.ip_forward=1这一行,将前面的#去掉,然后运行sysctl -p令其生效。
5.2 永久生效
编辑/etc/rc.local,添加下面一行:
iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE
在终端运行一次上述 iptables 命令,即可令转发立即生效。
搞完这几个步骤,就可以体验下墙外的生活了。