I'm 赵一开, a developer.

Get in touch:

LicenseCC-BY 京ICP备17068969号

外网IP无法连接L2TP/IPsec的神奇解决方法

 本文已被标记为过时

文中提到的相关信息可能已经发生了很大的变化,请谨慎以本篇文章的内容作为参考做任何事情。

用OpenSwan(2.6.32-3.el5)+xl2tpd搭建起VPN后,在NAT内的设备能成功连接,但外网设备反而无法连接,google了很久终于发现了这篇文章,相关内容总结如下:

因为OpenSwan的一个BUG,当在配置中填写

right=%any
rightprotoport=17/%any

时会导致非NAT设备无法连接的问题。

解决方法有以下几种:

  1. 指定right的IP地址。这明显不科学。
  2. 指定right的端口。这样NAT后的设备就挂了。
  3. 删掉rightsubnet=vhost:%priv。同上。
  4. 加一句forceencaps=yes使得强制使用NAT-T。这样会加上不必要的包头但是相对来说是个最科学的办法。

另外,由于iOS似乎在断开连接时行为比较奇特,如果不打开dead peer detection会导致无法重新连接。

所以,OpenSwan的配置文件的最后大概应该是这样的:

right=%any
rightprotoport=17/%any
rightsubnet=vhost:%priv

forceencaps=yes

dpddelay=40
dpdtimeout=130
dpdaction=clear

尼玛太不科学了...