Estoy trabajando para configurar una intranet doméstica para mí y mis compañeros de cuarto. Mi idea es que podamos almacenar cosas como facturas de servicios públicos anteriores en un lugar que sea más accesible que un cajón en la cocina, etc. De todos modos, tengo Apache 2 ejecutándose en una Raspberry Pi, en mi LAN, y si uso su dirección IP, puedo acceder a las páginas que se sirven en el Pi. Como estoy haciendo este proyecto más para aprender sobre la creación de redes y proporcionar un servicio a mi departamento, pensé que sería genial si mi red pudiera proporcionar una resolución de nombre de host para mi LAN. Entonces, en lugar de apuntar mi navegador a 192.168.1.151
la dirección IP del Pi, podría apuntarlo oberon
(su nombre de host) y ver las páginas web que sirve el Pi.
Ahora sabía que no era la primera persona en querer hacer esto, así que comencé buscando en Google. Esta pregunta, también en Unix y Linux, me ha ayudado inmensamente: cómo hacer que una máquina sea accesible desde la LAN utilizando su nombre de host . En este punto, he intentado todo en la respuesta verificada. Pensé en usar el hosts
archivo, pero eso significaría que tendría que decirles a mis compañeros de cuarto que configuren sus máquinas, lo que no quiero que tengan que hacer. Traté de reservar un contrato de arrendamiento de DHCP para el Pi en mi enrutador (un NETGEAR WNR1000v2 (también conocido como N150)), y aunque la reserva funcionó, la resolución del nombre de host no funciona. Esto me frustra porque le dije a mi enrutador la IP del Pi y su nombre de host, pero aún no proporciona esta información a los clientes en mi LAN.
Con estos dos métodos que no funcionan, decidí instalar dnsmasq
en Pi. Parecía simple de configurar y estaría encantado de aprender una nueva herramienta. Lo instalé y lo tengo funcionando bien (parece). Que pueda dig
o nslookup
apodos del Pi (que yo pongo en /etc/hosts
a oberon
y homenet
) y obtener los resultados correctos. Puedo hacer lo mismo para nombres de Internet como yahoo.com
y obtener respuestas correctas porque configuré Google 8.8.8.8
y 8.8.4.4
como servidores de respaldo /etc/dnsmasq.conf
. Mira esto:
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
Tenga en cuenta que SERVER
es 127.0.0.1
: oberon
está buscando su propia dirección IP en sí mismo. Esto es lo que esperaba ver. La salida es la misma si lo hago dig oberon @localhost
. Debido a este resultado, creo que dnsmasq
está funcionando bien. Entonces, para llevarlo al siguiente nivel, quiero que todos los clientes en mi LAN puedan escribir oberon
en su navegador y acceder a oberon
la página de índice. Por esto sé que necesito configurar mi enrutador (disculpas si esto se aleja estrictamente del territorio de Unix y Linux).
Tengo un Netgear WNR1000v2 con el que estoy bastante familiarizado. He configurado el reenvío de puertos para que pueda SSH en el Pi, y también he hurgado en otras configuraciones. Sé que antes de comenzar este proyecto, estaba obteniendo mis servidores DNS de mi ISP, pero ahora quiero usar esos servidores DNS principalmente, pero también los uso 192.168.1.151
como último control. Así que cambié la configuración de DNS de mi enrutador a lo siguiente:
Entonces, con esta configuración, esperaba poder hacerlo nslookup oberon
en mi escritorio (Windows) y obtener un resultado 192.168.1.151
. Pero esto no sucede. Esto es lo que sucede:
C:\Users\me>nslookup oberon
Server: UnKnown
Address: fe80::226:f2ff:fefa:bea
*** UnKnown can't find oberon: Non-existent domain
Restablecer o dnsflushing
el adaptador de red en mi máquina Windows no cambia nada.
Ahora he aquí por qué me estoy arrancando el pelo:
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 bien. Si le digo a mi cuadro de Windows que use 192.168.1.151
para resolver el nombre oberon
, todo está bien (el .lan
dominio era parte de la configuración de dnsmasq
, por lo que esperaba verlo allí). Si pudiera hacer que mi enrutador le diga a mi máquina Windows que use 192.168.1.151
cuando realiza consultas DNS, ¡sería bueno!
Entonces, me parece que el problema está en mi enrutador, pero no puedo entender qué hacer más allá de cambiar los servidores DNS para incluir 192.168.1.151
como ya lo he hecho. ¿Me puede ayudar alguien? Intentaré proporcionar cualquier información adicional que desee.
fuente
Respuestas:
Su problema radica en su incomprensión de la forma en que se usan esos servidores DNS, no sé los detalles exactos del método que Windows usa para elegir qué servidor DNS consultar, pero apuesto a que es primario> secundario> terciario / siempre /. E incluso si no fuera así y fuera un round-robin, todavía va a consultar un servidor inútil 2 de las 3 veces.
Lo que sucederá es que se consultará al servidor primario. Si se agota el tiempo, que puede ser uno o dos segundos, se consultará el siguiente servidor. DNS no es un sistema de "consenso", si se consulta uno de los servidores remotos, eventualmente descubrirá el resultado de que su nombre de host NO existe con autoridad, desde su perspectiva como un servidor DNS de Internet.
Necesita su propia LAN dns como servidor DNS principal. Los otros harían servidores de respaldo adecuados, pero consideraría simplemente dejarlo por completo.
También es de notar que su DNS inverso (IP para buscar nombres) se resuelve en "hostname.lan", pero sus pruebas de resolución directa se realizan solo con el nombre de host. También debe tener una resolución de reenvío para hostname.lan configurado en algún lugar. Si bien puede haber muchas búsquedas directas de "nombre a dirección" para un host, existe la expectativa de que haya una búsqueda inversa de la IP a un nombre, que a su vez tiene un nombre coincidente con ese registro de IP. No siempre es crítico y solo hace que los archivos de registro se quejen a veces, pero algunas cosas son más sensibles a esto que otras.
Además, no se olvide de eliminar el conjunto de archivos de hosts que haya implementado una vez que todo funcione (no sé si eso es relevante para dnsmasq, nunca lo usé, tengo una configuración similar pero más complicada usando el nombre ISC-BIND) servidor, que puede configurar el reenvío a otros servidores como el que está utilizando, o simplemente usarlo como un servidor DNS sin reenvío que realiza la resolución de nombre completo por sí mismo, que es lo que he configurado).
No es necesario decir que, como especuló por primera vez, está muy lejos de estar solo al hacer esta configuración, casi todas las LAN corporativas razonablemente desarrolladas y una gran cantidad de LAN domésticas sobredesarrolladas tendrán este tipo de configuración en su lugar.
fuente
nslookup oberon
todavía no funciona. Una cosa que no mencioné en el texto de mi publicación original fue que cuandonslookup
falla, dice que el servidor que usó era unafe80
dirección IPv6, que sé que es una dirección de enlace local reservada. Pero no sé qué significa eso para DNS. ¿Mi cuadro de Windows se consulta a sí mismo?dnsflush
No cambia este comportamiento..lan
dominio, configurédnsmasq
para expandir automáticamente los nombres de host simples para agregar.lan
. Corrernslookup oberon.lan 192.168.1.151
devuelve el resultado esperado deName: oberon.lan Address: 192.168.1.151
ipconfig /all
se muestre el servidor dns correcto que se está utilizando, si es correcto, es posible que deba descargarlo. Pero no puedo pensar en otra cosa, debería funcionar.Tal vez un poco tarde, pero deshabilitar ipv6 en mi adaptador inalámbrico hizo el truco.
fuente