Ahorre 15% en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código: Skills Comenzar
Secciones
DNS Linux

Dominar el archivo Hosts de Linux: La guía completa para el control local de DNS

Ya sea que seas un desarrollador probando una nueva aplicación, un administrador de sistemas solucionando problemas de propagación de DNS, o simplemente alguien que quiere bloquear sitios web distractores, el archivo /etc/hosts es una de las herramientas más poderosas e infrautilizadas en cualquier sistema Linux. Esta guía proporciona un recorrido profundo y práctico de todo lo que necesitas saber — desde entender qué es el archivo hosts hasta editarlo de forma segura en tu entorno de Alojamiento VPS.

1. ¿Qué es el archivo Hosts?

El archivo hosts es un archivo de sistema de texto plano que asigna nombres de host legibles por humanos — como www.example.com — a sus direcciones IP correspondientes. Funciona como un resolutor DNS local y estático, y crucialmente, es consultado por el sistema operativo *antes* de que se realice cualquier consulta DNS externa.

Esto significa que las entradas en tu archivo hosts tienen prioridad absoluta sobre los registros DNS devueltos por servidores de nombres externos. Esa única característica lo convierte en una herramienta increíblemente versátil para:

  • Entornos de desarrollo local — Prueba un sitio web bajo un dominio de aspecto real sin tocar registros DNS en vivo.
  • Solución de problemas de DNS — Fuerza temporalmente un dominio para que se resuelva a una IP específica para probar configuraciones de servidor.
  • Bloqueo de sitios web — Redirige dominios no deseados a una dirección no enrutable, bloqueando efectivamente el acceso.
  • Pruebas de staging y pre-lanzamiento — Obtén una vista previa de una nueva configuración de servidor antes de cambiar DNS globalmente.
  • Seguridad de red — Bloquea dominios maliciosos conocidos a nivel del SO.

> Nota técnica: En Linux, el orden de resolución se rige por el archivo /etc/nsswitch.conf. La configuración predeterminada típicamente coloca files (es decir, /etc/hosts) antes de dns, asegurando que las entradas locales siempre se verifiquen primero.

2. ¿Dónde se encuentra el archivo hosts en Linux?

En todas las principales distribuciones de Linux — incluyendo Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux y Arch Linux — el archivo hosts se encuentra en:

/etc/hosts

Esta ruta es consistente entre distribuciones, lo que facilita trabajar con ella independientemente de tu entorno. El archivo es propiedad de root y requiere privilegios elevados para editarlo.

Contenido predeterminado de /etc/hosts

Un servidor Linux recién aprovisionado — como uno que se ejecuta en AlexHost VPS Hosting — típicamente contendrá entradas predeterminadas similares a las siguientes:

127.0.0.1       localhost
127.0.1.1       your-hostname.example.com your-hostname

# The following lines are desirable for IPv6 capable hosts
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

Estas entradas aseguran que:

    localhost siempre se resuelva a la dirección de loopback 127.0.0.1 (IPv4) e ::1 (IPv6).
    El nombre de host del servidor se resuelva localmente sin requerir una búsqueda DNS externa.
    
    No elimines estas entradas predeterminadas a menos que tengas una razón específica y bien entendida para hacerlo. Eliminarlas puede causar comportamientos inesperados en servicios del sistema, entrega de correo y marcos de aplicación.
    3. Entender la Estructura del Archivo Hosts
    El archivo hosts sigue un formato simple y consistente. Cada línea que no esté en blanco ni sea un comentario representa un único mapeo y se adhiere a esta sintaxis:
    IP_address    hostname    [alias1]    [alias2]    ...
    
    
    
    
    Campo
    Descripción
    
    
    
    
    IP_address
    La dirección IPv4 o IPv6 a la que debe resolverse el nombre de host
    
    
    hostname
    El nombre de dominio completamente calificado (FQDN) principal o nombre de host corto
    
    
    alias (opcional)
    Uno o más nombres adicionales que deben resolverse a la misma IP
    
    
    
    
    Reglas Clave de Formato
    
    Espacios en blanco: Los campos se separan por espacios o tabulaciones. Se aceptan múltiples espacios.
    Comentarios: Cualquier texto que siga a un carácter # en una línea se trata como un comentario e ignora por el sistema.
    Sensibilidad a mayúsculas: Los nombres de host no distinguen entre mayúsculas y minúsculas en la práctica, pero la convención es usar minúsculas.
    Una IP por línea: Cada línea comienza con exactamente una dirección IP, seguida de uno o más nombres de host.
    
    Ejemplos Prácticos
    Mapear un único dominio a localhost:
    127.0.0.1    example.com
    Mapear múltiples nombres de host a la misma IP en una línea:
    127.0.0.1    example.com    www.example.com    staging.example.com
    Bloquear un dominio apuntándolo a una dirección no enrutable:
    0.0.0.0    ads.tracker.com
    Forzar que un dominio se resuelva a una IP de servidor remoto específica:
    203.0.113.42    mywebsite.com    www.mywebsite.com
    Agregar comentarios en línea para documentación:
    # Local development environment - Project Alpha
    127.0.0.1    alpha.local    api.alpha.local
    
    # Blocked domains - updated 2025-01-15
    0.0.0.0    malicious-site.com
    4. Cómo editar el archivo Hosts en Linux (Paso a paso)
    Debido a que /etc/hosts es un archivo de configuración del sistema, necesitas privilegios de root o sudo para modificarlo. A continuación se presenta un flujo de trabajo completo y seguro para producción.
    Paso 1: Crear una copia de seguridad antes de editar
    Esta es una práctica recomendada innegociable. Siempre haz una copia de seguridad del archivo antes de hacer cambios:
    sudo cp /etc/hosts /etc/hosts.bak
    Puedes verificar que la copia de seguridad se creó:
    ls -lh /etc/hosts*
    Si algo sale mal, restáuralo instantáneamente con:
    sudo cp /etc/hosts.bak /etc/hosts
    Paso 2: Abrir el archivo Hosts con un editor de texto
    Usando nano (recomendado para principiantes y ediciones rápidas):
    sudo nano /etc/hosts
    nano es fácil de usar, muestra atajos de teclado en la parte inferior de la pantalla y está disponible en prácticamente todas las distribuciones de Linux por defecto.
    Usando vim (preferido por administradores experimentados):
    sudo vim /etc/hosts
    Usando vi (disponible en instalaciones mínimas):
    sudo vi /etc/hosts
    Paso 3: Agregar, modificar o eliminar entradas
    Una vez que el archivo esté abierto, navega a la ubicación apropiada y realiza tus cambios. Aquí están las operaciones más comunes:
    Agregar un nuevo mapeo (añadir al final del archivo):
    127.0.0.1    myproject.local    www.myproject.local
    Bloquear un sitio web:
    0.0.0.0    facebook.com    www.facebook.com
    Anular DNS para un dominio (por ejemplo, para probar un nuevo servidor):
    198.51.100.25    mywebsite.com    www.mywebsite.com
    Paso 4: Guardar y salir del editor
    En nano:
    
    Presiona CTRL + O para escribir (guardar) el archivo.
    Presiona Enter para confirmar el nombre del archivo.
    Presiona CTRL + X para salir.
    
    En vim o vi:
    
    Presiona Esc para asegurarte de que estés en modo de comando.
    Escribe :wq y presiona Enter para guardar y salir.
    Para salir sin guardar, escribe :q! y presiona Enter.
    
    Paso 5: Verificar la sintaxis de tus cambios
    Antes de probar, confirma visualmente que tus entradas se vean correctas:
    cat /etc/hosts
    También puedes usar grep para encontrar rápidamente una entrada específica:
    grep "myproject.local" /etc/hosts
    Paso 6: Probar los nuevos mapeos
    Usa ping para verificar que el nombre de host se resuelva a la dirección IP esperada:
    ping -c 4 myproject.local
    Para un dominio bloqueado (mapeado a 0.0.0.0 o 127.0.0.1), el ping debería fallar o devolver inmediatamente:
    ping -c 2 facebook.com
    También puedes usar getent para una búsqueda más directa en el archivo hosts:
    getent hosts myproject.local
    Este comando consulta la pila de resolución de nombres del sistema (incluyendo /etc/hosts) y devuelve la IP resuelta, lo que lo hace más confiable que ping para propósitos de verificación.
    5. Casos de uso comunes del archivo Hosts
    5.1. Desarrollo web local
    Este es probablemente el caso de uso más común entre desarrolladores. En lugar de acceder a tu proyecto local a través de http://localhost:3000 o http://127.0.0.1:8080, puedes asignar un nombre de dominio significativo y similar al de producción.
    Ejemplo de configuración:
    Añade a /etc/hosts:
    127.0.0.1    myproject.local    api.myproject.local    admin.myproject.local
    Después de guardar, navega a http://myproject.local en tu navegador. Tu solicitud se resolverá localmente sin nunca contactar a un servidor DNS externo.
    Este enfoque es especialmente valioso cuando:
    
    Tu aplicación utiliza alojamiento virtual y requiere un encabezado Host específico.
    Estás probando certificados SSL localmente (usando certificados autofirmados asignados a un nombre de dominio apropiado).
    Necesitas simular una arquitectura multi-subdominio (por ejemplo, api., admin., cdn.).
    
    Si estás ejecutando múltiples proyectos en un VPS con cPanel, el archivo hosts también puede ayudarte a probar configuraciones de dominio antes de que la propagación de DNS se complete.
    5.2. Bloqueo de sitios web no deseados
    El archivo hosts es un bloqueador de contenido ligero y sin dependencias. Al redirigir un dominio a 0.0.0.0 (preferible a 127.0.0.1 ya que falla más rápido sin intentar conexión), puedes bloquear el acceso a nivel del SO — afectando a todos los navegadores y aplicaciones simultáneamente.
    Bloquea distracciones de redes sociales:
    0.0.0.0    facebook.com    www.facebook.com
    0.0.0.0    twitter.com    www.twitter.com
    0.0.0.0    reddit.com    www.reddit.com
    Bloquea dominios conocidos de publicidad o rastreo:
    0.0.0.0    doubleclick.net
    0.0.0.0    ads.google.com
    0.0.0.0    tracking.example-analytics.com
    > Consejo profesional: Las listas de bloqueo mantenidas por la comunidad (como las del proyecto StevenBlack hosts) compilan decenas de miles de dominios de publicidad, rastreo y malware en un formato de archivo hosts único, que puedes fusionar en tu /etc/hosts.
    5.3. Pruebas de servidor previas al lanzamiento y cambio de DNS
    Al migrar un sitio web a un nuevo servidor — por ejemplo, pasar de Alojamiento Web Compartido a un Servidor Dedicado — la propagación de DNS puede tardar desde minutos hasta 48 horas. El archivo hosts te permite previsualizar el nuevo servidor inmediatamente, desde tu máquina local únicamente, sin afectar a otros usuarios.
    Escenario: Estás migrando mywebsite.com a un nuevo servidor en la IP 203.0.113.42.
    Añade a tu /etc/hosts local:
    203.0.113.42    mywebsite.com    www.mywebsite.com
    Ahora, cuando visites mywebsite.com en tu navegador, verás el contenido del nuevo servidor. Otros visitantes en todo el mundo seguirán viendo el servidor antiguo hasta que DNS se propague. Una vez que hayas confirmado que todo funciona correctamente, elimina la entrada y deja que DNS se encargue.
    Esta técnica es invaluable para:
    
    Verificar la configuración del servidor web antes del lanzamiento.
    Probar Certificados SSL en el nuevo servidor.
    Confirmar el enrutamiento de correo electrónico y el comportamiento de la aplicación después de la migración.
    
    5.4. Bypass de fallos de resolución DNS
    Si un servidor DNS no está disponible temporalmente o devuelve resultados incorrectos, puedes usar el archivo hosts como una anulación de emergencia para restaurar la conectividad a servicios críticos.
    Ejemplo:
    # Emergency override - DNS server outage 2025-01-15
    198.51.100.10    internal-api.company.com
    198.51.100.11    database.company.com
    Recuerda eliminar estas entradas una vez que el problema de DNS subyacente se haya resuelto para evitar que asignaciones obsoletas causen confusión en el futuro.
    5.5. Entornos de desarrollo multi-servidor
    En configuraciones de desarrollo complejas con múltiples máquinas virtuales o contenedores, el archivo hosts puede asignar nombres amigables a cada servicio:
    192.168.1.10    db.local         # Database server
    192.168.1.11    cache.local      # Redis/Memcached
    192.168.1.12    queue.local      # Message broker
    192.168.1.13    search.local     # Elasticsearch
    Esto elimina la necesidad de recordar direcciones IP y hace que los archivos de configuración sean más legibles y portátiles.
    6. Vaciando la caché de DNS después de ediciones
    En la mayoría de los sistemas Linux modernos, los cambios en /etc/hosts surten efecto inmediatamente para nuevas conexiones. Sin embargo, si tu sistema o aplicaciones almacenan en caché las respuestas de DNS, es posible que necesites vaciar esa caché para asegurar que los nuevos mapeos se utilicen de inmediato.
    Para sistemas que utilizan systemd-resolved (Ubuntu 18.04+, Debian 10+, la mayoría de distribuciones modernas):
    sudo systemctl restart systemd-resolved
    O, para vaciar la caché sin un reinicio completo:
    sudo resolvectl flush-caches
    Verifica que la caché fue vaciada:
    sudo resolvectl statistics
    Para sistemas que utilizan nscd (Name Service Cache Daemon):
    sudo systemctl restart nscd
    Para sistemas que utilizan NetworkManager:
    sudo systemctl restart NetworkManager
    Para sistemas que utilizan dnsmasq:
    sudo systemctl restart dnsmasq
    Verificando qué resolutor de DNS utiliza tu sistema
    systemctl list-units --type=service | grep -E "resolved|nscd|dnsmasq|NetworkManager"
    > Cachés del navegador: Ten en cuenta que los navegadores web mantienen su propia caché interna de DNS, independiente del SO. Después de modificar /etc/hosts, también es posible que necesites limpiar la caché de DNS de tu navegador. En Chrome/Chromium, navega a chrome://net-internals/#dns y haz clic en Limpiar caché de host.
    7. Mejores prácticas y consideraciones de seguridad
    ✅ Siempre haz copia de seguridad antes de editar
    sudo cp /etc/hosts /etc/hosts.bak.$(date +%Y%m%d_%H%M%S)
    Usar una marca de tiempo en el nombre del archivo de copia de seguridad te permite rastrear múltiples versiones.
    ✅ Usa comentarios para documentar tus cambios
    # Added 2025-01-15 by admin@example.com - staging server test
    203.0.113.42    staging.mywebsite.com
    Esto es especialmente importante en entornos de equipo donde múltiples personas pueden acceder al servidor.
    ✅ Elimina entradas temporales rápidamente
    Las entradas agregadas para pruebas o anulaciones de emergencia deben eliminarse tan pronto como ya no sean necesarias. Las entradas obsoletas pueden causar problemas de conectividad difíciles de diagnosticar meses después.
    ✅ Valida tu sintaxis
    Una entrada de archivo hosts mal formada no causará un bloqueo del sistema, pero fallará silenciosamente en la resolución. Siempre verifica tus entradas con:
    getent hosts <hostname>
    ⚠️ Advertencia de seguridad: Secuestro del archivo hosts
    El software malicioso a veces modifica /etc/hosts para redirigir dominios legítimos (como sitios web bancarios o servidores de actualización) a IPs controladas por atacantes. Este es un vector de ataque conocido llamado secuestro del archivo hosts.
    Protégete contra esto mediante:
    
    Establecer permisos de archivo restrictivos: sudo chmod 644 /etc/hosts
  • Monitorear el archivo para cambios no autorizados usando herramientas como auditd o AIDE.
  • Revisar regularmente el contenido del archivo: cat /etc/hosts
  • ⚠️ El archivo hosts no es un sustituto para DNS adecuado

    Para entornos de producción, el archivo hosts solo debe usarse para anulaciones temporales y desarrollo local. Para la gestión permanente de dominios, siempre usa registros DNS adecuados. Si necesitas registrar y gestionar dominios profesionalmente, Registro de dominios a través de un proveedor confiable garantiza que tu infraestructura DNS sea robusta y escalable.

    8. Conclusión

    El archivo /etc/hosts es una herramienta engañosamente simple pero notablemente poderosa en el kit de herramientas de todo administrador de Linux y desarrollador. Su capacidad para anular la resolución de DNS localmente — con latencia cero, sin dependencias externas y sin cambios de infraestructura — la hace indispensable para:

    • Desarrolladores que construyen y prueban aplicaciones localmente.
    • Administradores de sistemas que gestionan migraciones de servidores y ventanas de cambio de DNS.
    • Usuarios conscientes de la seguridad que bloquean dominios maliciosos o no deseados.
    • Ingenieros de DevOps que orquestan entornos locales multi-servicio.

    Los puntos clave de esta guía:

    TareaComando / Acción
    Abrir el archivo hostssudo nano /etc/hosts
    Hacer copia de seguridad antes de editarsudo cp /etc/hosts /etc/hosts.bak
    Verificar una asignacióngetent hosts <hostname>
    Probar con pingping -c 4 <hostname>
    Vaciar caché de DNSsudo resolvectl flush-caches
    Restaurar desde copia de seguridadsudo cp /etc/hosts.bak /etc/hosts

    Ya sea que estés ejecutando un entorno de desarrollo eficiente o gestionando una flota de servidores de producción en AlexHost VPS Hosting, dominar el archivo hosts es una habilidad fundamental que genera beneficios cada vez que necesitas un anulación de DNS local rápida y confiable. ¡Edita con confianza, documenta tus cambios y siempre mantén una copia de seguridad — feliz enrutamiento!