Aquí están los detalles de la máquina a la que quiero acceder usando su nombre de host:
$ hostname
hostname
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 hostname.company.local hostname
Es una instalación predeterminada de Debian 6 (Squeeze), por lo que todavía no toqué nada.
Esto es lo que obtengo de una máquina (que ejecuta Debian Unstable) que intenta acceder a la máquina anterior:
$ ping hostname
ping: unknown host hostname
$ ping hostname.company.local
ping: unknown host hostname.company.local
$ cat /etc/resolv.conf
nameserver 192.168.2.21
nameserver 192.168.2.51
search company.local
networking
tshepang
fuente
fuente
ping
) o en una máquina que el cliente consulta. ¿Cuál es el sistema operativo en el cliente? ¿Cuál es su configuración de DNS?ping
y/etc/hosts
no el DNS de todos modos?Respuestas:
En Internet, incluidas las redes locales, las máquinas se llaman entre sí por direcciones IP . Para acceder a la máquina B desde la máquina A utilizando el nombre de la máquina B, la máquina A debe tener alguna forma de asignar el nombre de B a su dirección IP. Hay tres formas de declarar nombres de máquinas en A:
unix.stackexchange.com
.Hay muchas maneras en que estos pueden funcionar en la práctica; Es imposible cubrirlos a todos. En esta respuesta, describiré algunas situaciones comunes.
Archivo de hosts
El método de archivo de hosts tiene la ventaja de que no requiere ningún método especial. Puede ser engorroso si tiene varias máquinas, porque debe actualizar cada máquina cuando cambia el nombre de una máquina. No es adecuado si la dirección IP de B se asigna dinámicamente (de modo que obtenga una diferente cada vez que se conecte a la red).
Un archivo de hosts es una lista simple de líneas que asignan nombres a direcciones IP. Se parece a esto:
En sistemas unix, el archivo hosts es
/etc/hosts
. En Windows, esc:\windows\system32\drivers\etc\hosts
. Casi todos los sistemas operativos que puede conectar a Internet tienen un archivo similar; Wikipedia tiene una lista .Para agregar una entrada para B en el archivo de hosts de A:
Determine la dirección IP de B. En B, ejecute el comando
ifconfig
(si no encuentra el comando, intente/sbin/ifconfig
). La salida contendrá líneas como esta:En este ejemplo, la dirección IP de B es 10.3.1.42. Si hay varias
inet addr:
líneas, elija la que corresponda a su tarjeta de red, nunca lalo
entrada o un túnel o entrada virtual./etc/hosts
como superusuario; vea ¿Cómo ejecuto un comando como administrador del sistema (root) ?DHCP + DNS en redes domésticas o de oficinas pequeñas
Este método es, con mucho, el más simple si tiene el equipo necesario. Solo necesita configurar un dispositivo, y todas sus computadoras sabrán los nombres de cada uno. Este método asume que sus computadoras obtienen sus direcciones IP a través de DHCP , que es un método para que las computadoras recuperen automáticamente una dirección IP cuando se conectan a la red. Si no sabe qué es DHCP, probablemente lo sepan.
Si su red tiene un enrutador doméstico , es el mejor lugar para configurar nombres para máquinas conectadas a ese enrutador. Primero, necesita averiguar la dirección MAC de B. Cada dispositivo de red tiene una dirección MAC única. En B, ejecute el comando
ifconfig -a
(si no se encuentra el comando, intente/sbin/ifconfig -a
). La salida contendrá líneas como esta:En este ejemplo, la dirección MAC es
01:23:45:67:89:ab
. Debe elegir la línea HWaddr que corresponde al puerto de red que está conectado al enrutador a través de un cable (o la tarjeta wifi si está conectado a través de wifi). Si tiene varias entradas y no sabe cuál es cuál, conecte el cable y vea qué dispositivo de red recibe una dirección IP (inet addr
línea justo debajo).Ahora, en la interfaz web de su enrutador, busque una configuración como "DHCP". El nombre y la ubicación de la configuración dependen completamente del modelo de enrutador, pero la mayoría tiene un conjunto similar de configuraciones básicas. Esto es lo que parece en un firmware de tomate :
Ingrese la dirección MAC, una dirección IP y el nombre deseado. Puede elegir cualquier dirección IP en el rango de direcciones de su red local. La mayoría de los enrutadores domésticos están preconfigurados para un rango de direcciones del formulario 192.168. x . y o 10. x . y . z . Por ejemplo, en el enrutador de tomate que se muestra arriba, en la pestaña "Red", hay una configuración de "dirección IP de enrutador" con el valor 10.3.0.1 y una configuración de "máscara de subred" con el valor 255.255.255.0, lo que significa que las computadoras en la red local debe tener una dirección del formulario 10.3.0. z . También hay un rango de direcciones para direcciones DHCP asignadas automáticamente (10.3.0.129–10.3.0.254); para su dirección DHCP asignada manualmente, elija una que no esté en este rango.
Ahora conecte B a la red, y debería obtener la dirección IP que especificó y será accesible por el nombre especificado desde cualquier máquina en la red.
Crea tu propio servidor DNS con Dnsmasq
Si no tiene un enrutador doméstico capaz, puede configurar la misma funcionalidad en cualquier máquina Linux. Explicaré cómo usar Dnsmasq para configurar DNS . Hay muchos otros programas similares; Elegí Dnsmasq porque es fácil de configurar y liviano (es lo que usa el enrutador de tomate ilustrado anteriormente, por ejemplo). Dnsmasq está disponible en la mayoría de las distribuciones de Linux y BSD para PC, servidores y equipos de red.
Elija una computadora que siempre esté encendida, que tenga una dirección IP estática y que ejecute algún tipo de Linux o BSD; vamos a llamarlo S (para servidor). En S, instale el
dnsmasq
paquete (si aún no está allí). A continuación supondré que el archivo de configuración es/etc/dnsmasq.conf
; la ubicación puede variar en alguna distribución. Ahora necesitas hacer varias cosas./etc/hosts
(consulte la sección "Archivo de hosts" más arriba) y asegurarse de que/etc/dnsmasq.conf
no tenga lano-hosts
directiva sin comentarios. (Las líneas que comienzan con a#
están comentadas). Puede poner los nombres en un archivo diferente; si lo haces, pon una líneaaddn-hosts=/path/to/hosts/file
adentro/etc/dnsmasq.conf
.Dígale a Dnsmasq cómo obtener direcciones IP para nombres de máquinas en Internet.
resolvconf
paquete. En los casos más comunes, todo saldrá de la caja.Si su administrador de red o su ISP le dieron las direcciones de los servidores DNS, ingréselas
/etc/dnsmasq.conf
, por ejemplo:Si no sabe cuáles son sus configuraciones DNS actuales, busque en el archivo
/etc/resolv.conf
. Si ve una línea comonameserver 8.8.8.8
, ponga una líneaserver=8.8.8.8
adentro/etc/dnsmasq.conf
. Después de haber cambiado/etc/dnsmasq.conf
, reinicie Dnsmasq. El comando para hacerlo depende de la distribución; Las posibilidades típicas incluyenrestart dnsmasq
o/etc/init.d/dnsmasq restart
./etc/resolv.conf
(como raíz), elimine cadanameserver
línea y colóquelo en sunameserver 127.0.0.1
lugar./etc/resolv.conf
puede ser subóptimo si instaló elresolvconf
paquete con la red en funcionamiento. Asegúrese de que los archivosbase
,head
ytail
en el/etc/resolvconf/resolv.conf.d/
directorio no contengan ningunanameserver
entrada, luego ejecuteresolvconf -u
(como root)./etc/resolv.conf
y reemplace todas lasnameserver
líneas con una solanameserver 10.3.0.2
donde 10.3.0.2 es la dirección IP de S (vea arriba para saber cómo encontrar la dirección IP de S).También puede usar Dnsmasq como un servidor DHCP , para que las máquinas puedan obtener la dirección correspondiente a su nombre automáticamente. Esto está más allá del alcance de esta respuesta; consulte la documentación de Dnsmasq (no es difícil). Tenga en cuenta que solo puede haber un único servidor DHCP en una red local determinada (la definición exacta de red local está más allá del alcance de esta respuesta).
Nombres en Internet global
Hasta ahora, he asumido una red local. ¿Qué pasa si quieres darle un nombre a una máquina que está en un rincón diferente del mundo? Todavía puede usar cualquiera de las técnicas anteriores, excepto que las partes que involucran DHCP solo son aplicables dentro de una red local. Alternativamente, si sus máquinas tienen direcciones IP públicas, puede registrar su propio nombre público para ellas. (También puede asignar una dirección IP privada a un nombre público; es menos común y menos útil, pero no hay dificultad técnica).
Obteniendo su propio nombre de dominio
Puede obtener su propio nombre de dominio y asignar direcciones IP a los nombres de host dentro de este dominio. Debe registrar el nombre de dominio con un proveedor de nombres de dominio; esto generalmente cuesta $ 10– $ 15 / año (para los dominios más baratos). Use la interfaz web de su proveedor de nombres de dominio para asignar direcciones a los nombres de host.
DNS Dinámico
Si sus máquinas tienen una dirección IP dinámica, puede usar el protocolo DNS dinámico para actualizar la dirección IP asociada al nombre de la máquina cuando la dirección cambie. No todos los proveedores de nombres de dominio admiten DNS dinámico, así que compre antes de comprar. Para uso personal, No-IP proporciona un servicio DNS dinámico gratuito, si utiliza sus propios dominios (por ejemplo
example.ddns.net
).fuente
Use DNS de multidifusión (mDNS). Este es un protocolo de configuración cero que funciona en subredes LAN. No se requiere servidor. Utiliza el
.local
TLD (que es lo que ya usa).Porque estás preguntando, todo lo demás parece excesivo. Si no fuera así, entonces probablemente no estarías preguntando.
fuente
avahi
paquete (s). Puede consultar su red a través de,avahi-browse -alr
por ejemplo.y
fuente
service restart dhcpd
). La segunda parte se haría en el cliente, y en la mayoría de las distribuciones ahora debería ejecutarse comoservice networking restart
.Las computadoras no solo saben mágicamente qué nombres de host pertenecen a los destinatarios de IP. Incluso en localhost, hay algún tipo de búsqueda involucrada.
Deberá configurar sus otros sistemas para utilizar algún tipo de servicio de búsqueda de nombres. Esto puede estar
/etc/hosts
en el cliente, ldap, nsswitch o servidores DNS normales. Usobind
e ingreso todas las máquinas locales dentro de un dominio local, luego hago que sirva DNS para ese sitio.fuente