Почему первый прыжок маршрута не указан, несмотря на то, что он доступен?

1

Резюме:

Я могу пропинговать шлюз, но 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 * *
(...)
WoJ
источник
traceroute использует ICMP-сообщения «истек TTL». Некоторые маршрутизаторы не отправляют их, иногда из-за неправильной конфигурации.
Daniel B
@DanielB: это правильно - но маршрут прослеживается, когда VPN работает (я обновил свой вопрос этим)
WoJ
использование wireshark / tcpdump на интерфейсе VPN для отладки. Если единственное различие между рабочим / неработающим состоит в том, что вы не получаете ответы «TTL expired», тогда да, тогда провайдер VPN виноват, и вы ничего не можете с этим поделать.
dirkt
@WoJ - попробуй traceroute -I 1.1.1.1 и посмотреть, если это работает.
user3788685