Você deve fazer NAT / SNAT primeiro depois que você usar o endereço IP NAT / SNAT para encaminhar a porta. Talvez você precise separar as regras de iptable.
Estou tentando encaminhar portas com as regras NAT do iptables, mas parece que não funciona.
Portanto,queroqueotráfegodoNATnº1emumintervalodeportasespecíficováparaumservidorespecíficoemumgrupodeservidoresetrafeguedoNATnº2paraoutrogrupodeservidores.
Eutenhoqueusaro"servidor NAT" 192.168.1.10 como SNAT, caso contrário, o FW perderá o tráfego.
Eu tentei o seguinte no "servidor 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
Seria ótimo com alguma entrada, eu não trabalhei com regras de firewall Linux mais "complicadas" antes.
Atenciosamente, Bjorn
UPDATE
I have to use the "NAT server" 192.168.1.10 as SNAT otherwise the FW will drop the traffic.
Hmmm ... Isso funciona, mais ou menos.
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
mas não com uma zona. Enquanto escrevem no doc do firewall RedHat,
Uma regra está associada a uma zona específica. Uma zona pode ter várias regras. Se algumas regras interagem ou contradizem, a primeira regra que corresponde ao pacote se aplica.
Então eu tenho que usar duas zonas. Isso é possível com dois aliases?!?
Atenciosamente,
Bjorn
UPDATE
Isso funcionou ...
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"
Atenciosamente
Bjorn
Você deve fazer NAT / SNAT primeiro depois que você usar o endereço IP NAT / SNAT para encaminhar a porta. Talvez você precise separar as regras de iptable.
Tags port-forwarding iptables nat rhel