У меня есть несколько серверов Ubuntu 10.04, и на каждом из них включен брандмауэр UFW. Я разрешил порт 22 (для SSH) и 80 (если это веб-сервер). Мой вопрос заключается в том, что я пытаюсь включить эхо-ответ icmp (ping reply).
ICMP функционирует не так, как другие протоколы - я знаю, что в техническом смысле он ниже уровня IP. Вы можете просто набрать sudo ufw allow 22
, но вы не можете набрать sudo ufw allow icmp
ufw не позволяет задавать правила icmp через команду интерфейса командной строки. Он позволяет вам настроить ваш набор правил с помощью файлов правил, которые являются файлами стилей iptables-restore.
ufw разрешает определенный трафик icmp по умолчанию, включая эхо-ответ icmp, и это уже настроено по умолчанию в /etc/ufw/before.rules
:
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
. чтобы убедиться, что приведенная выше строка присутствует, и если это не сработает, посмотрите на хост проверки связи и любые межсетевые экраны между ними.
Вот справочный документ, в котором обсуждается, как включить / отключить ответы 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
Для Ubuntu 18.04 в вашем файле /etc/ufw/before.rules должны быть следующие правила:
# 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/ ).
Если у вас все еще есть проблемы, возможно, это ваши сетевые настройки VirtualBox или VMWare. Я часто использую адресацию NAT, поэтому мне нужно перейти в «Устройства/Сеть/Настройки сети...» -> «Дополнительно» -> «Переадресация портов» и добавить правило для сопоставления хоста с гостевыми портами для порта 22.