![firewalld: dos NIC, dos zonas. Se ignora la zona](https://rvso.com/image/747330/firewalld%3A%20dos%20NIC%2C%20dos%20zonas.%20Se%20ignora%20la%20zona.png)
Tengo un servidor que ejecuta CentOS/RHEL 7.7 con dos interfaces de red. Estas interfaces están configuradas y funcionan correctamente. La primera interfaz, ens33, es parte de la zona "pública" del firewalld. Todas las reglas aplicadas a esta zona funcionan correctamente. La segunda interfaz, ens37, también funciona como se esperaba cuando es miembro de la zona "pública". Creé una segunda zona, "GLZ", que tiene un conjunto de reglas específicas para la función de la segunda interfaz. No puedo hacer que ninguna regla de la zona GLZ entre en vigor en esta interfaz. He configurado este tipo de configuración usando iptables muchas veces en el pasado, pero parece que no puedo obtener el efecto deseado con firewalld. Siento que me debe faltar algo fundamental con firewalld pero no sé qué podría ser. A continuación se detallan los detalles:
Guión de configuración:
NEWZONE="GLZ"
# create the new zone
firewall-cmd --permanent --new-zone=$NEWZONE
firewall-cmd --reload
# add the second NIC to the zone
firewall-cmd --permanent --zone=$NEWZONE --change-interface=ens37
# set zone target
firewall-cmd --zone=$NEWZONE --permanent --set-target=default
firewall-cmd --reload
# open necessary ports
firewall-cmd --permanent --zone=$NEWZONE --add-rich-rule='rule family=ipv4 source address=0.0.0.0/0 port protocol=tcp port=80 accept'
firewall-cmd --permanent --zone=$NEWZONE --add-rich-rule='rule family=ipv4 source address=0.0.0.0/0 port protocol=tcp port=443 accept'
# setup forwarding (see https://docs.fedoraproject.org/en-US/Fedora/19/html/Security_Guide/sec-Configure_Port_Forwarding-CLI.html)
firewall-cmd --permanent --zone=$NEWZONE --add-masquerade
firewall-cmd --permanent --zone=$NEWZONE --add-forward-port=port=22:proto=tcp:toport=2222
firewall-cmd --reload
Esto parece verse bien según el resultado de --info-zone. Ambas zonas están activas y se asigna la interfaz de red adecuada a cada zona. Cualquier cambio que haga en la zona pública afecta el tráfico en ambas interfaces y ninguna de las reglas que agrego o elimino de la zona GLZ hace ninguna diferencia.
Producción:
$ sudo firewall-cmd --info-zone=public
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="10.0.0.0/8" port port="3306" protocol="tcp" accept
rule family="ipv4" source address="10.0.0.0/8" port port="80" protocol="tcp" accept
rule family="ipv4" source address="10.0.0.0/8" port port="443" protocol="tcp" accept
rule family="ipv4" source address="10.0.0.0/8" port port="8080" protocol="tcp" accept
$ sudo firewall-cmd --info-zone=GLZ
GLZ (active)
target: default
icmp-block-inversion: no
interfaces: ens37
sources:
services:
ports:
protocols:
masquerade: yes
forward-ports: port=22:proto=tcp:toport=2222:toaddr=
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="0.0.0.0/0" port port="80" protocol="tcp" accept
rule family="ipv4" source address="0.0.0.0/0" port port="443" protocol="tcp" accept