web-dev-qa-db-ja.com

すべてのiptablesルールの表示

iptablesルールをもう少し詳しく表示する方法はありますか?

最近、一連のIPにマスカレードを追加しました。

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
service iptables save
service iptables restart

それは私がそれをしたいことをしました、しかし私が使うとき:

iptables -L

通常と同じ出力が得られます。

Chain INPUT (policy ACCEPT)
target    prot opt source        destination

Chain FORWARD (policy ACCEPT)
target    prot opt source        destination

Chain OUTPUT (policy ACCEPT)
target    prot opt source        destination

追加したルールを含むルールを確認するにはどうすればよいですか? (システムはCentOS 6)

154

-L--listオプションを使用して現在のファイアウォールルールを一覧表示する場合は、適切なNetfilterテーブル(filternatmanglerawsecurityのいずれか)も指定する必要があります。したがって、natテーブルのルールを追加した場合は、-t--tableオプションを使用してこのテーブルを明示的に指定する必要があります。

iptables --table nat --list

または、オプションの短い形式を使用します。

iptables -t nat -L

特定のテーブルを指定しない場合、filterテーブルがデフォルトとして使用されます。


より高速な結果を得るには、-n--numericオプションを含めてホスト名の代わりに数値のIPアドレスを出力することも役立つため、DNSの逆ルックアップを待つ必要がなくなります。

-v--verboseオプションを含めると、さらに多くの情報を取得できます。

124

iptablesは、filternatmanglerawおよびsecurityの5つの異なるテーブルを制御します。特定の呼び出しで、iptablesは、オプション-tへの引数で指定されたこれらのテーブルの1つのみを表示または変更します(デフォルトはfilter)。ファイアウォールの完全な状態を確認するには、各テーブルでiptablesを連続して呼び出す必要があります。

さらに、ルールの正確な表現を取得するには、オプション-vを渡す必要があります。それ以外の場合、フィルタールールのインターフェイスなど、一部の重要な基準が出力で省略されます(たとえば、「すべてを受け入れる」というルールと「ループバックインターフェイス上のすべてを受け入れる」というルールは、-vでのみ区別できます。 )。

したがって、netfilterルールの完全なプレゼンテーションを取得するには、次のものが必要です。

iptables -vL -t filter
iptables -vL -t nat
iptables -vL -t mangle
iptables -vL -t raw
iptables -vL -t security

または、iptables-saveプログラムを呼び出して、iptables-restoreで解析できる形式ですべてのテーブルのすべてのルールを表示することもできます。このフォーマットは、人間が合理的に読み取ることもできます(テーブルを構築するためのiptablesコマンドの一連の呼び出しに非常によく似ています)。

iptables -Sは私のためのトリックを行います。サービスがオフの場合でも、アクティブなルールがすべてリストされているようです。

Manページから:

-S、--list-rules [chain]選択したチェーンのすべてのルールを出力します。チェーンが選択されていない場合、すべてのチェーンはiptables-saveのように出力されます。他のすべてのiptablesコマンドと同様に、指定したテーブルに適用されます(フィルターがデフォルトです)。

57
Cameron

私がすることはiptables-save > iptables_bckp、これはすべてのレイヤーをバックアップし、ファイルを編集してiptablesを復元しますiptables-restore < iptables_bckp

# iptables-save > iptables_bckp
# vim iptables_bckp
# iptables-restore < iptables_bckp

二重バックアップを作成して、過去のiptablesを失うことなくそのうちの1つを変更できます。

これは個人的な慣習です。これが最良の方法だとは言いませんが、私にとってはうまくいきます。

試してみる

18
tachomi

iptablesコマンドでは、テーブルを指定する必要があります。指定しない場合、デフォルトでテーブルをフィルタリングします。だから試してください:

iptables -t nat -L
4
user425

以下を使用できます。

# lsmod | grep ip_tables
ip_tables              13193  4 iptable_raw,iptable_mangle,iptable_nat,iptable_filter

すべてのテーブルを検索し、テーブルに特定のルールを表示します。

3
Tur Le
iptables -vnxL
iptables -vnxL -tnat

おそらくさらに、これらは非常にまれにしか使用されませんが:

iptables -vnxL -traw
iptables -vnxL -tmangle
iptables -vnxL -tsecuriy
1
sjas

それが本当に役立つ場合は、bashスクリプトを記述して、パスで参照されるフォルダーに配置するか、〜/ .bashrcファイルのエイリアスを介して参照することができます。

AllRules.sh

#!/bin/bash

 echo "Filter table:"
 iptables -t filter -vL

 echo "Nat table:"
 iptables -t nat -vL

 echo "Mangle table:"
 iptables -t mangle -vL

 echo "Raw table:"
 iptables -t raw -vL

 echo "Security table:"
 iptables -t security -vL

 echo 
 echo "All rules in all tables printed"

新しいbashスクリプトにchmodで実行権限を与えることを忘れないでください

権限が問題になる場合は、すべてのiptablesコマンドの前にSudoを追加する必要がある場合があります。

1
ob1