首先安装openswan:
1 | apt-get install openswan |
用文字编辑工具(如vim)打开/etc/ipsec.conf,改成如下样式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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=YOUR.SERVER.IP.ADDRESS leftprotoport=17/1701 right=%any rightprotoport=17/%any |
用文字编辑器打开/etc/ipsec.secrets,改成如下格式
1 | 你的服务器的ip地址 %any: PSK "自定义密钥" |
把上面中文部分的东西替换成你自己的,保存。
然后运行以下命令:
1 2 3 4 5 | for each in /proc/sys/net/ipv4/conf/* do echo 0 > $each/accept_redirects echo 0 > $each/send_redirects done |
检查一下 IPSec 能否正常工作:
1 | ipsec verify |
除了最后一行Opportunistic Encryption Support可能显示为[DISABLED]外,其他全应该是OK,如果有遇到问题的请按照错误提示具体分析。
重启openswan
1 | service ipsec restart |
或者
1 | /etc/init.d/ipsec restart |
安装xl2tpd:
1 | apt-get install xl2tpd |
用文字编辑器打开/etc/xl2tpd/xl2tpd.conf,改成这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 | [global] ipsec saref = yes [lns default] ip range = 10.0.2.2-10.0.2.255 local ip = 10.0.2.1 ;require chap = yes refuse chap = yes refuse pap = yes require authentication = yes ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd length bit = yes |
注意ip range里面出现的IP避免和已使用的IP重复,如果发现有重复就错开一个段即可。
如果你之前没有在服务器上安装过pptpd,那么下面这一步你要进行安装:
1 | apt-get install pptpd |
然后配置/etc/ppp/options.xl2tpd,如果没有就新建一个,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 mtu 1400 connect-delay 5000 noccp |
其中dns我设置的是google的公共dns服务器,可以自行修改。
使用文字编辑器编辑/etc/ppp/chap-secrets,添加或修改用户
格式是这样:每一行是一个用户的信息,第一部分是用户名,第二部分是所使用的服务,第三部分是密码,第四部分是允许的IP地址,一般来说第二部分可以设置成l2tpd,这样就完全限制这个账号只能使用l2tp登陆,同时因为pptp和l2tp两种登陆方式是可以共存并且同时使用的,第二部分也就可以设置成pptpd,当然,设置成通配符*也是可以的,意思是所有协议都可以使用这个账号登陆,例子如下:
1 2 3 4 5 | yynotespptp pptpd yynotes * yynotesl2tp l2tpd yynotes * yynotes * yynotes * |
下面重启 xl2tpd:
1 | service xl2tpd restart |
设置 iptables 的数据包转发:
1 2 | iptables --table nat --append POSTROUTING --jump MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward |
设置自启动项,编辑/etc/rc.local,加入下面的语句:
1 2 3 4 5 6 7 8 | iptables --table nat --append POSTROUTING --jump 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 |
配置完成。记得连接的时候要选择l2tp over ipsec,并输入之前在/etc/ipsec.secrets里设置的自定义密钥即可。
这篇文章的写作引用了这篇文章的一些配置文档:http://blog.riobard.com/2010/04/30/l2tp-over-ipsec-ubuntu
历史太久远了,不知道现在还能用否?另外用l2tp还必须安装pptp?支持哪些客户端?
pptp好做,l2tp我自己照着做了一下好像有点儿问题,win自带的连接有问题,也可能我哪里做错了。感觉如果只是网页用ss更方便一点儿