Мой сервер - Ubuntu 12.04: -> IP 192.168.56.100
У меня есть клиент Ubuntu 13.04: -> IP 192.168.56.101
Мне нужно заблокировать пинг от клиента к серверу, поэтому я написал правило IPTABLE.
iptables -A INPUT -i eth0 -p ICMP -s 192.168.56.101 -j DROP
Теперь клиент не может пропинговать сервер, с этой частью все в порядке, но сервер не может пинговать с клиентом, что не должно происходить. Перед добавлением этого правила и сервер, и клиент могут пропинговать друг друга.
Пожалуйста, скажите мне, что мне здесь не хватает ...
Даны правильные ответы, но как это работает .... ??? Добавление --icmp-type
echo-запроса решает проблему, но это правило добавляется в правила цепочки INPUT, так как же это правило в любом случае может связываться с цепочкой OUTPUT, поскольку оно блокирует пинг для клиента.
Как я понимаю, команда ping
отправляет эхо-запрос ICMP хосту, а затем отвечает хосту эхо-ответ ICMP. Поэтому, если вы заблокируете все ICMP, ping вообще не будет работать.
Вы должны добавить это:
iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -s 192.168.56.101 -j DROP
Это заблокирует только запрос, но не ответ
Ответ на ваш вопрос в комментариях
Это не блокирует исходящий запрос пинга. Он блокирует все входящие ICMP-пакеты.
Когда вы выполняете ping
:
ping
отправляют пакет запроса ICMP на 192.168.56.101
(это исходящий ICMP)
192.168.56.101
принять этот пакет и отправить ответный ICMP-пакет обратно на ваш сервер
Теперь ваш сервер iptables блокирует этот входящий ответный пакет. Вот что происходит.
Вы можете проверить это с помощью этой команды sudo tcpdump ip proto \\icmp
на 192.168.56.101
. Он покажет вам все ICMP запросы / ответы онлайн.
Сделайте это:
Удалите это правило с сервера:
iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -s 192.168.56.101 -j DROP
Добавьте это правило в свой сервер:
iptables -A INPUT -i eth0 -p ICMP -s 192.168.56.101 -j DROP
Теперь выполните эту команду для 192.168.56.101
:
sudo tcpdump ip proto \\icmp
Выполнить ping 192.168.56.101
на сервере.
Теперь вы должны увидеть на 192.168.56.101
, что он получает запрос проверки связи и отправляет ответ. Но iptables на сервере блокирует этот ответ.
Очевидно, вы не получите ответ. Ping-запрос состоит из двух частей:
Блокировка всех типов ICMP принесет неприятности . Если вы хотите запретить клиенту "пинговать" (отправляя запрос PING), используйте на сервере следующее правило:
-A INPUT -i eth0 -s 192.168.56.101/32 -p ICMP --icmp-type echo-request -j DROP
Чтобы клиент не отправлял Во-первых, для запроса проверки связи ICMP вы можете применить это правило к клиенту :
-A OUTPUT -o eth0 -d 192.168.56.100/32 -p ICMP --icmp-type echo-request -j DROP
Весьма необычно избегать блокирования клиентом проверки связи с одним IP-адресом с хотя на стороне клиента. Единственная причина, по которой вы это сделаете, заключается в том, что ваше назначение требует, чтобы нет пинг-пакетов ICMP не проходил через сеть от клиента, направленного на сервер.
Интересно, почему вы хотите заблокировать запросы ping в локальной сети? С ARP клиент все еще может знать, что этот сервер подключен к сети.