383

ポート 8006 と 8007 でそれぞれ特別な HTTP および HTTPS サービスをホストしています。サーバーを「アクティブ化」するために iptables を使用します。つまり、着信 HTTP および HTTPS ポートをルーティングします。

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8006 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8007 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8006 
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8007  
iptables -A OUTPUT -t nat -d 127.0.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 8006
iptables -A OUTPUT -t nat -d 127.0.0.1 -p tcp --dport 443 -j REDIRECT --to-ports 8007 

これは魅力のように機能します。ただし、サーバーを再度無効にする別のスクリプトを作成したいと思います。つまり、上記の行を実行する前の状態に iptables を復元します。ただし、これらのルールを削除する構文を理解するのに苦労しています。機能しているように見える唯一のことは、完全なフラッシュです。

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

しかし、それは望ましくない他の iptables ルールも削除します。

4

8 に答える 8

550

同じコマンドを実行しますが、「-A」を「-D」に置き換えます。例えば:

iptables -A ...

になる

iptables -D ...
于 2012-04-17T19:04:26.060 に答える
506

ルールの番号 ( --line-numbers )を使用することもできます。

iptables -L INPUT --line-numbers

出力例:

Chain INPUT (policy ACCEPT) 
    num  target prot opt source destination
    1    ACCEPT     udp  --  anywhere  anywhere             udp dpt:domain 
    2    ACCEPT     tcp  --  anywhere  anywhere             tcp dpt:domain 
    3    ACCEPT     udp  --  anywhere  anywhere             udp dpt:bootps 
    4    ACCEPT     tcp  --  anywhere  anywhere             tcp dpt:bootps

したがって、2 番目のルールを削除する場合:

iptables -D INPUT 2

アップデート

特定のテーブル (nat など) を使用する場合は、それを削除コマンドに追加する必要があります (コメントについては @ThorSummoner に感謝します)。

sudo iptables -t nat -D PREROUTING 1
于 2013-01-25T11:37:55.543 に答える
24

最初に、次のコマンドですべての iptables ルールを一覧表示します。

iptables -S

次のようにリストします:

-A XYZ -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

次に、目的の行をコピーし、置き換え-A-D削除します。

iptables -D XYZ -p ...
于 2015-08-21T21:30:00.993 に答える
13

-Dコマンドを使用してください、これはmanページがそれを説明する方法です:

-D, --delete chain rule-specification
-D, --delete chain rulenum
    Delete  one  or more rules from the selected chain.  
    There are two versions of this command: 
    the rule can be specified as a number in the chain (starting at 1 for the first rule) or a rule to match.

他のすべてのコマンド ( -A-I) が特定のテーブルで機能するように、このコマンドを認識してください。デフォルトのテーブル ( filtertable) で作業していない場合は、 を使用-t TABLENAMEしてそのターゲット テーブルを指定します。

一致するルールを削除する

iptables -D INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

注: これにより、一致した最初のルールのみが削除されます。一致するルールが多数ある場合 (これは iptables で発生する可能性があります)、これを数回実行します。

番号で指定されたルールを削除する

iptables -D INPUT 2

数を数える以外に、--line-numberパラメーターを使用して行番号をリストできます。次に例を示します。

iptables -t nat -nL --line-number
于 2017-04-07T09:32:50.580 に答える