En casa tengo una red local con varios PCs y algunas máquinas virtuales, principalmente con Windows y Linux. En el CPE tengo configurado DHCP para asignación de IPs. Pura comodidad.
Para poder conectarme de una máquina a otra conociendo sólo el hostname es necesario que haya una resolución del hostname. En mi caso, me encontré con el siguiente escenario:
- Máquina Windows resuelve hostname de otra máquina Windows.
- Máquina Windows no resuelve hostname de una máquina Linux.
- Máquina Linux no resuelve hostname de una máquina Windows.
- Máquina Linux no resuelve hostname de una máquina Linux.
Para poder dar resolución de hostnames en la red, tuve que hacer lo siguiente:
1. Cómo hacer que máquina Windows resuelva hostname de máquina Linux (Ubuntu)
En este caso la solución es instalar el paquete winbind
en la máquina Linux (destino), para que utilice el protocolo NetBIOS de Windows y publique su resolución de nombres.
sudo apt-get install winbind
Una vez instalado, el fichero /etc/nsswitch.conf
habrá añadido la palabra wins
en la entrada de hosts
. El fichero tendrá una pinta así:
# /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 group: compat shadow: compat hosts: files wins dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
Con esto, ya deberías de poder hacer ping a la máquina Linux desde una máquina Windows y resolver correctamente su hostname.
2. Cómo hacer que máquina Linux (Ubuntu) resuelva hostname de máquina Linux (Ubuntu)
Para este tema tuve que instalar en ambas máquinas Linux el paquete avahi-daemon
. Con este paquete, ya se resuelven los hostnames añadiendo el sufijo “.local”.
Esto probablemente te modificará el fichero /etc/nsswitch.conf
de ambas máquinas y dejará la línea de hosts así:
hosts: files wins mdns4_minimal [NOTFOUND=return] dns mdns4
Con esto, ya debes de poder resolver nombres entre máquinas Linux con el hostname estilo “.local”:
[23:04:02] yvoictra|trinity:~$ ping tesla.local PING tesla.local (192.168.1.111) 56(84) bytes of data. 64 bytes from tesla.local (192.168.1.111): icmp_seq=1 ttl=64 time=0.455 ms 64 bytes from tesla.local (192.168.1.111): icmp_seq=2 ttl=64 time=0.524 ms 64 bytes from tesla.local (192.168.1.111): icmp_seq=3 ttl=64 time=0.489 ms 64 bytes from tesla.local (192.168.1.111): icmp_seq=4 ttl=64 time=0.499 ms
Y ahora queda poder resolver máquinas Windows desde máquinas Linux. De momento no he encontrado la manera de hacerlo… pero seguiré investigando. Cuando lo consiga actualizaré el post (Si alguien me echa un cable os lo agradeceré…).
En resumen, el tema en mi red local ha quedado:
- Máquina Windows resuelve hostname de otra máquina Windows.
- Máquina Windows resuelve hostname de una máquina Linux.
- Máquina Linux no resuelve hostname de una máquina Windows.
- Máquina Linux resuelve hostname de una máquina Linux.
¡Y esto es todo amigos!
2 comentarios
Hola,
Gracias por el artículo, he conseguido que se resuelvan los nombres de los equipos entre si.
Supongo que a estas alturas ya habrás resuelto el nombre de windows desde linux, de no ser así échale un vistazo a este enlace https://peterlaszlo.wordpress.com/2013/06/27/bonjour-avahi-rpi-windows/
Saludos y gracias de nuevo.
Gracias a ti, un placer que te haya servido.
Saludos!