インターネットからのすべてのトラフィックをブロックするように設定したいルーターがあります。私が理解したのは、転送されたパケットを破棄することです。また、内部LAN上のあるシステムと他の複数のシステム間のトラフィックを許可したいと思います。
このために、以下を試しました。
IPT="/sbin/iptables"
LOCAL_CONTROLLER="192.168.1.2"
SUBNET="192.168.1."
MACHINE_IPS="100 101 102 103 104"
for MACHINE in ${MACHINE_IPS}; do
$IPT -A FORWARD -s $LOCAL_CONTROLLER -j ACCEPT
$IPT -A FORWARD -s $SUBNET$MACHINE -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -s $SUBNET$MACHINE -d $LOCAL_CONTROLLER -j ACCEPT
$IPT -A FORWARD -s $SUBNET$MACHINE -j DROP
done
残念ながら、期待どおりに動作しません。 192.168.1.2 から 192.168.1.103 へのトラフィックとその逆のトラフィックはブロックされます。
私のスクリプトにどのような問題があるかを指摘してもらえますか?
答え1
FORWARD
サーバーに問題がある場合にのみキューを使用してください。ルーターです、ネットワーク外部からの着信および発信パケットを処理するために使用され、ネットワーク外(ルーターレベルで)パケットルーティングをブロック/受け入れるために使用されます。
ホストレベルで接続を制御するためにルーティングを実行しないため(たとえば、IP転送を実行しない)、接続がどこから来るかに関係なく、使用またはINPUT
キューに入れるのが一般的です。OUTPUT
ローカルネットワーク上のコンピュータグループがインターネットではなく互いに通信できるようにしたい場合は、最も簡単な方法はそのコンピュータにゲートウェイを定義しないことです。
それでもこれを行う必要がある場合は、代わりにスクリプトでキューを使用する必要がiptables
あります。INPUT
FORWARD
主な関心事がインターネットに入るトラフィックであれば、ゲートウェイを提供するのは好きではありませんが、OUTPUT
ローカルシステムのキューを使用する必要があります。
良い:
iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -j DROP
(192.168.1.0/24 -> 192.168.1ネットワーク上のすべてのマシン)
他のネットワークからSSH経由でアクセスしている場合は、これらのルールを使用すると効果的に自分自身をロックできます。
ただし、ルーターがLinuxボックスの場合は、FORWARDルールを作成すると、インターネット上の複数のシステムをロックするのに十分です。
iptables -A FORWARD -s 192.168.1.10 -j DROP
iptables -A FORWARD -s 192.168.1.11 -J DROP
からman iptables
:
INPUT(ローカルソケットに向かうパケット用)
FORWARD(ボックス経由でルーティングされるパケット用)
OUTPUT(ローカルで生成されたパケット用)