
На моем Linux-боксе traceroute
не работает. Вывод такой:
$ traceroute google.com
traceroute to google.com (209.85.231.104), 30 hops max, 52 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
Может кто-нибудь сказать, почему это не работает? Есть ли какие-то возможные причины?
решение1
По умолчанию,traceroute
использует высокие порты UDP для отслеживания хостов. Однако иногда брандмауэры блокируют эти порты UDP.
Попробуйте добавить -I
параметр (заглавная буква i) в командную строку, например:
traceroute -I www.google.it
При этом для отслеживания хостов будет использоваться ICMP вместо UDP.
решение2
Попробуйте использовать -T (tcp) или -U (udp) для обхода брандмауэра.
Некоторые маршрутизаторы/брандмауэры не пропускают icmp echo, поэтому вы можете использовать эти 2, чтобы обойти их.
В любом случае, вопреки тому, что указано в википедии, на моих Debian-боксах traceroute по-прежнему использует пакеты icmp, а не udp.
РЕДАКТИРОВАТЬ
Я ошибался... он использует UDP... возвращаемые ICMP-пакеты указывают на недоступный порт... извините
решение3
возможно, что ваш брандмауэр блокирует пакеты UDP Трассировка
В современных Unix-подобных операционных системах утилита traceroute по умолчанию использует UDP-дейтаграммы с портами назначения с номерами от 33434 до 33534.
решение4
Вероятно, это происходит из-за того, что ответ icmp TIME_EXCEEDED фильтруется маршрутизатором/брандмауэром, который вы используете в качестве шлюза по умолчанию, или самой вашей системой Linux.