É possível salvar regras de iptable que tenham um nome para destino em vez de IP?

1

Por exemplo, eu tenho a regra

#iptables -A OUTPUT -d www.google.com -j ACCEPT

Quando eu digito essa regra em um terminal, ela é resolvida para os IPs apropriados, e é isso que é armazenado em rules.v4 quando salvo. Existe uma maneira de ter www.google.com armazenado no arquivo que é carregado automaticamente em vez dos IPs? Eu tentei editar o arquivo diretamente, mas quando eu coloquei um nome lá, as regras simplesmente não carregam.

    
por scott.se 05.03.2016 / 06:03

1 resposta

1

Não. O kernel não sabe nada sobre nomes. As regras do kernel têm apenas endereços IP. Salvar e restaurar essas regras com iptables-save e iptables-restore usa um formato textual que é uma representação reversível exata do que está no kernel e, portanto, também não trata de nomes.

A coisa mais próxima que você pode fazer é salvar suas regras na forma de um shell script que você mantém manualmente e contém uma sequência de comandos iptables e ip6tables que configuram suas regras que podem conter nomes. Mas leia para saber por que você provavelmente não deveria.

Você deve considerar cuidadosamente o motivo pelo qual você precisa usar nomes em primeiro lugar. Você está usando um nome porque não sabe com antecedência qual endereço IP o nome apontará ou porque o endereço IP para o qual o nome mapeia pode mudar de tempos em tempos? Considere que, quando você usa um nome, o comando iptables ou ip6tables resolve o nome ali e o que vive dentro do kernel indefinidamente é um endereço IP. O que acontece quando o mapeamento entre um nome e um endereço IP é alterado? Os nomes DNS têm TTLs que expressam por quanto tempo você deve armazenar em cache o mapeamento entre o nome e o endereço. Mas as regras do iptables no kernel não serão atualizadas quando o mapeamento for alterado, levando a regras com endereços IP obsoletos / obsoletos nelas.

    
por 05.03.2016 / 17:03