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ルールが必要かもしれません。