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

Мне нужно понять мою проблему и решить ее. Я знаю, что 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

Любая помощь будет принята с благодарностью.

2
задан 28 December 2016 в 21:05
1 ответ

Так как Comcast использует NAT для всей своей сети (ваш 10.0.0.0/8 адрес здесь), вам нужно включить nat_traversal для этого соединения при использовании Comcast.

Причина в том, что IPSEC пакеты включают хэш всего пакета , включая адрес источника. Но NAT изменяет адрес источника с 10.232.204.146 на некоторый неизвестный вам публичный IP, так что теперь хэш больше не соответствует пакету, а другой конец отбрасывает пакет, потому что он был подделан (также пакеты с другого конца будут иметь измененный адрес назначения с любого публичного IP на 10.232.204.146 и будут отбрасываться).

NAT-обход изменяет способ отправки пакетов. Вместо того, чтобы отправлять пакет напрямую, зашифрованный пакет обертывается внутри обычного UDP пакета, который не хэшируется. Затем NAT может изменить IP адреса в UDP пакете, чтобы убедиться, что он попал туда, куда нужно, в то время как оригинальный зашифрованный пакет не изменился и все еще может быть проверен.

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

.
2
ответ дан 3 December 2019 в 11:30

Теги

Похожие вопросы