IPTables-国に基づいてトラフィックをリダイレクト


3

指定されたポート上の指定された国からのTCPトラフィックのみを許可し、残りのトラフィックはiptablesを使用して別のIP /ポートにリダイレクトする方法はありますか?

回答:


3

動作する前にgeoipデータベースをセットアップして更新する必要があります。

iptables -I INPUT -m geoip -p tcp --dport ### --src-cc CN -j ACCEPT
iptables -A PREROUTING -p tcp --dport ###  --src-cc ! CN -j DNAT --to-destination 1.1.1.1:333

1.1.1.1をIPに、333を任意のポートに置き換えます。

これはあなたを助けるチュートリアルです:http : //xmodulo.com/block-network-traffic-by-country-linux.html

IPアドレスが所有者や国を変更する場合があるため、データベースを定期的に更新する必要があります。


しかし、これは途方もない減速を引き起こさないでしょうか?結局、すべてのパケットに対して呼び出されます。
ダニエルB

@DanielBルールが正しく行われ、正しい順序で実行された場合、パフォーマンスへの影響は最小限になります。ただし、ユーザーはそれを実行したいので、CPU使用率に見合う価値があるかどうかを判断する必要があります。Webサーバーへのリダイレクトがあり、その影響はごくわずかです。INPUTチェーンの最上部にこのルールがあるはずです:iptables -A INPUT -m conntrack -j ACCEPT --ctstate RELATED、ESTABLISHEDこれは、新規パケットと偽のパケットを除くすべてを渡します。
サイバーナード

動作していないようです:iptables v1.4.14:不明なオプション "--dport"詳細については、 `iptables -h 'または' iptables --help 'を試してください。
高門

-m tcp -p tcpを
-cybernard

複数のポートを実行する必要がある場合は、-m multiportを追加し、-dport--dportsに
cybernard

0

正しい構文は次のとおりです。

iptables -I INPUT -m geoip -p tcp --dport xxx --src-cc CN -j ACCEPT
iptables -A PREROUTING -p tcp --dport xxx --src-cc ! CZ,SK -j DNAT --to-destination 1.1.1.1:333

しかし、あなたの答えは正しかった。


非常に近いので、-m tcpはマルチポートの条件の1つでなければなりません。私はその変化を反映するために答えを更新しました。
サイバーナード

OK、そのときあなたの応答を正しいとマークしました
高門
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.