I get this additional rule in the Chain PREROUTING and this allows prerouting to work even if the firewall is disabled.
Então, não tenho certeza se isso é verdade.
Se o PREROUTING não estiver mais funcionando quando você interromper o firewalld (e não estou claro por que você faria isso), presumo que seja porque o firewalld está removendo sua política inteira (por exemplo, iptables -F
/ iptables -X
) . Nesse caso, o fato de você ter adicionado outra versão da mesma regra manualmente faria pouca diferença.
iptables -F
ainda o removeria.
Seu (primeiro) comando deve estar lhe dando uma regra de pré-roteamento permanente como você queria, contanto que você não pare o firewalld. Eu tenderia a pensar que isso deveria ser suficiente, mas posso muito bem estar perdendo alguma coisa sobre suas necessidades.
Só para ficar claro: não existe uma diferença prática entre ter sua regra de pré-roteamento na cadeia PREROUTING_DIRECT ou na cadeia PREROUTING.
Ambas as abordagens funcionam da mesma maneira, têm o mesmo efeito e, além de outras alterações na política de firewall, devem estar fazendo o que você precisa.
A única diferença é que o firewalld está basicamente fazendo um pequeno administrador nos bastidores para você e colocando sua regra real em uma cadeia definida pelo usuário em vez de uma definida pelo sistema.
tl; dr : Eu apenas manteria o firewalld em execução e usaria seus comandos para criar e gerenciar suas regras. Enquanto os comandos firewall-cmd versus 'raw' iptables têm efeitos visuais ligeiramente diferentes, eles têm o mesmo efeito no tráfego de rede.