我需要理解和解决我的问题。 我知道openswan的作品,因为当我从家庭networking与内部IP地址10.0.0.97连接到工作的VPN,我可以ping,但是当我使用公共xFinity WiFi它表明隧道已经到了,但我不能ping我的VPN的内部主机。
当我成功连接到公共Xfinity WiFi时,我的IP是:
inet addr:10.232.204.146 Bcast:10.255.255.255 Mask:255.224.0.0
这里是路线-n
root@ubuntu:/etc# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.224.0.1 0.0.0.0 UG 0 0 0 wlan0 0.0.0.0 10.224.0.1 0.0.0.0 UG 0 0 0 wlan0 10.224.0.0 0.0.0.0 255.224.0.0 U 9 0 0 wlan0
当我在这个时候,我可以ping通和浏览互联网。
当我启动ipsec / openswan。 我明白了
root@ubuntu:/etc# /etc/init.d/ipsec status IPsec running - pluto pid: 4483 pluto pid 4483 1 tunnels up
但是我不能ping我有192.168.1.xxx IP的内部服务器。
这是我的ipsec.conf
config setup dumpdir=/var/run/pluto/ # # NAT-TRAVERSAL support, see README.NAT-Traversal # nat_traversal=yes # exclude networks used on server side by adding %v4:!abc0/24 # It seems that T-Mobile in the US and Rogers/Fido in Canada are # using 25/8 as "private" address space on their 3G network. # This range has not been announced via BGP (at least upto 2010-12-21) virtual_private=%v4:10.0.0.0/8,%v4:192.168.1.0/24,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10 # OE is now off by default. Uncomment and change to on, to enable. oe=off # which IPsec stack to use. auto will try netkey, then klips then mast #protostack=netkey # Use this to log to a file, or disable logging on embedded systems (like openwrt) plutostderrlog=/var/log/pluto plutodebug="all" protostack=netkey conn work authby=secret auto=start type=tunnel left=10.232.204.146 leftsubnet=10.0.0.0/8 right=99.xx.xx.xx rightsubnet=192.168.1.0/24 ike=aes256-sha1,aes128-sha1,3des-sha1 leftxauthusername=xxxxx
这是我的ipsec.secrets
@massivedude : XAUTH "password" 10.232.204.146 vpnserver-01 : PSK "YouWillNeverKnow"
顺便说一句,即使隧道已经启动,我不能ping内部主机,我仍然可以ping yahoo.com和google.com
任何帮助将不胜感激。
由于Comcast在整个networking中使用NAT(您的10.0.0.0/8地址),因此在使用Comcast时,您需要为此连接启用nat_traversal 。
其原因是因为IPSEC数据包包括包含源地址的整个数据包的散列。 但是,NAT将源地址从10.232.204.146更改为一些您不知道的公有IP,因此现在哈希不再匹配该数据包,而另一端将丢弃数据包,因为它已被篡改(同样来自其他数据包结束将目标地址从任何公共IP更改为10.232.204.146,并被丢弃)。
NAT穿越改变了数据包的发送方式。 encryption数据包不是直接发送数据包,而是封装在一个没有被散列的常规UDP数据包内。 然后,NAT可以更改UDP数据包上的IP地址,以确保它到达需要的地方,而原始的encryption数据包不变,仍然可以validation。
我相信这样封装数据包会有额外的开销,所以最好只在必要时才开启。