Posso configurar o dnsmasq para usar / etc / hosts para resolver o destino de um CNAME?

1

Existe alguma maneira de configurar o dnsmasq para que, quando receber um registro CNAME, se o destino estiver em / etc / hosts, ele substitua o que o servidor DNS público diz sobre esse destino e use / etc / hosts?

Essa é a pergunta, mas se você estiver interessado no plano de fundo e nos detalhes, continue lendo.

Detalhes

Eu tenho um nome de domínio, vamos chamá-lo de example.com . Eu configurei o domínio para minha rede doméstica como philadelphia.example.com e, assim, os hosts podem estar em host1.philadelphia.example.com e host2.philadelphia.example.com . Eu tenho DNS split-horizon configurado para que esses nomes funcionem tanto atrás do NAT quanto na Internet pública.

Por conveniência, quero acessar alguns deles como simplesmente host1.example.com , etc. (sem o nome da cidade). Eu criei registros públicos CNAME para estes. Isso funciona bem em toda a Internet, mas não atrás do meu roteador.

Meu roteador (um EdgeRouter Lite, para o registro) usa o dnsmasq como seu servidor DNS. Ele adiciona automaticamente os registros de host1 e host1.philadelphia.example.com a / etc / hosts quando emite a concessão DCHP, mas não host1.example.com , pois example.com não é seu domínio. Assim, quando recebe uma solicitação para host1.example.com , ela encaminha para o DNS público.

O servidor DNS público localiza os seguintes registros e os retorna:

host1.example.com.              3600    IN  CNAME   host1.philadelphia.example.com.
host1.philadelphia.example.com. 3600    IN  A       <Router's external IP>

Na verdade, não tenho certeza se o servidor DNS público envia o registro A automaticamente ou se o dnsmasq emite uma segunda solicitação para ele. Em qualquer caso, o dnsmasq toma a palavra do servidor DNS público e retorna diligentemente o endereço IP público do roteador para o cliente original por trás do roteador, não o endereço IP privado do host1 de / etc / hosts.

Como teste adicional, tentei criar um registro CNAME para privatehost.example.com - > privatehost.philadelphia.example.com sem criar um registro público para ele, mas meu roteador tem uma entrada para privatehost.philadelphia.example.com em / etc / hosts. Nesse caso, o servidor DNS público responde com o registro CNAME e depois com NXDOMAIN quando não consegue encontrar nada para privatehost.philadelphia.example.com . Mesmo assim, o dnsmasq pega a palavra do servidor e retorna NXDOMAIN para o cliente, mesmo que tenha uma entrada para privatehost.philadelphia.example.com .

Existe uma maneira de dizer ao dnsmasq para tentar seu próprio / etc / hosts novamente depois de buscar o CNAME, mesmo que ele tenha que ir ao DNS público para obtê-lo?

    
por Nick 24.08.2018 / 20:42

0 respostas