Блокировать пинг с определенного IP-адреса

Блокировать пинг с определенного IP-адреса

Мой сервер — 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:

  1. pingотправить пакет запроса ICMP 192.168.56.101(это исходящий ICMP)

  2. 192.168.56.101получить этот пакет и отправитьответный ICMP-пакетвернуться на свой сервер

  3. Теперь ваш сервер iptables блокирует этот входящий ответный пакет. Вот что происходит.

Вы можете проверить это с помощью этой команды sudo tcpdump ip proto \\icmpна 192.168.56.101. Она покажет вам все запросы/ответы ICMP в сети.

Сделай это:

  1. Удалить это правило с сервера:

    iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -s 192.168.56.101 -j DROP

  2. Добавьте это правило на свой сервер:

    iptables -A INPUT -i eth0 -p ICMP -s 192.168.56.101 -j DROP

  3. Теперь выполните эту команду на 192.168.56.101:

    sudo tcpdump ip proto \\icmp

  4. Выполнить 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 клиент все равно может знать, что этот сервер подключен к сети.

Связанный контент