firewalld: duas NICs, duas zonas. A zona é ignorada

firewalld: duas NICs, duas zonas. A zona é ignorada

Eu tenho um servidor rodando CentOS/RHEL 7.7 com duas interfaces de rede. Essas interfaces estão configuradas e funcionam corretamente. A primeira interface, ens33, faz parte da zona "pública" do firewalld. Todas as regras aplicadas a esta zona funcionam corretamente. A segunda interface, ens37, também funciona conforme esperado quando é membro da zona "pública". Criei uma segunda zona, "GLZ", que possui um conjunto de regras específicas para o funcionamento da segunda interface. Não consigo fazer com que nenhuma regra da zona GLZ tenha efeito nesta interface. Eu configurei esse tipo de configuração usando iptables muitas vezes no passado, mas não consigo obter o efeito desejado com o firewalld. Sinto que devo estar faltando algo fundamental no firewalld, mas não sei o que pode ser. Abaixo estão os detalhes:

Roteiro de configuração:

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

Isso parece bom com base na saída de --info-zone. Ambas as zonas estão ativas e a interface de rede apropriada está atribuída a cada zona. Quaisquer alterações que eu fizer na zona pública afetam o tráfego em ambas as interfaces e nenhuma das regras que adiciono ou removo da zona GLZ faz qualquer diferença.
Saída:

$ 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

informação relacionada