隧道已開通,但我無法 ping
我需要了解並解決我的問題。我知道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 地址,以確保它到達它需要去的地方,而原始加密數據包保持不變並且仍然可以驗證。
我相信像這樣包裝數據包會有額外的成本,所以最好只在必要時打開它。