web-dev-qa-db-ja.com

Linux iptablesが拒否されました-有効に戻す方法を教えてください。

ネットワークにクライアントがあり、arpspoofがインストールされたコンピューターを介してルーターに接続されています。パケット転送を停止したい場合は、次のコマンドを実行します。

iptables -A FORWARD -j REJECT

それは私が期待したように働いています。しかし、私が何かをしようとすると:

iptables -A FORWARD -j ACCEPT

パケットを最初のように通過させることができません。

私は何か間違ったことをしているのですか、それとも「受け入れる」とは異なる他の引数を使用する必要がありますか?

8
Snipy

IPtablesにはルールのリストがあり、各パケットについて、ルールのリストを順番にチェックします。パケットに一致し、ポリシー(ACCEPT、REJECT、DROP)を指定するルールが見つかると、一致するパケットの運命が決定されます。これ以上のルールは検査されません。

これは、コマンドを実行する順序が重要であることを意味します。 iptables -Aを使用する場合、ルールのリストの最後にルールを追加すると、次のようなルールリストが作成されます。

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-Host-prohibited
ACCEPT     all  --  anywhere             anywhere

REJECTルールが来るbeforeACCEPTルールなので、最初にトリガーされるため、転送は行われません。

したがって、REJECTルールを追加する代わりに、ACCEPTruleを削除する必要があります。 REJECTルールを削除するには、次を実行します。

iptables -D FORWARD -j REJECT 

詳細については、iptablesのマンページを参照してください。

35
Jenny D

-Aフラグは、ルールをチェーンに追加するようにiptablesに指示します。つまり、ルールはREJECTルールの下に置かれ、最初のルールが一致するため、使用されません。

iptables -L FORWARDを使用してルールをリストすると、自分で確認できます。追加したルールを削除するには、次を実行します。

iptables -D FORWARD -j REJECT 

チェーンにそのようなルールがなくなるまで。

18
Petter H

FORWARDルールの最後で、ルールが1つだけになる新しいチェーンにジャンプするために、どうしようとするのでしょうか。 ACCEPTまたはREJECTの場合があります。いう...

iptables -N accept-chain
iptables -A accept-chain -j ACCEPT
iptables -A FORWARD -j accept-chain

その後、accept-chainでこの1つのルールを次のように変更できます

iptables -R accept-chain 1 -j REJECT

トラフィックを無効にする場合、または-j ACCEPTを有効にする場合。

また、ルーティングのオンとオフを切り替える理由

echo "0" > /proc/sys/net/ipv4/ip_forward

パケット転送を無効にする場合と"1"-有効にする場合。

1
gooamoko

順序は重要です。これにより、ルールが追加ではなく上部に挿入されます。

iptables -I FORWARD 1 -j ACCEPT

-私は挿入することであり、#1は位置です

0
chandru-ops