DNS Dinamicos (ddns & dyndns) no script firewall
Olá, bom dia pessoal.
Tenho um script com todas as minhas regras de Firewall funcionando. Hoje preciso liberar um acesso externo -> interno para uma empresa terceira que usa DNS Dinamico.
Código :
...
iptables -t nat -A PREROUTING -i eth0 -s nome.ddns.com.br -p tcp --dport 55000 -d 201.24.120.xx -j DNAT --to 192.168.0.3
iptables -t nat -A PREROUTING -i eth0 -s nome.ddns.com.br -p tcp --dport 55001 -d 201.24.120.xx -j DNAT --to 192.168.0.3
iptables -t nat -A PREROUTING -i eth0 -s nome.ddns.com.br -p tcp --dport 55002 -d 201.24.120.xx -j DNAT --to 192.168.0.3
iptables -t nat -A PREROUTING -i eth0 -s nome.ddns.com.br -p tcp --dport 55003 -d 201.24.120.xx -j DNAT --to 192.168.0.3
...
Deixo meu script rodando de 5 em 5 minutos.
Porem, quando meu DNS cai e o firewall chama o script, ele vai chegar na primeira dessas 4 linhas e vai tentar encontrar o endereço. Vai demorar até dar timeout e passar para a segunda dessas 4 linhas.
Isso faz com que o meu script demore em media de 1 minuto para concluir a execução. Esse tempo é o suficiente para as demais conexões que estão estabelecidas porque existe permissão abaixo dessas regras caiam.
Alguem tem alguma forma de traduzir esses nomes antes. Assim, colocamos o nome traduzido em uma variavel e inserimos-a na regra?
Re: DNS Dinamicos (ddns & dyndns) no script firewall
Olá meu amigo,
Acho que você precisa tirar a resolução de dns do seu script de firewall...
Eu faria o seguinte, iria criar um script secundário que ficaria sendo executado na cron no intervalo que você achar melhor. Ele iria tentar a resolução de nome para este site, conseguindo iria verificar em um arquivo de texto qual teria sido a ultima resolução (caso seje a primeira somente iria atualizar ou criar o arquivo), caso seja diferente, atualizaria o arquivo e executaria o script de firewall (/etc/init.d/firewall restart).
No seu script de firewall você poderia criar uma rotina simples em que você faz a leitura deste arquivo atualizado pelo script que fica na cron para dentro de uma variável, e ai você evita ter que traduzir o nome quando executa o script e a velocidade de aplicar as regras será sempre a mesma! Basicamente é a sua ideia!! :-)
Eu faria desta forma! Espero que ajude!
Abraços