¿Qué es /etc/hosts y por qué se usa?
Para enviar tráfico de red a un host, se debe conocer la dirección numérica del Protocolo de Internet (IP) para ese host. La dirección IP tradicionalmente se escribe como xxx.xxx.xxx.xxx, donde cada xxx representa un valor de 0 a 255, para una dirección de red IPv4. Las computadoras requieren estas direcciones, pero a los humanos les resulta difícil recordar valores numéricos. El Servicio de nombres de dominio (DNS) proporciona un mecanismo para asociar uno o más nombres alfanuméricos con una dirección IP numérica. En un sistema Linux, estos nombres legibles son convertidos a sus equivalentes IP numéricos por la Biblioteca Resolver, contenida en los archivos libresolve.so proporcionados como parte del paquete RPM glibc. Los programas que necesitan buscar la dirección IP numérica para un problema de nombre llaman a esta biblioteca.
Los nombres de host y sus direcciones IP se pueden encontrar en una variedad de lugares:archivos locales, servidores DNS remotos o servidores NIS+, por nombrar algunos. El orden en que se buscan estos recursos depende de los hosts:entrada en /etc/nsswitch.conf expediente. Esta línea normalmente se ve así:
# vi /etc/nsswitch.conf hosts: files dns
Esto hace que la biblioteca de resolución consulte primero el archivo local /etc/hosts; si el nombre de host no se encuentra allí, consulte los servidores de nombres DNS remotos identificados por /etc/resolv.conf archivo.
Linux proporciona el bind Paquete RPM para permitir que un dominio administrativo configure y mantenga su propio servicio DNS, pero con frecuencia el tamaño de la red local es solo de unos pocos hosts y justifica el esfuerzo de mantener un servicio DNS injustificado.
Formato del archivo /etc/hosts
El archivo /etc/hosts es un archivo de texto ordinario. Se permiten dos tipos de líneas:
- Líneas vacías
- Definiciones de nombres de host
Las líneas se pueden entremezclar según sea necesario. Los comentarios comienzan con un símbolo de almohadilla (# ) y continúa hasta el final de la línea.
Asociación de nombres de host y direcciones IP
Para cada host debe estar presente una sola línea con la siguiente información:
IP_address canonical_hostname [aliases ...]
Los campos de la entrada están separados por cualquier espacio en blanco (espacios o tabuladores). El primer campo es la dirección IP numérica que se utilizará para todos los nombres de host en esta entrada. Se puede utilizar una dirección IPv4 (10.1.2.3), una dirección IPv6 (2001:0db8:0000:0000:0000:0000:1428:57ab) o una abreviatura de IPv6 (::1), según sus requisitos.
Después de la dirección IP, los tokens restantes especifican los nombres de host conocidos localmente asociados con esa dirección IP. Por convención, el primer nombre después de la dirección IP es el nombre de dominio canónico o totalmente calificado. Un ejemplo de nombre canónico sería server.example.com; este es el nombre oficial del host.
Los nombres restantes definidos para la dirección IP son alias o nombres alternativos para el nombre de host oficial. Por ejemplo, supongamos que una de las tareas asignadas a server.example.com es ser el sitio FTP corporativo. Entonces, un alias adecuado podría ser myftp.example.com y este nombre podría agregarse a la entrada /etc/hosts después del nombre canónico. Muchas veces, un alias es simplemente el nombre del host, sin ningún sufijo de dominio. Por ejemplo:
192.168.10.12 server.example.com myftp.example.com myhost myftp
La ventaja de enumerar el nombre de host canónico como la primera definición en la línea es que la conversión de IP a nombre de host (similar a las búsquedas DNS inversas) generalmente muestra solo el primer nombre encontrado; la convención usa el nombre canónico para esto. En nuestro ejemplo, el comando:
$ ping myftp PING myhost.example.com (192.168.10.12) 56(84) bytes of data. 64 bytes from myhost.example.com (192.168.10.12): icmp_seq=1 ttl=64 time=0.023 ms 64 bytes from myhost.example.com (192.168.10.12): icmp_seq=2 ttl=64 time=0.028 ms 64 bytes from myhost.example.com (192.168.10.12): icmp_seq=3 ttl=64 time=0.028 ms
Tenga en cuenta que hicimos ping a myftp pero los resultados provienen del host myhost:esta es una pista confiable de que se está dirigiendo a un alias, no al host real.