É possível usar o nome DNS nas regras do iptables, mas não é uma prática recomendada por mais motivos. E o principal motivo - o iptables executa a resolução uma vez durante o carregamento de regras. No futuro, o nome DNS pode ser alterado e seu host não o saberá.
Como você poderia saber, o iptables precisa apenas resolver o nome do DNS com sucesso . Portanto, se o nome DNS não existir, o carregamento de regras terminará com erros.
Você pode criar um script e verificar a resolução do nome dentro dele:
#!/bin/bash
host_check=$( dig -t A somehost.com +short 2>/dev/null | wc -l )
if (( $host_check > 0 ))
then sed -i '/.*somehost\.com/s/^#//' file
else sed -i 's/.*somehost\.com/#&/' file
fi
este script verifica a resolução do nome. Se o nome for resolvido (a saída será uma ou mais linhas), o script excluirá comentários em cada linha com determinado nome DNS. Se não - scipt adiciona comentários a cada linha com o nome DNS.
file
- este é o script iptables do comando iptables-save > file
Depois disso, você pode carregar regras com iptables-restore < file
Eu recomendo strongmente não usar essa abordagem. Você precisa encontrar uma maneira de recusar nomes DNS nas regras do iptables.