Eu ainda suspeito que duas execuções de /etc/network/if-pre-up.d/iptables estão sendo executadas ao mesmo tempo durante todo o processo de inicialização. Devido ao comportamento systemd normal de iniciar coisas simultaneamente, a menos que seja aconselhado a não fazê-lo, acredito que o processo de inicialização aciona um processo de script para a interface lo e outro para a interface ens16 . Isso resultaria em uma execução simultânea de iptables-restore , o que pode causar erros, como iptables-restore: line 10 failed . Eu sou incapaz de fornecer evidências embora.
Estou acostumado a gerenciar sistemas CentOS e Red Hat. Era uma vez, um desses servidores falhou ao inicializar iptables service na inicialização porque systemd estava iniciando ip6tables simultaneamente. Esse erro específico está documentado aqui: link
Sugiro que você lide com a simultaneidade em seu script, por exemplo, usando flock :
#!/bin/sh
/usr/bin/flock /run/.iptables-restore /sbin/iptables-restore < /etc/iptables.up.rules
Como alternativa, você pode verificar o valor real da variável ${IFACE} antes de restaurar as regras iptables (referência: man 5 interfaces ):
#!/bin/sh
if [ "${IFACE}" == ens16 ]; then
/sbin/iptables-restore < /etc/iptables.up.rules
fi
Além disso, se você quiser apenas carregar as regras iptables no momento da inicialização, sugiro que use iptables-persistent :
# apt-get install iptables-persistent netfilter-persistent
# mv -v /etc/iptables.up.rules /etc/iptables/rules.v4
# systemctl enable netfilter-persistent.service
# rm -v /etc/network/if-pre-up.d/iptables