Как включить брандмауэр ufw, чтобы разрешить icmp-ответ?

У меня есть серия серверов Ubuntu 10.04, и на каждом из них включен брандмауэр ufw. Я разрешил порт 22 (для SSH) и 80 (если это веб-сервер). Мой вопрос заключается в том, что я пытаюсь включить icmp echo response (ping reply).

ICMP функционирует иначе, чем другие протоколы - я знаю, что в техническом смысле он ниже уровня IP. Вы можете просто ввести sudo ufw allow 22, но вы не можете ввести sudo ufw allow icmp

ufw не позволяет задавать правила icmp с помощью команды интерфейса командной строки. Он позволяет вам настраивать свой набор правил с помощью файлов правил, которые представляют собой файлы стилей iptables-restore.

ufw по умолчанию разрешает определенный icmp-трафик, включая icmp echo reply, и это уже настроено по умолчанию в /etc/ufw/before.rules:

-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

Если ваш хост не отвечает на пинг, загляните в этот файл, чтобы убедиться, что приведенная выше строка присутствует, и если это не сработает, посмотрите на пингующий хост и любые брандмауэры между ними.

Для Ubuntu 18.04 у вас должны быть следующие правила в вашем /etc/ufw/before.правила файл:

# ok icmp codes for INPUT-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT-A ufw-before-input -p icmp --icmp-type source-quench           -j ACCEPT-A ufw-before-input -p icmp --icmp-type time-exceeded           -j ACCEPT-A ufw-before-input -p icmp --icmp-type parameter-problem       -j ACCEPT-A ufw-before-input -p icmp --icmp-type echo-request            -j ACCEPT# ok icmp code for FORWARD-A ufw-before-forward -p icmp --icmp-type destination-unreachable -j ACCEPT-A ufw-before-forward -p icmp --icmp-type source-quench           -j ACCEPT-A ufw-before-forward -p icmp --icmp-type time-exceeded           -j ACCEPT-A ufw-before-forward -p icmp --icmp-type parameter-problem       -j ACCEPT-A ufw-before-forward -p icmp --icmp-type echo-request            -j ACCEPT

Они были в моем файле по умолчанию.

Конечно, будьте уверены, что это действительно проблема. Моя проблема заключалась в том, что мой компьютер блокировал пинг от выхода в сеть, где существовал сервер, который я пытался пинговать. В итоге я использовал веб-сайт, который уже был в Интернете, чтобы выполнить пинг для меня (например https://ping.eu/ping/).

Добавьте следующее в файл /etc/ufw/before.rules:

# allow outbound icmp-A ufw-before-output -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT-A ufw-before-output -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT

После редактирования файла выполните команду:

sudo ufw reload

Вот справочный документ, в котором рассказывается, как включить / отключить ответы ping и др.

Помощь UFW

>>Если у вас все еще возникают проблемы, возможно, это ваши сетевые настройки VirtualBox или VMware. Я часто использую адресацию NAT, и поэтому мне нужно перейти в раздел Устройства / Сеть / Сетевые настройки... - Дополнительно - Переадресация портов и добавление правила для сопоставления хоста с гостевыми портами для порта 22.

Следует отметить, что, по крайней мере, в Windows, ping (по умолчанию) пытается установить связь через IPv6, и этот UFW (по умолчанию) блокирует это.

Чтобы проверить IPv4-адрес, используйте ping -4 <ip.add.re.ss>