パケットドロップを担当するiptablesルールを見つける方法はありますか?

パケットドロップを担当するiptablesルールを見つける方法はありますか?

私のシステムにはすでにファイアウォールがインストールされています。ファイアウォールは1000を超えるiptablesルールで構成されています。これらのルールの1つは、ドロップしたくないパケットをドロップすることです。 (私がフォローiptables-saveしてみると、iptables -Fアプリが機能し始めたため、これを知っています。)手動でソートする必要があるルールが多すぎます。どのルールがパケットをドロップするかを表示する方法はありますか?

答え1

チェーンの最初にTRACEルールを追加して、パケットが通過する各ルールを記録できます。

iptables -L -v -n | lessLet You Searchルールを使用することをお勧めします。ポートと適用可能なインターフェイスルールを見てみましょう。ルールが多すぎるということを考えると、おそらくほぼ閉じたファイアウォールを実行していて、トラフィックの許可ルールがありません。

ファイアウォールはどのように構築されますか?ビルドルールよりもビルダールールを表示する方が簡単です。

答え2

iptables -L -v -nカウンターのおかげで、次のことができます。

iptables -L -v -n > Sample1
#Cause the packet that you suspect is being dropped by iptables
iptables -L -v -n > Sample2
diff Sample1 Sample2

これにより、追加されたルールのみを表示できます。

答え3

iptables -L -v -n各テーブルとルールのパケットとバイトカウンタを表示するには、実行してください。

答え4

watch -n1 -d "iptables -tfilter -vnxL | grep -vE 'pkts|Chain' | sort -nk1hr | column -t"

これはテーブルの内容だけを表示することを忘れないでください。フィルター

すべてのテーブルが必要な場合は、以下を試してください。

watch -n1 -d "(iptables -tfilter -vnxL;iptables -tnat -vnxL;iptables -tmangle -vnxL;iptables -traw -vnxL;iptables -tsecurity -vnxL) | grep -vE 'pkts|Chain' | sort -nk1,1hr | column -t"

関連情報