Estoy aprendiendo cómo Windows hace la resolución de nombres y necesito saber cómo lo hace Android para que una aplicación funcione en mi portátil Windows y desde mi teléfono Android.
Tomando prestado de un post en superusuario.com El método de resolución normal en Windows es la siguiente:
- El cliente comprueba si el nombre consultado es el suyo.
- A continuación, el cliente busca en un archivo local de Hosts, una lista de direcciones IP y nombres almacenada en el ordenador local.
- Se consulta a los servidores del Sistema de Nombres de Dominio (DNS).
- Si el nombre sigue sin resolverse, se utiliza la secuencia de resolución de nombres NetBIOS como copia de seguridad. Este orden se puede cambiar configurando el tipo de nodo NetBIOS del cliente.
Utilizo dnsmasq
para proporcionar resolución DNS local y poder asignar mis propios nombres de host a direcciones IP de LAN locales. Esto también me permite ver, en el dnsmasq
archivo de registro, la consulta DNS que va del cliente al servidor DNS. Mientras probaba el sitio web desde mi teléfono pude jurar usando la dirección URL http://mywebsite
en un navegador Chrome en el teléfono estaba cargando el sitio web y el dnsmasq
registro mostró sólo que el nombre no cualificado - mywebsite
- resolviendo a la dirección IP local deseada en la que se encuentra el servidor web.
Sin embargo eso fue hace unos días, ahora el dnsmasq
log siempre muestra que el sufijo DNS del servidor DHCP [home] ha sido añadido. Así que veo mywebsite.home
en el dnsmasq
log aunque he utilizado la dirección URL http://mywebsite
en el navegador Chrome de los teléfonos. No he cambiado nada con el teléfono. Todavía está configurado para obtener su dirección IP a través de DHCP, en la práctica nunca cambia.
Así que mis preguntas son:
- ¿Cómo resuelve el sistema operativo Android los nombres de dominio en direcciones IP - qué cosas intenta y en qué orden?
- Cualquier información sobre por qué Android parecía estar resolviendo el nombre de host no cualificado en mi navegador originalmente sin ningún sufijo DNS que se añade. Pero ahora el
[home]
siempre se añade el sufijo tal y como se indica en la etiquetadnsmasq
archivo de registro.
Actualización 1
Después de algunas pruebas más he vuelto a ver el escenario en el que la página web http://mymovies
se carga desde el teléfono Android pero el dnsmasq
aparece para mostrar la resolución de nombres que ocurre en un nombre de dominio no cualificado (nombre de host desnudo: mymovies
).
En x
son la dirección IP pública de mi router.
¿Puede alguien explicar qué dnsmasq
está haciendo aquí?
A partir de las 02:07:22 parece que inicialmente intenta resolver el nombre mymovies.home
. Esto tiene sentido porque la IP del teléfono es asignada dinámicamente por el servidor DHCP y puedo ver en mi portátil que el servidor DHCP envía el sufijo DNS [home]
como el sufijo DNS específico de la conexión, así que supongo que debe estar haciendo lo mismo con el teléfono.
La razón por la que falla aquí es porque no tengo una entrada para mymovies.home
en dnsmasq.conf
- Lo he comentado. Tengo una entrada de dirección para mymovies
en dnsmasq.conf
y parece ser por eso que puede resolver mymovies
a una dirección IP.
¿Es esta una diferencia de resolución de nombres en Android comparado con Windows - que eventualmente el sistema operativo Android intentará resolver un nombre de dominio no cualificado (nombre de host desnudo) a una dirección IP?