Резюме:
Я могу пропинговать шлюз, но traceroute через этот шлюз не показывает его как первый переход, почему?
root@tor ~# traceroute 1.1.1.1 -nn
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
1 * * *
2 * * *
Подробности:
Я отлаживаю соединение в контейнере, который защищен брандмауэром, чтобы разрешить трафик только через VPN. Это не видно с точки зрения контейнера (брандмауэр находится на хосте контейнера).
Моя проблема в том, что иногда не удается установить соединение, и я подозреваю, что провайдер VPN виноват. Типичным симптомом является зависание
root@tor ~# ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
Чтобы исследовать, я проверил маршрут пакета к 1.1.1.1
взял бы
root@tor ~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: host0@if59: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether d6:fa:2e:69:dd:30 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.200.0.3/24 brd 10.200.0.255 scope global host0
valid_lft forever preferred_lft forever
inet6 fe80::d4fa:2eff:fe69:dd30/64 scope link
valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
link/none
inet 10.29.10.6 peer 10.29.10.5/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::8d09:3f0d:9e5f:8298/64 scope link stable-privacy
valid_lft forever preferred_lft forever
root@tor ~# ip route get 1.1.1.1
1.1.1.1 via 10.29.10.5 dev tun0 src 10.29.10.6 uid 0
cache
root@tor ~# ip route
0.0.0.0/1 via 10.29.10.5 dev tun0
default via 10.200.0.254 dev host0 proto dhcp src 10.200.0.3 metric 1024
10.1.1.0/24 via 10.200.0.254 dev host0 proto static onlink
10.29.10.1 via 10.29.10.5 dev tun0
10.29.10.5 dev tun0 proto kernel scope link src 10.29.10.6
10.30.1.0/24 via 10.200.0.254 dev host0 proto static onlink
10.100.10.0/24 via 10.200.0.254 dev host0 proto static onlink
10.100.20.0/24 via 10.200.0.254 dev host0 proto static onlink
10.200.0.0/24 dev host0 proto kernel scope link src 10.200.0.3
10.200.0.254 dev host0 proto dhcp scope link src 10.200.0.3 metric 1024
46.166.138.140 via 10.200.0.254 dev host0
128.0.0.0/1 via 10.29.10.5 dev tun0
В то же время traceroute не распознает первый переход:
root@tor ~# traceroute 1.1.1.1 -nn
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
1 * * *
2 * * *
Почему это так? Я ожидал, что след остановится за воротами.
Примечание: перезапуск VPN решает проблему, поэтому я уверен, что это виновник.
РЕДАКТИРОВАТЬ: при перезапуске (или работает правильно) маршрут прослеживается:
root@tor /e/s/system# traceroute 1.1.1.1 -nn
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
1 10.38.10.1 17.959 ms 18.217 ms 18.230 ms
2 46.166.138.190 18.393 ms * *
(...)
wireshark
/tcpdump
на интерфейсе VPN для отладки. Если единственное различие между рабочим / неработающим состоит в том, что вы не получаете ответы «TTL expired», тогда да, тогда провайдер VPN виноват, и вы ничего не можете с этим поделать.traceroute -I 1.1.1.1
и посмотреть, если это работает.