すべての着信接続を無効にするようにiptablesを設定しました。
:INPUT DROP [0:65535]
iptablesを起動した後、次のコマンドを実行してpingを有効にします。
/usr/sbin/iptables -A INPUT -m icmp --icmp-state 8 -j ACCEPT
/usr/sbin/iptables -A INPUT -m icmp --icmp-state 0 -j ACCEPT
iptablesルールは、/etc/init.d/iptables status
WindowsとLinuxの両方のPCでデバイスをpingできます。次に、次のコマンドを実行して削除します。
/usr/sbin/iptables -D INPUT -m icmp --icmp-state 8 -j ACCEPT
/usr/sbin/iptables -D INPUT -m icmp --icmp-state 0 -j ACCEPT
iptablesルールが削除されたことを確認しました/etc/init.d/iptables status
。予想通り、Linux PCでデバイスをpingできません。ただし、Windows PCで1〜2分間デバイスをpingできますが、pingはできません。
Windows XP PCはデバイスを無期限にpingしません(つまり、-tを使用しません)。しかし、この結果が現れるのはなぜですか?
ベストアンサー1
あなたが提供したすべての情報によれば、ルールを削除すると、Linux PCのIPアドレスはもう存在しなくなり、トラフィックが減少するとiptables conntrack table
推測されます。 Windows PC の IP アドレスがまだ conntrack テーブルに表示される可能性があるため、そのトラフィックは許可されます。
iptables
各ルールを上から下に作業します。したがって、ルールを定義する順序がiptables
非常に重要です。あなたの場合、チェーンは次INPUT
のとおりです。
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.0/255.0.0.0 -j ACCEPT
....
-A INPUT -m icmp --icmp-state 8 -j ACCEPT
-A INPUT -m icmp --icmp-state 0 -j ACCEPT
したがって、ルールを削除しても、ICMP
クライアント接続がconntrackテーブルにある場合は、まだ許可されていることがわかりますiptables
。
あなたは読むことができますiptables conntrack table
ここ:
接続で双方向トラフィックが確認されると、conntrack エントリは [UNREPLIED] フラグをクリアしてリセットします。接続に双方向トラフィックがないことを示すエントリは、エントリの末尾にある[ASSURED]フラグに置き換えられます。 [ASSURED]フラグはこの接続が保証され、追跡可能な最大接続数に達しても削除されないことを示します。したがって、保証されていない接続([ASSURED]とマークされていない接続)とは異なり、[ASSURED]とマークされた接続は削除されません。接続追跡テーブルが保持できる接続の数は、最近のカーネルのip-sysctl機能で設定できる変数によって異なります。このエントリが保持するデフォルト値は、保持するメモリの量によって大きく異なります。 128 MB RAMでは8192個のエントリが得られ、256MB RAMでは16376個のエントリが得られます。 /proc/sys/net/ipv4/ip_conntrack_max 設定で設定を読み込んで設定できます。