2

このようなことをしたい

iptables -I INPUT ! -s $IP_1 -p tcp --dport $SERVER_PORT -j DROP
iptables -I INPUT ! -s $IP_2 -p tcp --dport $SERVER_PORT -j DROP
iptables -I INPUT ! -s $IP_3 -p tcp --dport $SERVER_PORT -j DROP

サーバーポートはすべて同じですが、許可されたIPは異なる場合があります....私がiptablesについて知っていることから、IP_3が最初のルールから削除されるため、これは機能しません...どうすれば何かを取得できますかこのように動作しますか?

4

2 に答える 2

1

これらのルールは、$SERVER_PORT 宛てのすべての tcp パケットをドロップします。最初のルールは、送信元 IP アドレスが $IP_1 と等しくない場合は破棄することを示しています。ルールが正しく一致したため、それ以上の処理は行われません。IP アドレスが $IP_1 と等しい場合、$IP_1 != $IP_2 と仮定して、同じ理由でドロップする 2 番目のルールに進みます。実際、$SERVER_PORT 宛てのすべての tcp パケットは、ルール 3 に到達することなくドロップされます。

代わりに、次のようにします。

iptables -A INPUT -s $IP_1 -p tcp --dport $SERVER_PORT -j ACCEPT
iptables -A INPUT -s $IP_2 -p tcp --dport $SERVER_PORT -j ACCEPT
iptables -A INPUT -s $IP_3 -p tcp --dport $SERVER_PORT -j ACCEPT
iptables -A INPUT -j DROP

他にルールがない場合は、最初にルールをフラッシュすることを忘れないでください: iptables -F.

于 2013-08-22T22:32:26.977 に答える