Problema con los host name

Hi folks,

estoy tratando de programar mis cacharros ESPx por OTA, pero tengo un problema, el host name.

Si me voy al router (ZTE F680 de Pepephone y con el CGNAT quitado) me aparecen los hostnames sin problemas. Pero cuando hago un nmap -sP 192.168.1.0/24, solo me sale las ip’s. Hubo un tiempo, donde si que me salían los hostname sin problemas, pero ya no ¿Alguien me puede indicar por donde meterle mano?

PD: No se porqué, pero los host name de los móviles nunca salen, ni siquiera en el router :thinking:

Pues no entiendo nada de la pregunta :sweat:

El nombre de host es un artificio para no usar IP. Un nombre suele ser más fácil de recordar que una ristra de números. Además que así aislamos de cambios en la infraestructura (por ejemplo, podemos cambiar las IPs por debajo y el cambio sería transparente ya que el hostname se mantiene)

Cuando dices que si me voy al router si ves los hostnames ¿a qué te refieres? ¿usando una shell en el router o desde alguna UI que tiene?

Cuando dices que nmap no lo muestra ¿te refieres a un nmap lanzado desde tu PC o desde una shell del router?

Si tu equipo es un Linux para la resolución de nombre usará la configuración que hayas indicado en /etc/nsswitch.conf
Lo habitual es consultar primero el archivo local /etc/hosts y con menor prioridad una consulta DNS (siguiendo la configuración indicada en /etc/resolv.conf) , pero se pueden indicar otros mecanismos.

Por tanto, con una configuración básica, si no tienes mapeados los nombres de los hosts en /etc/hosts con sus correspodientes IPs o tienes un servidor DNS configurado en tu red, es lógico que no te aparezcan nombres al hacer un nmap (o cualquier otra operación de red) en tu Linux. Los routers suelen tener un servidor DHCP para asignar una IP dinámica a los equipos que conectas, pero no me suenan que tengan nada para asignar un nombre de host ni mucho menos tener un servidor DNS desde el que poder resolver nombres/IPs .

Si que suelen tener una asignación estática para cuando quieres que un mismo dispositivo siempre tenga la misma IP (así siempre puedes llegar al equipo usando la misma IP y no tener que mirar cuál ha usado cada vez) , pero eso no quiere decir que el archivo /etc/hosts de tu equipo Linux tenga esa configuración. Manualmente puedes hacerlo, creando la entrada de la IP estática, por ejemplo, para tu móvil en el router y añadiendo una entrada en el /etc/host con la IP y el nombre que quieras. Esta entrada en el /etc/host la tendrías que dar de alta en todos los equipos que quieras que resuelvan por nombre. Obviamente es una opción inmantenible en cuanto tienes varios equipo y , por eso, se suele usar DNS u otros mecanismos.

Espero que te sirva de ayuda pero, como indicaba al principio, no tengo muy claro lo que preguntabas exactamente.

Buenas @sebastian.blanes

Accedo al menu web del router, y miro los dispositivos conectados. Normalmente me salen tanto la IP como su hostname (excepto los móviles Android, que el hostname no aparece).

En mi PC con Linux (Elementay OS - derivado de Ubuntu) en una shell ejecuto nmap -sP 192.168.1.0/24 y antes a parte de las ip’s me aparecían hostname. Ahora, no se porqué, no me salen todas las ip’s (solo algunas) y los hostnames ni uno.

Pues lo único que se me ocurre es que el F680 traiga un servidor DNS. Tendrás que bichear por la configuración. Puede ser que antes cuando usabas DHCP te asignaba el DNS del router y ese te resolvía bien los nombre de los equipos que se conectaban. Si ha cambiado la configuración del router y ya no te configura bien el DNS al resolver el DHCP o has cambiado a mano las DNS del Linux (para usar las de Google u otras) , pues te habrá dejado de resolver con el DNS que trae el router

@sebastian.blanes no he tocado nada, un día de pronto ya no aparecían los hostname con el nmap :sweat_smile:

Mira esto es lo que sale en el DHCP del router

Si te fijas incluso hay IP’s que no les saca el hostname (2 de ellas al menos son móviles Android).

En cuanto a la parte de DNS

Eso es todo lo que deja configurar, y ya digo, no he tocado nada.

La tercera captura parece la interesante. Se supone que en esa pantalla decides como administrador que nombre de host asignas a cada IP. No conozco de ningún mecanismo para que cuando un equipo, un móvil por ejemplo, se conecta al router con una IP estática o la pide dinamicamente por DHCP para que se le asigne un nombre. Tendrás que darlos de alta a mano.

Por otro lado, ese servicio de DNS lo tendrías que configurar en tu Linux para que lo usase

Tu fichero /etc/nsswitch.conf debería contener una línea con
hosts: files dns

Y el /etc/resolv.conf
nameserver la-ip-del-router
search home

No sé como conectas el Linux al router, estaría bien ver la salida de “ifconfig -a” (si, ya sé que ifconfig ya no se usa pero no conozco la sintaxis del nuevo comando ip) eliminando la información sensible que no quieras mostrar.

Si ejecutas nslookup y en el “prompt” indicas google.com o rpi3bp1 ¿qué te sale y te indica que usa como Server?

Otra cosa que veo en la primera captura es que no tienes activada la opción “Assign DNS” en el DHCP ¿puede ser eso? Que cuando el Linux se conecta al router y pide por DHCP su IP, le dan la IP, pero no la información del DNS (así que se usa la configuración estática que tengas en el Linux)

Efectivamente, parece necesario: https://www.sourcerebels.com/blog/2016/10/configurar-dns-server-en-router-jaztell-zte-f680/

En principio el hostname de tu movil Android lo pones tu en Configuracion -> Sistema -> Nombre del equipo.

Antes funcionaba, y no he tocado nunca nada en Linux. A parte que quiero que rule en todos los ordenadores de la casa, no solo en mi Linux.

Si hago un cat me escupe

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat systemd
group:          compat systemd
shadow:         compat
gshadow:        files

hosts:          files mdns4_minimal [NOTFOUND=return] dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Este me da

# Generated by NetworkManager
search Home
nameserver 127.0.0.53

Por WiFi

Me da

Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
Name:	google.com
Address: 172.217.168.174
Name:	google.com
Address: 2a00:1450:4003:803::200e

Prueba algo así:

$ nslookup

rpi3bp1
Server: 127.0.0.53
Address: 127.0.0.53#53

Esto debería dar un error ya que seguramente el DNS que tienes configurado por ElementaryOS (parece algo proporcionado por systemd) no conoce a la Raspberry

Consultado con el dominio tampoco debería ir

$ nslookup

rpi3bp1.home
Server: 127.0.0.53
Address: 127.0.0.53#53

Pero si usas el DNS del router (introduce en el prompt el server y luego el host que quieres consultar) te debería ir y debería salirte algo así ¿no?

$ nslookup

server 192.168.1.1
Default server: 192.168.1.1
Address: 192.168.1.1#53
rpi3bp1.home
Server: 192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
Name: rpi3bp1.home
Address: 192.168.1.139

Si te funciona con esta última consulta , creo que activando en el router el flag “Assign DNS” y reconectando te debería funcionar. La manera de comprobarlo es consultar con nslookup y ver que consulta a 192.168.1.1 y no a 127.0.0.53

Si lo que quieres es configurarlo usando el DNS que lleva el ElementaryOS en 127.0.0.53 o con el mdns4-minimal que también tienes configurado, habría que llamar a la caballería porque no conozco esas configuraciones tan modernas :wink:

1 me gusta

Este tema se cerró automáticamente 10 días después del último post. No se permiten nuevas respuestas.