Usando DNSMasq para resolução de nome de host local

Usando DNSMasq para resolução de nome de host local

Estou trabalhando na criação de uma intranet doméstica para mim e meus colegas de quarto. Minha ideia é que seremos capazes de armazenar coisas como contas de serviços públicos anteriores em um local mais acessível do que uma gaveta da cozinha etc. De qualquer forma, tenho o Apache 2 rodando em um Raspberry Pi, na minha LAN, e se eu usar seu endereço IP, posso acessar as páginas veiculadas no Pi. Como estou fazendo este projeto mais para aprender sobre redes e para fornecer um serviço para meu apartamento, pensei que seria legal se minha rede pudesse fornecer resolução de nome de host para minha LAN. Então, em vez de apontar meu navegador para 192.168.1.151o endereço IP do Pi, eu poderia apontá-lo para oberon(seu nome de host) e visualizar as páginas da web servidas pelo Pi.

Agora eu sabia que não era a primeira pessoa a querer fazer isso, então comecei pesquisando no Google. Esta questão, também no Unix e Linux, me ajudou imensamente:Como tornar uma máquina acessível a partir da LAN usando seu nome de host. Neste ponto, tentei de tudo na resposta verificada. Pensei em usar o hostsarquivo, mas isso significaria que teria que dizer aos meus colegas de quarto para configurarem suas máquinas, o que não quero que eles façam. Tentei reservar uma concessão de DHCP para o Pi no meu roteador (um NETGEAR WNR1000v2 (também conhecido como N150)) e, embora a reserva funcionasse, a resolução do nome do host não funciona. Isso meio que me frustra porque eu disse ao meu roteador o IP do Pieseu nome de host, mas ainda não fornece essas informações aos clientes na minha LAN.

Como esses dois métodos não funcionaram, resolvi instalar dnsmasqno Pi. Parecia simples de configurar e ficaria feliz em aprender uma nova ferramenta. Eu instalei e está funcionando perfeitamente (ao que parece). Posso digusar nslookupos apelidos do Pi (que defini /etc/hostsem oberone homenet) e obter os resultados corretos. Posso fazer o mesmo com nomes da Internet yahoo.come obter respostas corretas porque configurei o Google 8.8.8.8e 8.8.4.4como servidores de backup em /etc/dnsmasq.conf. Veja isso:

me@oberon~$ dig oberon

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> oberon
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10787
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;oberon.                                IN      A

;; ANSWER SECTION:
oberon.                 0       IN      A       192.168.1.151

;; Query time: 10 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct  6 18:59:18 2013
;; MSG SIZE  rcvd: 40

Observe que is SERVER: 127.0.0.1está oberonprocurando seu próprio endereço IP. Isso é o que eu esperava ver. A saída é a mesma se eu fizer isso dig oberon @localhost. Por causa dessa saída, acho que dnsmasqestá funcionando bem. Então, para levar isso para o próximo nível, eu querotodosclientes em minha LAN possam digitar oberonem seus navegadores e serem levados à oberonpágina de índice de. Para isso, sei que preciso configurar meu roteador (desculpas se isso se desviar do território estritamente Unix e Linux).

Tenho um Netgear WNR1000v2 com o qual estou bastante familiarizado. Configurei o encaminhamento de porta para poder usar SSH no Pi e também vasculhei outras configurações. Eu sei que antes de iniciar este projeto, eu estava obtendo meus servidores DNS do meu ISP, mas agora quero usar esses servidores DNS principalmente, mas também 192.168.1.151como última verificação. Então mudei a configuração de DNS do meu roteador para o seguinte:

A nova configuração de DNS do meu roteador. Acredite em mim quando digo que as duas primeiras entradas são fornecidas pelo meu ISP

Então, com essa configuração, eu esperava poder fazer nslookup oberonna minha área de trabalho (Windows) e obter um resultado de 192.168.1.151. Mas isso não acontece. Isto é o que acontece:

C:\Users\me>nslookup oberon
Server:  UnKnown
Address:  fe80::226:f2ff:fefa:bea

*** UnKnown can't find oberon: Non-existent domain

A redefinição dnsflushingdo adaptador de rede na minha máquina Windows não muda nada.

Agora, aqui está o porquê de estar arrancando meus cabelos aqui:

C:\Users\me>nslookup oberon 192.168.1.151
Server:  oberon.lan
Address:  192.168.1.151

Name:    oberon
Address:  192.168.1.151

Claramente, dnsmasqestá funcionando bem. Se eu disser para minha caixa do Windows usar 192.168.1.151para resolver o nome oberon, está tudo bem (o .landomínio fazia parte da configuração do dnsmasq, então eu esperava vê-lo lá). Se eu pudesse fazer com que meu roteador informasse minha máquina Windows para usar 192.168.1.151quando fizer consultas DNS, eu estaria bem!

Parece-me que o problema está no meu roteador, mas simplesmente não consigo descobrir o que fazer além de alterar os servidores DNS para incluir 192.168.1.151como já fiz. Alguém pode me ajudar aqui? Tentarei fornecer quaisquer informações adicionais desejadas.

Responder1

Seu problema está no seu mal-entendido sobre a maneira como esses servidores DNS são usados. Não sei os detalhes exatos do método que o Windows usa para escolher qual servidor DNS consultar, mas aposto que é primário > secundário > terciário/sempre/. E mesmo que não fosse e fosse round-robin, você ainda consultará um servidor inútil 2 das 3 vezes.

O que acontecerá é que o servidor primário será consultado. Se o tempo expirar, o que pode levar um ou dois segundos, o próximo servidor será consultado. O DNS não é um sistema de "consenso", se um dos servidores remotos estiver sendo consultado, ele eventualmente descobrirá o resultado de que seu nome de host NÃO existe com autoridade, da perspectiva de um servidor DNS da Internet.

Você precisa do seu próprio DNS da LAN como servidor DNS primário. Os outros seriam servidores de backup adequados, mas eu consideraria abandonar isso completamente.

Observe também que seu DNS reverso (IP para pesquisa de nome) resolve para "hostname.lan", mas seus testes de resolução direta são apenas com o nome do host. Você também deve ter a resolução futura para hostname.lan configurada em algum lugar. Embora possa haver muitas pesquisas diretas de "nome para endereço" para um host, há uma expectativa de que haja uma pesquisa reversa do IP para um nome, que por sua vez tem um nome correspondente a esse registro IP. Nem sempre é crítico e às vezes apenas faz os arquivos de log reclamarem, mas algumas coisas são mais sensíveis a isso do que outras.

Além disso, não se esqueça de remover qualquer arquivo de hosts que você tenha colocado em prática depois de fazer tudo funcionar (não sei se isso é relevante para o dnsmasq, nunca o usei, tenho uma configuração semelhante, mas mais complicada, usando o nome ISC-BIND servidor, que você pode configurar o encaminhamento para outros servidores como você está usando, ou simplesmente usá-lo como um servidor DNS sem encaminhamento que faz a resolução completa do nome sozinho - que é o que eu configurei).

Escusado será dizer que, como você especulou inicialmente, você está muito longe de estar sozinho ao fazer essa configuração, quase todas as LANs corporativas razoavelmente desenvolvidas e muitas LANs domésticas superdesenvolvidas terão esse tipo de configuração em vigor.

Responder2

Talvez um pouco tarde, mas desabilitar o ipv6 no meu adaptador sem fio resolveu.

informação relacionada