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

9

Estou trabalhando na criação de uma intranet doméstica para mim e meus colegas de quarto. Minha idéia é que poderemos armazenar coisas como contas de serviços públicos passados em um lugar que seja mais acessível do que uma gaveta na cozinha etc. De qualquer forma, eu tenho o Apache 2 rodando em um Raspberry Pi, na minha LAN, e se eu usar seu endereço IP, eu posso acessar páginas sendo servidas no Pi. Como estou fazendo mais este projeto para aprender sobre rede como para fornecer um serviço para o meu apartamento, achei 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.151 , o endereço IP do Pi, eu poderia apontar para oberon (seu hostname) 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. Esta questão, também no Unix & Linux, me ajudou imensamente: Como tornar uma máquina acessível a partir da LAN usando seu nome de host . Neste ponto, tentei tudo na resposta verificada. Eu pensei em usar o arquivo hosts , mas isso significaria que eu teria que dizer aos meus colegas de quarto para configurar suas máquinas, o que eu não quero que eles tenham que fazer. Eu tentei reservar uma concessão de DHCP para o Pi no meu roteador (um NETGEAR WNR1000v2 (também conhecido como um N150)) e enquanto a reserva funcionou, resolução de nome de host não. Isso me frustra porque eu disse ao meu roteador o IP do Pi e seu nome de host, mas ele ainda não fornece essas informações para clientes em minha LAN.

Com esses dois métodos não funcionando, decidi instalar o dnsmasq no Pi. Parecia simples de configurar e ficaria feliz em aprender uma nova ferramenta. Eu instalei e tê-lo funcionando muito bem (parece). Eu posso dig ou nslookup os apelidos do Pi (que eu configurei em /etc/hosts to oberon e homenet ) e obter os resultados corretos. Eu posso fazer o mesmo para nomes de internet como yahoo.com e obter respostas corretas, pois configuro 8.8.8.8 e 8.8.4.4 do Google como servidores de backup em /etc/dnsmasq.conf . Veja isto:

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 SERVER é 127.0.0.1 : oberon está procurando seu próprio endereço IP em si mesmo. Isso é o que eu esperava ver. A saída é a mesma se eu fizer dig oberon @localhost . Por causa dessa saída, estou pensando que dnsmasq está funcionando bem. Então, para trazê-lo para o próximo nível, eu quero que todos os clientes em minha rede local possam digitar oberon em seu navegador e serem levados para a página de índice oberon . Para isso, sei que preciso configurar meu roteador (desculpas se isso se distanciar estritamente do território Unix e Linux).

Eu tenho um Netgear WNR1000v2 com o qual estou bastante familiarizado. Eu configurei o encaminhamento de porta para que eu possa usar o SSH no Pi, e também procurei outras configurações. Eu sei que antes de começar este projeto, eu estava recebendo meus servidores DNS do meu provedor, mas agora eu quero usar esses servidores DNS principalmente, mas também usar 192.168.1.151 como última verificação. Então eu mudei a configuração de DNS do meu roteador para o seguinte:

Portanto, com essa configuração, esperava poder fazer nslookup oberon na minha área de trabalho (Windows) e obter um resultado de 192.168.1.151 . Mas isso não acontece. Isso é 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 ou dnsflushing do adaptador de rede na minha máquina Windows não altera nada.

Agora, por que estou arrancando meu cabelo 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, dnsmasq está funcionando bem. Se eu disser à minha caixa do Windows para usar 192.168.1.151 para resolver o nome oberon , está tudo bem (o domínio .lan fazia parte da configuração de dnsmasq , então eu esperava vê-lo lá). Se eu conseguisse que meu roteador dissesse à minha máquina Windows para usar o 192.168.1.151 quando fizer consultas DNS, eu deveria ser bom!

Então, parece-me que o problema está no meu roteador, mas eu simplesmente não consigo descobrir o que fazer além de alterar os servidores DNS para incluir 192.168.1.151 como eu já tenho. Alguém pode me ajudar aqui? Tentarei fornecer qualquer informação adicional desejada.

    
por c.anna 07.10.2013 / 01:23

2 respostas

2

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

O que acontecerá é que o servidor principal será consultado. Se esse tempo expirar, o que pode ser um segundo ou dois, o próximo servidor será consultado. O DNS não é um sistema de "consenso", se um dos servidores remotos estiver sendo consultado, ele acabará descobrindo o resultado de que o seu nome de host AUTORIZAMENTE NÃO existe, de sua perspectiva como um servidor DNS da Internet.

Você precisa do seu próprio DNS da LAN como o servidor DNS primário. Os outros criariam servidores de backup adequados, mas eu consideraria apenas descartá-los completamente.

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

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

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

    
por 07.10.2013 / 16:05
1

Talvez um pouco atrasado, mas desativar o ipv6 no meu adaptador sem fio resolveu o problema.

    
por 21.10.2015 / 21:10