Мой сервер — 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
эхо-запроса решает проблему, но это правило добавляется к правилам цепочки ВХОДА, так как же это правило может вмешиваться в цепочку ВЫХОДА, если оно блокирует пинг для клиента.
решение1
Насколько я понимаю, ping
команда отправляет ICMP echo request хосту, затем хост отвечает ICMP echo reply. Так что если вы заблокируете все ICMP, ping вообще не будет работать.
Вам следует добавить следующее:
iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -s 192.168.56.101 -j DROP
Это заблокирует только запрос, но не ответ.
Отвечаю на ваш вопрос в комментариях
Он не блокирует исходящий ping-запрос. Он блокирует все входящие ICMP-пакеты.
При выполнении ping
:
ping
отправить пакет запроса ICMP192.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
что он получает ping-запрос и отправляет ответ. Но iptables на сервере блокирует этот ответ.
решение2
Очевидно, вы не получите никакого ответа. Запрос ping состоит из двух частей:
- Клиент -> Сервер: ICMP-эхо-запрос (он же «ping»)
- Сервер -> Клиент: ICMP-эхо-ответ (он же «pong»)
Блокировка всех типов ICMP будетпринести неприятности. Если вы хотите запретить клиенту «пинговать» (отправлять PING-запрос), то используйте следующее правило насервер:
-A INPUT -i eth0 -s 192.168.56.101/32 -p ICMP --icmp-type echo-request -j DROP
Чтобы запретить клиенту отправлять запросы ICMP ping в первую очередь, вы можете применить это правило кклиент:
-A OUTPUT -o eth0 -d 192.168.56.100/32 -p ICMP --icmp-type echo-request -j DROP
Крайне необычно избегать блокировки клиента от пингования одного IP-адреса, хотя со стороны клиента. Единственная причина, по которой вы это сделаете, заключается в том, что ваше задание требует этогонетПакет ICMP ping проходит по сети от клиента к серверу.
Интересно, почему вы хотите блокировать запросы ping в локальной сети. С ARP клиент все равно может знать, что этот сервер подключен к сети.