すべてのルールでiptablesチェーンを削除する


31

次のような多くのルールが追加されたチェーンがあります。

> :i_XXXXX_i - [0:0]
> -A INPUT -s 282.202.203.83/32 -j i_XXXXX_i 
> -A INPUT -s 222.202.62.253/32 -j i_XXXXX_i 
> -A INPUT -s 222.202.60.62/32 -j i_XXXXX_i 
> -A INPUT -s 224.93.27.235/32 -j i_XXXXX_i 
> -A OUTPUT -d 282.202.203.83/32 -j i_XXXXX_i 
> -A OUTPUT -d 222.202.62.253/32 -j i_XXXXX_i 
> -A OUTPUT -d 222.202.60.62/32 -j i_XXXXX_i 
> -A OUTPUT -d 224.93.27.235/32 -j i_XXXXX_i

このチェーンを削除しようとすると:

iptables -X XXXX

しかし、次のようなエラーが発生しました(前にiptables -F XXXXXを試しました):

iptables:リンクが多すぎます。

一度のコマンドでチェーンを削除する簡単な方法はありますか?


2
フラッシュしようとしたときに、そのようなiptables barfを見たことはありません。
トム・オコナー

好奇心が強い... 「多くの」ルールはいくつですか?
ラダダダダ

1
2 many is many :)最初にルールを削除しようとすると、何度も入力するのが好きになります:iptables -D OUTPUT -d XXX / 32 -j i_XXXXX_i
timy

3
これを試してください:iptables-save | grep -v i_XXXXX_i | iptables-restore
スティーブン月曜日

@StevenMonday答えとして書いてはどうですか、これは最も便利なものです(ファイルを介してこれを行い、ファイルを編集する)。それは削除されません唯一のものは、(とにかく「生」)の完全なテーブルである
nhed

回答:


38

「-j CHAINTODELETE」を含むルールがそれらを参照している場合、チェーンを削除できません。チェーンを参照しているもの(リンク)を把握し、それを削除します。また、フラッシュしてからキルします。

-F、-flush [チェーン]

選択したチェーンをフラッシュします(何も指定されていない場合、テーブル内のすべてのチェーン)。これは、すべてのルールを1つずつ削除することと同じです。

-X、-delete-chain [チェーン]

指定したオプションのユーザー定義チェーンを削除します。 チェーンへの参照があってはなりません。 ある場合は、参照するルールを削除したり、交換する必要があります チェーンを削除することができます前に。チェーンは空でなければなりません。つまり、ルールが含まれていません。引数が指定されていない場合、テーブル内のすべての非組み込みチェーンを削除しようとします。


私はチェーンを直接削除する方法を見つけたい(多くの「-j CHAINTODELETE」参照規則があります)が、あなたの答えからは不可能だと思われます:(
timy April

1
@timy StevenMondayのコメントは、チェーンへの参照をシングルパスで削除します。おそらく理想的ではないかもしれませんが、間近です。
ジェフファーランド

12

これは潜在的に話題外ですが、この投稿を見つけてからやったことです!ユースケースによっては、iptables -Dオプションが役立つ場合があります。-Aを使用してプログラムで追加された参照ルールをクリアできるため(追加方法を正確に知っている場合)。

例えば

    iptables -N MYCHAIN
    iptables -A INPUT -i interface -j MYCHAIN
    iptables -A MYCHAIN -j ACCEPT

と逆にすることができます

   iptables -D INPUT -i interface -j MYCHAIN
   iptables --flush MYCHAIN
   iptables -X MYCHAIN

8

2つのステップが必要ですが、これは1つのコマンドで行います。

ファイルを作成し、その中に配置します。

# Empty the entire filter table
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

ファイルを「clear-all-rules」として保存します。次に、次のコマンドを実行します。

iptables-restore < clear-all-rules

これで、たった1つのコマンドでいつでもクリアできます。


1
+1これは、実際には、クリーンなfw構成で開始する最も速い方法です。
dr01

6

これが代替プランです。これには1つではなく3つのコマンドが含まれますが、運が良ければ動作するはずです。

iptablesルールセットをファイルにダンプします。

iptables-save > /tmp/iptables.txt

問題のあるチェーンのすべての使用(および参照)を削除します。

sed -i '/i_XXXXX_i/d' /tmp/iptables.txt

次に、ルールセットをリロードします。

iptables-restore < /tmp/iptables.txt && rm /tmp/iptables.txt

0

これらの行に沿ったものは、iptablesを削除することなく、それらすべてを1行で取得します。

for chain in `iptables -L |grep i_XXXXX_i|awk '{ print $2 }'`; do iptables -X $chain; done

0

iptables manファイルにはオプションがあります -S

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

を使用してiptables -S | grep <CHAINNAMEHERE>。例えば:

root @ root:〜#iptables -S | grepトラフィック

-Nトラフィック

-A FORWARD -i eth0 -j TRAFFICLOG

その後、テーブルからのチェーンの削除をブロックしているルールを確認できます。各ルールを確認します(ただしiptables -N <CHAINNAMEHERE>-Dオプションを使用してルールを削除します

-D、--delete chain rulenum選択したチェーンから1つ以上のルールを削除します。このコマンドには2つのバージョンがあります。ルールは、チェーン内の番号(最初のルールの1から開始)または一致するルールとして指定できます。

たとえばiptables -D FORWARD -i eth0 -j TRAFFICLOG。チェーンの各ルールを削除した後、-Fオプションでチェーンをフラッシュしますiptables -F <CHAINNAMEHERE>

-F、--flush [chain]選択されたチェーン(何も指定されていない場合はテーブル内のすべてのチェーン)をフラッシュします。これは、すべてのルールを1つずつ削除することと同じです。

次に、-Xオプションを使用してチェーンを削除し、iptables -X <CHAINNAMEHERE>

-X、--delete-chain [chain]指定されたオプションのユーザー定義チェーンを削除します。チェーンへの参照があってはなりません。存在する場合は、チェーンを削除する前に、参照ルールを削除または置換する必要があります。チェーンは空でなければなりません。つまり、ルールは含まれていません。引数が指定されていない場合、テーブル内のすべての非組み込みチェーンを削除しようとします。

Iptablesは複雑なツールセットであるため、理想的なチュートリアルが必要です。www.iptables.infoで試してみることができます


0

これはチェーンを吐き出し、それらを削除します

for i in $(iptables -S | awk '{print $2}' | uniq ); do iptables -F $i && iptables -Z $i && iptables -X $i  ; done

0

/etc/iptables/rules.v4のルールファイルを編集することで、ルールとチェーンを削除できることがわかりました。このファイル内の不要なチェーンを削除してからiptablesをリロードすると、iptables -Lを実行したときにチェーンが表示されなくなります。


このファイルは特定のLinuxディストリビューションにのみ存在し、特定のLinuxディストリビューションの特定のバージョンにのみ存在します。
マイケルハンプトン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.