Controle o IP de origem das consultas DNS locais ao servidor local?

1

Eu tenho um servidor DNS local em execução no meu roteador Linux. Eu tenho configurado para permitir apenas solicitações da minha LAN (192.168.1.0/24). Eu também quero que o servidor seja capaz de consultar o DNS. Para esse fim, eu também permiti 127.0.0.1 como uma fonte.

O problema é que toda consulta que a caixa faz a si mesma tem seu IP de origem definido para meu IP externo. Eu confirmei isso com tcpdump ; quando o servidor se consulta em 127.0.0.1, um pacote chega na interface lo com o IP de destino 127.0.0.1, mas o IP de origem é o do meu ISP.

Usar dig -b não ajuda. O mesmo efeito exato ocorre.

Isso significa que, a menos que eu adicione explicitamente o IP do meu ISP aos IPs permitidos, a pesquisa de DNS não funcionará localmente. Como meu IP pode ser dinâmico, isso significa adicionar um intervalo inteiro de IPs ao servidor DNS. Isso obviamente não é um problema em máquinas na minha LAN, pois elas estão definindo seus IPs de origem corretamente. O problema é específico para consultas locais no servidor para si mesmo.

Eu quero ser capaz de dizer ao servidor para usar um endereço IP de origem explícito (não apenas uma interface de origem necessariamente) para fazer consultas para si mesmo. Isso pode ser feito?

    
por fdmillion 06.11.2016 / 19:09

2 respostas

0

Para definir uma consulta de origem diferente da interface principal do servidor, use as opções query-source in BIND.

A configuração é tal que apenas as consultas iniciadas pelo servidor / daemon estão saindo com esse IP.

Tenha em atenção que se for um endereço privado interno / RFC 1918 , terá que NAT quando for para o exterior.

De acordo com o meu servidor, em /etc/bind/named.conf.options :

options {
    query-source address X.X.X.X;
}

em que X.X.X.X é o seu endereço IP.

Outra opção é usar um serviço DNS dinâmico, registrar seu endereço IP e fazer as regras com base no nome DNS. Concedido, há o pequeno inconveniente de ter que fazer um script para ser colocado como um gancho DHCP para reaplicar as regras sempre que o endereço IP for alterado.

    
por 06.11.2016 / 22:25
0

O comentário de @ roaima me levou na direção certa.

Minha regra de POSTROUTING do iptables é assim:

-t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to <my public IP>

Basta adicionar uma regra acima para excluir o IP do próprio roteador e corrigir tudo:

-t nat -I POSTROUTING 1 -s 192.168.1.1 -j ACCEPT

@roaima se você quiser postar como resposta eu vou te dar um voto positivo.

    
por 03.12.2016 / 18:12

Tags