PSK=windows中说的预共享密钥
折腾了一天多,总结一下。一个字:日!
pptp的配置比较简单,三两个就折腾出来了。l2tp配置文章较少,大都说得很轻松的样子。实际上如果环境顺利,也不需要折腾这么久,只是。。。。。
先说下总结出来的步骤:(实验环境debian 192.168.163.133 xp 192.168.1.200 都在vm里)
编辑 /etc/sysctl.conf 启用 ipv4 forward.
sysctl –p 应用
安装组件
apt-get install pptpd l2tpd openswan ipsec-tools
修改 /etc/ipsec.secrets,设置PSK。
192.168.163.133 %any: PSK “12345678”
修改 ipsec.conf
Copy /etc/ipsec.d/examples/l2tp-psk.conf 的两个conn段配置
修改:
gateway
….
rightprotoport=17/%any
修改/etc/xl2tp/xl2tp.conf
[global]
port = 1701
[lns default]
ip range = 192.168.254.20-192.168.254.255
local ip = 192.168.254.2
require chap = yes
refuse pap = yes
require authentication = yes
name = pandora
pppoptfile = /etc/ppp/options.l2tpd.lns
flow bit = yes
创建 /etc/ppp/options.l2tpd.lns
ms-dns 8.8.8.8
ms-dns 208.67.222.222
重启服务。以上实际上就是顺利情况下要做的事情了。
但我折腾了一天多!因为….
rightprotoport=17/%any这一句,默认是rightprotoport=17/0
此时会出错,啥也连不上,改成%any,折腾了好久想到要改这里,改成%any,还是不行,改成17/1701,好,终于行了。
换到正式环境,还是不行。最终tcpdump发现,写成17/1701,则只有公网IP才能连上服务器!
准确的说,也不是公网IP,而是服务器的包要发回到源IP的1701端口,发得通才能连上。所以实验环境的两相同子网虚拟机可连。
正式环境里用公网IP不用家里路由器拨号可连。但在内网就不可连。所以写成17/1701是太不好用了。但写成%any或0都不可以。
实验环境的debian和正式环境的ubuntu都验证了这一现象。
改了配置查了错误数据,是这样的提示:
control_finish: Peer requested tunnel 56 twice, ignoring second one.
搜一下这个错误,网上有很多难兄难弟,但基本都没个结论。比如这位仁兄:http://bbs.chinaunix.net/viewthread.php?action=printable&tid=1422551
为什么?不得不怀疑是BUG!apt-get remove openswan。下载最终版编译安装。17/%any好了。也就是说:
debian和unbuntu的openswan 2.6.23+dfsg-1 有严重bug, rightprotoport=17/0和rightprotoport=17/%any不能用!
绝大多数时间就耗在斗争这个问题了。而且换成最新版的openswan 2.6.25之后,rightprotoport=17/0还是不能工作!只是17/%any可以了。
中间还出现过别的问题 ,在配置 /etc/ppp/options.l2tpd.lns 时,win7突然连不上服务器了,XP可以。怎么配来配去甚至配回去都不行。无耐重启WIN7,还是不行。再重启了服务,终于行了。看来这个鬼服务一点鲁棒性也没有。
不过,即使是最终配到现在,也还是有一个问题没有解决。那就是,同一个内网里,只有一个设备可以连接。WIN7上去了,XP就上不去了,反之同样。还好我的目的是给手机用,此问题暂时忽略。不过还是很不爽,这意味着在公司,我不能把这个设置告诉别人了,因为大家在同一内网,别人一连L2tp,我就连不了了。只能让别人连pptp。如果有哪位知晓,请回复告之。