私のサーバーはUbuntu 12.04です:->IP 192.168.56.100
クライアントはUbuntu 13.04です:->IP 192.168.56.101
クライアントからサーバーへの ping をブロックする必要があるため、IPTABLE ルールを作成しました。
iptables -A INPUT -i eth0 -p ICMP -s 192.168.56.101 -j DROP
現在、クライアントはサーバーに ping できません。この部分は問題ありませんが、サーバーはクライアントに ping できません。これは発生すべきではありません。このルールを追加する前は、サーバーとクライアントの両方が相互に ping できました。
ここで何が欠けているのか教えてください...
与えられた回答は正しいですが、どのように機能するのでしょうか...? --icmp-type
echo-request を追加すると問題は解決しますが、このルールは INPUT チェーン ルールに追加されるため、クライアントへの ping をブロックしているため、このルールが OUTPUT チェーンに影響を及ぼす可能性はありますか。
答え1
私の理解では、ping
コマンドはホストに ICMP エコー要求を送信し、ホストは ICMP エコー応答で応答します。したがって、すべての ICMP をブロックすると、ping はまったく機能しません。
これを追加する必要があります:
iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -s 192.168.56.101 -j DROP
これはリクエストのみをブロックし、応答はブロックしません
コメントで質問に答えます
発信 ping 要求はブロックされません。すべての着信 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
これで、ping 要求を受信し、応答を送信することがわかります。ただし、サーバー上の iptables はこの応答をブロックします。
答え2
当然、応答は返ってきません。ping 要求には 2 つの部分があります。
- クライアント -> サーバー: ICMP エコー要求 (別名「ping」)
- サーバー -> クライアント: ICMP エコー応答 (別名「pong」)
すべての種類のICMPをブロックすると、問題を起こすクライアントが「ping」(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アドレスへのpingをブロックしないようにすることは、非常にまれです。これを行う唯一の理由は、割り当てで次のことが要求されるためです。いいえICMP ping パケットはクライアントからネットワークを経由してサーバーに送信されます。
しかし、なぜ LAN 上の ping 要求をブロックするのか疑問に思います。ARP を使用すると、クライアントは依然としてこのサーバーがネットワークに接続されていることを知ることができます。