iptables: ポート転送に対する複数の除外

iptables: ポート転送に対する複数の除外

ポート転送を実行する既存のiptables設定があります。このポート転送シナリオでは、ポート転送を望まない状況があります。たとえば、私はこのように定義します。

iptables -A PREROUTING -t nat -i eth0 '!' -s 10.200.0.0/16 -p tcp --dport 80 -j DNAT --to 10.200.30.11

これにより、10.200/16がこのルールにアクセスできなくなります。複数の除外項目を追加する必要があることがわかりました。しかし、これを行う方法はないようです。

iptables -A PREROUTING -t nat -i eth0 '!' -s 10.200.0.0/16,192.168.0.0/16 -p tcp --dport 8080 -j DNAT --to 10.200.30.11:80
iptables v1.4.8: ! not allowed with multiple source or destination IP addresses

この問題を異なる方法で処理する必要があると思いますが、どうすればよいかわかりません。どんな提案がありますか?

ベストアンサー1

次のバリエーションのいずれかを使用できます。

最初のものはipsetで、設定タイプは「hash:net」です。

-j RETURN2番目は、各ネットワークのスキャンをスキップし、最後のチェーンルールとして必要な基本操作を提供するiptablesルールチェーンです。

3番目は、いくつかのビットフラグでパケットにタグを付け、-j MARKそのフラグを再生して(などを使用して--set-mark)タグ検証が満たされたら、--set-xmark必要なアクション(-m markおよび)を実行することです。--markタグを1つのテーブルに設定して別のテーブルにチェックインできるため、これは最も多様なバリエーションです。 OTOHフラグビットマスクは32ビットに制限されているため、複雑なルールには不十分です。

おすすめ記事