Правила брандмауэра для использования mtr/traceroute из локальной сети

У меня есть локальная сеть компьютеров Linux, которые получают доступ к Интернету через NAT. Шлюз запускает ограничительный межсетевой экран. У меня есть эхо-запросы ICMP и ответы, разрешенные для прохождения через межсетевой экран на шлюзе, поэтому я могу пропинговать любой внешний хост с компьютера локальной сети, но mtr и traceroute к внешнему хосту зависают на переходе шлюза.

Какие дополнительные правила брандмауэра я должен иметь, чтобы эти инструменты работали правильно?

1 ответ

Решение

Трассировка Linux по умолчанию использует UDP на случайном высоком порту, тогда как трассировка Windows использует ICMP. Для ваших машин Linux вам нужно будет либо настроить брандмауэр для разрешения UDP на высоких портах, либо использовать ключ командной строки -I, чтобы указать использование ICMP ECHO вместо UDP-дейтаграмм.

Отредактировано, чтобы добавить: по умолчанию, это выбирает случайный порт в диапазоне неназначенных портов, обычно называемых "старшими портами". Обычно это означает порт в диапазоне 49152–65535 (см. Этот список портов). Страница man называет это "маловероятным значением" для непреднамеренного запуска службы, поскольку мы не хотим, чтобы хост обрабатывал дейтаграммы UDP в качестве информации. Если вы хотите, вы можете указать порт с помощью -p, но имейте в виду, что он будет увеличивать порт назначения на 1 для каждого зонда при использовании UDP. Если вы хотите использовать постоянный порт, укажите ключ -U (для этого используется порт по умолчанию 53). В качестве альтернативы, если вы не хотите использовать UDP или ICMP, вы можете использовать ключ -T, чтобы указать режим TCP SYN, который будет использовать постоянный порт, который вы можете установить с помощью -p. Тогда вы бы открыли этот порт на вашем брандмауэре.

Только UDP разрешен для непривилегированных пользователей.

Другие вопросы по тегам