第2层隧道协议 (L2TP),是 VPN 隧道协议的一种,是 PPTP 的后续版本。L2TP 支持两端点间多隧道,但通常要由 IPSec 来提供加密和验证功能,可建立变动的客户端到固定服务器的连接。
一、安装 IPSec
IPSec 用于对 IP 数据包进行加密和验证,通常使用 Openswan 来实现 IPSec。
1.1、安装编译工具
|
|
apt-get -y install build-essential |
|
1.2、安装 OpenSwan 依赖包
|
|
apt-get -y install libgmp3-dev flex bison |
|
1.3、编译安装 OpenSwan
|
|
wget -c http://www.openswan.org/download/openswan-2.6.33.tar.gz tar -zxf openswan-2.6.33.tar.gz cd openswan-2.6.33 make programs install |
|
1.4、编辑 IPSec 配置文件
注意将”192.168.1.102″换成服务器公网IP。
|
|
cp /etc/ipsec.conf /etc/ipsec.conf.old |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
cat >/etc/ipsec.conf<<EOF version 2.0 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 L2TP-PSK-NAT rightsubnet=vhost:%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=192.168.1.102 leftprotoport=17/1701 right=%any rightprotoport=17/%any EOF |
|
1.5、设置 PSK 预共享密钥
注意将”192.168.1.102″换成服务器公网IP。将”123456″换成你自己的PSK。
|
|
cat >/etc/ipsec.secrets<<EOF 192.168.1.102 %any: PSK "123456" EOF |
|
1.6、调整网络策略
for 循环语句,请一行一行地输入,输完后按回车。
|
|
for each in /proc/sys/net/ipv4/conf/* do echo 0 > $each/accept_redirects echo 0 > $each/send_redirects done |
|
1.7、重启IPSec 服务
|
|
/etc/init.d/ipsec restart /usr/local/sbin/ipsec verify |
|
可尝试使用 L2TP/IPSec 客户端连接一次,以测试 IPSec 部分配置是否成功。
|
|
cat /var/log/auth.log | grep pluto |
|
如出现”IPsec SA established transport mode”则成功了。
二、安装 L2TP
使用 xl2tpd 来实现 L2TP,另外要注意的是 xl2tpd 需要从 rp-l2tp 中提取 l2tp-control。
2.1、提取 l2tp-control
|
|
wget http://nchc.dl.sourceforge.net/project/rp-l2tp/rp-l2tp/0.4/rp-l2tp-0.4.tar.gz tar zxvf rp-l2tp-0.4.tar.gz cd rp-l2tp-0.4 ./configure make cp handlers/l2tp-control /usr/local/sbin/ mkdir /var/run/xl2tpd/ ln -s /usr/local/sbin/l2tp-control /var/run/xl2tpd/l2tp-control |
|
2.2、编译安装 xl2tpd
|
|
apt-get -y install libpcap-dev #安装依赖包 |
|
|
|
wget -c http://www.xelerance.com/wp-content/uploads/software/xl2tpd/xl2tpd-1.2.8.tar.gz tar -zxf xl2tpd-1.2.8.tar.gz cd xl2tpd-1.2.8 make install mkdir /etc/xl2tpd |
|
2.3、编辑 xl2tpd 配置文件
ip range 是连接上来的客户端所获得的服务器端内网的 IPv4 地址段。
local ip 是 pppX 所占用的那个 IP 地址。
|
|
cat >/etc/xl2tpd/xl2tpd.conf<<EOF [global] ipsec saref = yes [lns default] local ip = 10.10.11.1 ip range = 10.10.11.2-10.10.11.245 refuse chap = yes refuse pap = yes require authentication = yes ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd length bit = yes EOF |
|
三、PPP 的安装配置
3.1、安装 ppp 包
3.2、配置 options.xl2tpd
主要是改MS-DNS,其他默认。
|
|
cat >/etc/ppp/options.xl2tpd<<EOF require-mschap-v2 ms-dns 8.8.8.8 ms-dns 8.8.4.4 asyncmap 0 auth crtscts lock hide-password modem debug name l2tpd proxyarp lcp-echo-interval 30 lcp-echo-failure 4 EOF |
|
四、添加 VPN 用户
chap-secrets 文件为4段,分别是:用户名、服务器名称、密码、分配给客户端的IP。
服务器名可以是l2tpd 或 pptpd,*号代表全部。
密码以明文填写,不需进行加密。
最后的*号代表从remoteip指定的IP段随机分配
|
|
cat >>/etc/ppp/chap-secrets<<EOF user * 123456 * EOF |
|
五、配置数据包转发
否则连接VPN后,只能访问服务器资源,而不能访问这台服务器以外的资源。
|
|
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf sysctl -p |
|
开启iptables转发
|
|
iptables -t nat -A POSTROUTING -j MASQUERADE |
|
设置MTU
|
|
iptables -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356 |
|
六、启动 xl2tpd 服务
|
|
/usr/local/sbin/xl2tpd /usr/local/sbin/xl2tpd -D #以调式模式启动 |
|
声明: 本文由( liva )原创编译,转载请保留链接: Ubuntu L2TP/IPSec 安装