Mein Server ist Ubuntu 12.04:-> IP 192.168.56.100
Ich habe einen Client Ubuntu 13.04:->IP 192.168.56.101
Ich muss den Ping vom Client zum Server blockieren. Deshalb habe ich die IPTABLE-Regel geschrieben.
iptables -A INPUT -i eth0 -p ICMP -s 192.168.56.101 -j DROP
Jetzt kann der Client keinen Ping zum Server senden, dieser Teil ist in Ordnung, aber der Server kann keinen Ping zum Client senden, was nicht passieren sollte. Vor dem Hinzufügen dieser Regel konnten sich Server und Client gegenseitig anpingen.
Bitte sagen Sie mir, was ich hier übersehe …
Die gegebenen Antworten sind richtig, aber wie funktioniert es …??? Das Hinzufügen --icmp-type
einer Echo-Anforderung löst das Problem zwar, aber diese Regel wird den Regeln der Eingabekette hinzugefügt. Wie kann diese Regel also die Ausgabekette durcheinanderbringen, wenn sie den Ping an den Client blockiert?
Antwort1
So wie ich es verstehe, ping
sendet der Befehl eine ICMP-Echoanforderung an den Host, woraufhin der Host mit einer ICMP-Echoantwort antwortet. Wenn Sie also alle ICMP blockieren, funktioniert Ping überhaupt nicht.
Sie sollten Folgendes hinzufügen:
iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -s 192.168.56.101 -j DROP
Dadurch wird nur die Anfrage blockiert, nicht aber die Antwort
Beantwortung Ihrer Frage in Kommentaren
Ausgehende Ping-Anfragen werden nicht blockiert. Alle eingehenden ICMP-Pakete werden blockiert.
Wenn Sie ausführen ping
:
ping
ICMP-Anforderungspaket senden an192.168.56.101
(es ist ausgehendes ICMP)192.168.56.101
Empfangen Sie dieses Paket und senden SieAntwort ICMP-Paketzurück zu Ihrem ServerJetzt blockiert Ihr Server iptables dieses eingehende Antwortpaket. Das ist, was passiert.
sudo tcpdump ip proto \\icmp
Sie können dies mit diesem Befehl überprüfen 192.168.56.101
. Es werden Ihnen alle ICMP-Anfragen/Antworten online angezeigt.
Mach das:
Entfernen Sie diese Regel vom Server:
iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -s 192.168.56.101 -j DROP
Fügen Sie Ihrem Server diese Regel hinzu:
iptables -A INPUT -i eth0 -p ICMP -s 192.168.56.101 -j DROP
Führen Sie nun diesen Befehl aus auf
192.168.56.101
:sudo tcpdump ip proto \\icmp
Auf dem Server ausführen
ping 192.168.56.101
.
Jetzt sollten Sie sehen, 192.168.56.101
dass eine Ping-Anfrage eingeht und eine Antwort sendet. Aber die iptables auf dem Server blockieren diese Antwort.
Antwort2
Offensichtlich erhalten Sie keine Antwort. Eine Ping-Anfrage besteht aus zwei Teilen:
- Client -> Server: ICMP-Echo-Anfrage (auch „Ping“ genannt)
- Server -> Client: ICMP-Echo-Antwort (auch „Pong“ genannt)
Das Blockieren aller ICMP-Typen wirdÄrger bringenWenn Sie verhindern möchten, dass der Client "pingt" (eine PING-Anforderung sendet), verwenden Sie die folgende Regel für denServer:
-A INPUT -i eth0 -s 192.168.56.101/32 -p ICMP --icmp-type echo-request -j DROP
Um zu verhindern, dass der Client überhaupt eine ICMP-Ping-Anforderung sendet, können Sie diese Regel auf denKlient:
-A OUTPUT -o eth0 -d 192.168.56.100/32 -p ICMP --icmp-type echo-request -j DROP
Es ist jedoch höchst ungewöhnlich, einen Client daran zu hindern, eine einzelne IP-Adresse zu pingen, und zwar von der Clientseite aus. Der einzige Grund, warum Sie dies tun würden, ist, dass Ihre Zuweisung dies erfordert.NEINICMP-Ping-Pakete fließen vom Client durch das Netzwerk zum Server.
Ich frage mich allerdings, warum Sie Ping-Anfragen in einem LAN blockieren möchten. Mit ARP kann der Client immer noch wissen, dass dieser Server mit dem Netzwerk verbunden ist.