ネットワークインターフェイスがダウンしている場合:
ping 8.8.8.8
connect: Network is unreachable
クールにシャットダウンする
カーネルがpingに特定の信号を送信する
ため、pingはそれ自体で終了します。
しかし、ネットワークインターフェイスが動作しており、
iptablesを介したすべてのトラフィックをブロックすると..
vi /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A OUTPUT -j REJECT --reject-with icmp-net-unreachable
-A INPUT -j DROP
-A FORWARD -j DROP
COMMIT
ただし、pingは終了しません。そして止めなさい。
ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 192.168.0.100 icmp_seq=1 Destination Net Unreachable
From 192.168.0.100 icmp_seq=1 Destination Net Unreachable
From 192.168.0.100 icmp_seq=1 Destination Net Unreachable
それは続行されます。
私は別のことを試しました --拒否バナー
たとえば、
icmp-net-unreachable
icmp-host-unreachable
icmp-port-unreachable
icmp-proto-unreachable
icmp-net-prohibited
icmp-host-prohibited
icmp-admin-prohibited
それらのどれも終了するように言うことはできません。
私が見たいのは、
ネットワークインターフェイスが切断されたときに終了するのと同じ方法でpingが終了することです。
iptablesでこれを行うことができない場合、pingカーネルが送信するのと同じシグナルを
送信するために実行できるコマンドはありますか
? 「ネットワークインターフェイスが接続されていません」と教えてください。
(嘘でしょうが基本的には自然に終了してほしいです。)
ベストアンサー1
デフォルトオプションを使用すると、パケットを送信できない限り、Linuxのpingはそれ自体で停止しません。
パケットがフィルタリングされている場合、pingコマンドは引き続きパケットを送信でき、そのパケットはネットワークスタックで破棄/拒否されます。
自動的に停止するには、-cオプションを使用します。例:
ping -c 4 8.8.8.8
この場合、pingは通過するかどうかにかかわらず、4つのパケットの後に停止します。
以下は公式マニュアルから抜粋した内容です。
-c count Stop after sending count ECHO_REQUEST packets. With deadline option, ping waits for count ECHO_REPLY packets, until the time‐ out expires.