Назад | Перейти на главную страницу

Туннель открыт, но я не могу пинговать

Мне нужно понять и решить мою проблему. Я знаю, что openswan работает, потому что когда я подключаюсь из домашней сети с внутренним IP-адресом 10.0.0.97 к рабочему VPN, я могу пинговать, но когда я использую общедоступный Wi-Fi xFinity, он указывает, что туннель запущен, но я не могу ping внутренние хосты моего VPN.

Когда я успешно подключаюсь к общедоступному Wi-Fi Xfinity, мой 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

Когда я нахожусь в этом месте, я могу пинговать и просматривать Интернет нормально.

Когда я запускаю ipsec / openswan. Я получил.

root@ubuntu:/etc# /etc/init.d/ipsec status
IPsec running  - pluto pid: 4483
pluto pid 4483
1 tunnels up

Но я не могу пинговать свои внутренние серверы с 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"

Кстати, хотя туннель запущен и я не могу пинговать внутренние хосты, я все равно могу пинговать 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 может изменить IP-адреса в пакете UDP, чтобы убедиться, что он попадает туда, куда ему нужно, в то время как исходный зашифрованный пакет не изменяется и все еще может быть проверен.

Я считаю, что при упаковке таких пакетов есть дополнительные накладные расходы, поэтому лучше всего включать его только при необходимости.