iptables NATルールを使用してポートを転送しますか?

iptables NATルールを使用してポートを転送しますか?

iptables NATルールを使用してポートを転送しようとしても機能しないようです。

サンプル画像

したがって、トラフィックは特定のポート範囲のNAT#1からサーバーグループ内の特定のサーバーに移動し、トラフィックをNAT#2から別のサーバーグループに移動したいと思います。

SNATには「NATサーバー」192.168.1.10を使用する必要があります。それ以外の場合、ファイアウォールはトラフィックを破棄します。

「NATサーバー」で以下を試しました。

Example A - NAT#1 port 4000 to Server Group A

sudo iptables -t nat -A PREROUTING -p tcp -d 192.168.1.20 --dport 4000 -j DNAT --to-destination 192.168.1.100
sudo iptables -t nat -A POSTROUTING -s 192.168.1.100 -j SNAT --to 192.168.1.10

Example B - NAT#2 port 5000 to Server Group B

sudo iptables -t nat -A PREROUTING -p tcp -d 192.168.1.30 --dport 5000 -j DNAT --to-destination 192.168.1.201
sudo iptables -t nat -A POSTROUTING -s 192.168.1.201 -j SNAT --to 192.168.1.10

修正する

SNATには「NATサーバー」192.168.1.10を使用する必要があります。それ以外の場合、ファイアウォールはトラフィックを破棄します。

この種の作品です。

sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 destination address=192.168.1.20 forward-port port=4000-4010 protocol=tcp to-addr=192.168.1.100'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 destination address=192.168.1.30 forward-port port=4000-4010  protocol=tcp to-addr=192.168.1.200'
sudo firewall-cmd --reload

しかし、1つの地域に固有のものではありません。 RedHat Firewallドキュメントに書かれているように、

ルールは特定の領域に関連付けられています。ゾーンには複数のルールがあります。一部のルールが対話または矛盾する場合、パケットに一致する最初のルールが適用されます。

したがって、2つの領域を使用する必要があります。 2つのエイリアスを使用してこれを実行できますか? ! ?

修正する

これはうまくいきます...

firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0  -p tcp -m tcp -d "nat_alias" --dport "ext_port" -j DNAT --to-destination "server_ip":"int_port"
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -m state -p tcp -d "server_ip" --dport "int_port" --state NEW,ESTABLISHED,RELATED -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -t nat -p tcp -m tcp -s "server_ip" --sport "int_port" -j SNAT --to-source "nat_ip"

答え1

NAT/SNAT IP アドレスを使用してポートを転送した後、NAT/SNAT を最初に実行する必要があります。たぶん別々のiptableルールが必要かもしれません。

関連情報