我需要了解并解决我的问题。我知道openswan可以工作,因为当我从内部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 我的内部服务器,这些服务器的 IP 为 192.168.1.xxx。
这是我的 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:!a.b.c.0/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 对其整个网络使用 NAT(此处为您的 10.0.0.0/8 地址),您需要
nat_traversal
在使用 Comcast 时启用此连接。这样做的原因是因为 IPSEC 数据包包括整个数据包的散列,包括源地址。但是 NAT 将源地址从 10.232.204.146 更改为一些你不知道的公共 IP,所以现在哈希不再匹配数据包,并且另一端将丢弃该数据包,因为它已被篡改(同样来自另一端的数据包) end 将目标地址从任何公共 IP 更改为 10.232.204.146 并被丢弃)。
NAT Traversal 改变了数据包的发送方式。加密的数据包不是直接发送数据包,而是包装在一个没有散列的常规 UDP 数据包中。然后 NAT 可以更改 UDP 数据包上的 IP 地址,以确保它到达它需要去的地方,而原始加密数据包保持不变并且仍然可以验证。
我相信像这样包装数据包会有额外的开销,所以最好只在必要时打开它。