検索

iptablesで複数のルールをワンライナーで消す

特に意識せずにiptablesを利用してて何故かINPUTのルールが50個前後同じルールが乱立してたので複数消す方法を考えてみた。なお、iptablesにまとめて消すオプション等はない模様。

手順

環境はubuntu20.04lts。まずは該当のチェインのルールの番号を調べる。

sudo iptables -L --line-number
Code language: Bash (bash)

重複してそうなやつを見つけたら番号を確認しておく。自分の環境はFORWARDが5から49の範囲がその範囲外の番号のルールと被ってたので以下のようにして削除した。変数numとwhileの条件式の値、チェイン名を置き換えたら他のシチュエーションでも使えるはず。

num=49 ;while [ 4 -lt $num ]; do echo "delete  $num";sudo iptables -D FORWARD $num;let "num=num-1"; done
Code language: Bash (bash)