Некоторые примеры конфигурации iptables для NAT не дают информации о пересылке ICMP-пакетов, некоторые руководства предлагают

-A FORWARD -i in -o out  -p icmp -m icmp --icmp-type 8  -j ACCEPT 

Конфигурация UFW (даже если он не используется в качестве маршрутизатора) в фильтре.FORWARD субцепь имеет следующие

ACCEPT     icmp --  anywhere             anywhere             icmp destination-unreachable
ACCEPT     icmp --  anywhere             anywhere             icmp source-quench
ACCEPT     icmp --  anywhere             anywhere             icmp time-exceeded
ACCEPT     icmp --  anywhere             anywhere             icmp parameter-problem
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request

Так что же правильно? А как насчет других протоколов, таких как igmp и т.д.?

1 ответ1

0

Не путайте эти вещи: NAT предназначен для трансляции адресов, по умолчанию iptables таблиц filter предназначен для фильтрации пакетов.

Если вопрос: какой фильтр мне нужен, чтобы заставить работать NAT? Ответ: нет. Таких ссылок между таблицами нет. Конечно, вам нужно добавить правила, чтобы пакеты проходили через вашу систему, в противном случае компонент NAT будет готов, но бездействующий (без фильтра = без пакетов).

Таким образом, NAT будет работать, даже если вы запрещаете ICMP и другие протоколы. Конечно, некоторые сообщения ICMP полезны для того, чтобы заставить вещи работать (например, обнаружение MTU пути использует ICMP, и если вы блокируете все сообщения ICMP, соединение очень разорвано). Тем не менее, это не имеет ничего общего с NAT: у вас те же проблемы, даже если вы не используете NAT, и вы возитесь с таблицей filter .

Вы можете найти некоторую информацию о блокировке ICMP здесь: http://shouldiblockicmp.com

Короче говоря, вы можете разрешить:

  • Эхо-запрос / ответ
  • Требуется фрагментация
  • Превышено время

В IPv6 необходимо также разрешить NDP и SLAAC.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .