Vemos como enmascarar una ip usando el firewalld de centos7 y derivados.
Primero modificamos la zona de las interfaces.
# show current setting [root@yo ~]# firewall-cmd --get-active-zone public interfaces: eth0 eth1 # change zone [root@yo ~]# nmcli c mod eth0 connection.zone internal [root@yo ~]# nmcli c mod eth1 connection.zone external [root@yo ~]# firewall-cmd --get-active-zone internal interfaces: eth0 external interfaces: eth1
Establecemos la ip enmascarada en la zona externa.
# set IP Masquerading [root@yo ~]# firewall-cmd --zone=external --add-masquerade --permanent success [root@yo ~]# firewall-cmd --reload success # show setting [root@yo ~]# firewall-cmd --zone=external --query-masquerade yes # ip_forward is enabled automatically if masquerading is enabled. [root@yo ~]# cat /proc/sys/net/ipv4/ip_forward 1
En el ejemplo configuraremos que todos los paquetes entrantes en el puerto 22 de la zona externa sean reenviados al puerto 1234 de nuestro servidor. Recuerda agregar la opción «–permanent» si quieres que el cambio sea permanente.
[root@yo ~]# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=1234 success [root@yo ~]# firewall-cmd --list-all --zone=external external (active) interfaces: eth1 sources: services: ssh ports: masquerade: yes forward-ports: port=22:proto=tcp:toport=1234:toaddr= icmp-blocks: rich rules:
Otro ejemplo sería que los paquetes entrantes al puerto 22 de la zona externa, sean reenviados a otro Host (192.168.0.31) y al puerto 22.
[root@yo ~]# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=22:toaddr=192.168.0.31 success [root@yo ~]# firewall-cmd --list-all --zone=external external (active) interfaces: eth1 sources: services: ssh ports: masquerade: yes forward-ports: port=22:proto=tcp:toport=22:toaddr=10.0.0.31 icmp-blocks: rich rules:
Y como ultimo ejemplo lo configuramos para que todos los paquetes salientes del servidor (10.0.0.0/24) sean permitidos y a la vez sean reenviados por la zona externa.
# set masquerading to internal zone [root@yo ~]# firewall-cmd --zone=internal --add-masquerade --permanent success [root@yo ~]# firewall-cmd --reload success [root@yo ~]# firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth1 -j MASQUERADE [root@yo ~]# firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -o eth1 -j ACCEPT [root@yo ~]# firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT