- Identifica quién gestiona la red (NetworkManager, wicked o systemd-networkd) antes de aplicar cambios.
- Elige el método idóneo por distro: nmcli/nmtui, ifcfg/interfaces, netplan o perfiles netctl.
- Configura DNS donde toque (perfil o resolv.conf) y verifica rutas con ip route.
Configurar una IP fija en Linux no es complicado, pero hay matices importantes según la distribución y el gestor de red en uso. En equipos con entorno gráfico se puede hacer en dos clics; aun así, cuando trabajamos en servidores, entornos minimalistas o queremos automatizar, la línea de comandos ofrece precisión, repetibilidad y control total.
En esta guía unificamos lo mejor de varios métodos contrastados: archivos de configuración clásicos, NetworkManager con nmcli/nmtui, herramientas específicas de Arch como netctl o el propio systemd-networkd, y particularidades de Debian/Ubuntu, Fedora/RHEL y openSUSE. Además, repasamos DNS, verificación y buenas prácticas para evitar conflictos.
Requisitos previos y comprobaciones básicas
Antes de tocar nada, conviene identificar el nombre real de la interfaz de red: en sistemas antiguos verás eth0/wlan0, mientras que en modernos es habitual enp2s0/eno1/wlp1s0. Esta nomenclatura predecible evita sorpresas al cambiar hardware.
Para listar interfaces con detalle usa ip (preferido hoy frente a ifconfig):
ip addr
ip -c link show # salida coloreada
Si necesitas la utilidad clásica, instala net-tools y ejecuta ifconfig bajo tu propio criterio:
sudo apt install net-tools
sudo ifconfig
Con NetworkManager puedes ver conexiones y dispositivos con nmcli de forma muy cómoda:
nmcli connection show
nmcli device status
Un truco útil: si vas a fijar una IP en tu LAN doméstica, comprueba que no esté ocupada con un ping a la dirección candidate (sustituye xxx) y, si no conoces cómo localizar la puerta de enlace, consulta encontrar la IP, puerta de enlace y DNS:
sudo ping 192.168.0.xxx
Si aparece «Destination Host unreachable«, normalmente esa IP no responde y podrás asignarla sin colisiones. Si devuelve tiempos de respuesta, ya la está usando otro equipo.
NetworkManager: nmcli y nmtui (aplicable a Debian, Ubuntu, Fedora, openSUSE, etc.)
En la mayoría de distribuciones modernas, NetworkManager gobierna las conexiones. Con nmcli puedes ver estado general y activar/desactivar perfiles al vuelo, sin abrir el editor.
Estado y conexiones disponibles con unos pocos comandos:
nmcli general status
nmcli connection show
nmcli device status
Asignación de IP estática modificando un perfil existente (ajusta nombre, interfaz e IP):
sudo nmcli connection modify "eth0" \
ipv4.method manual ip4 192.168.1.20/24 \
gw4 192.168.1.101 ipv4.dns "8.8.8.8 1.1.1.1"
sudo nmcli connection up "eth0"
Crear un perfil nuevo con IP fija y activarlo es igual de directo y evita tocar archivos a mano:
sudo nmcli connection add type ethernet ifname eth0 con-name static-ip \
ip4 192.168.1.100/24 gw4 192.168.1.1
sudo nmcli connection modify static-ip ipv4.dns "8.8.8.8 1.1.1.1" ipv4.method manual
sudo nmcli connection up static-ip
Wi-Fi desde CLI: lista redes y conecta indicando SSID y contraseña con una sola orden:
nmcli device wifi list
sudo nmcli device wifi connect NOMBRE_SSID password TU_CONTRASEÑA
Edición avanzada y limpieza de perfiles con nmcli:
nmcli connection edit NOMBRE_DEL_PERFIL
sudo nmcli connection delete NOMBRE_DEL_PERFIL
Si prefieres una interfaz en modo texto, instala y lanza nmtui (muy útil en servidores):
# Fedora/RHEL
sudo dnf install NetworkManager-tui
sudo nmtui
Debian y derivados (incluye Ubuntu): /etc/network/interfaces, NM y netplan
En Debian clásico puedes fijar la IP editando /etc/network/interfaces. Ojo: si NetworkManager está instalado y gestiona la interfaz, ignorará lo que pongas en ese archivo. En ese caso, desinstálalo o marca la interfaz como no gestionada por NM.
Para evitar conflictos, en escenarios puramente estáticos muchos administradores optan por retirar NetworkManager y sus dependencias:
sudo apt remove network-manager
sudo apt autoremove
Archivo /etc/network/interfaces con IP fija en, por ejemplo, enp2s0:
# The loopback network interface
auto lo
iface lo inet loopback
# Interfaz principal
auto enp2s0
allow-hotplug enp2s0
iface enp2s0 inet static
address 192.168.1.150
netmask 255.255.255.0
gateway 192.168.1.101
dns-nameservers 9.9.9.9 8.8.8.8
Para DHCP basta con declarar el método dhcp y listo:
auto enp2s0
allow-hotplug enp2s0
iface enp2s0 inet dhcp
Aplica cambios reiniciando el servicio de red en sistemas con systemd de la familia Debian: rápido y seguro.
sudo systemctl restart networking.service
Detalles clave del fichero interfaces que conviene conocer para no perder el control de la red:
- auto: interfaces que suben con ifup -a (en el arranque).
- allow-auto: equivalente a auto con ifup –allow=auto.
- allow-hotplug: suben ante eventos hotplug (cable, detección kernel).
- iface <nombre> <familia> <método>: define la configuración lógica (inet/inet6 y loopback/dhcp/static).
- Opciones de static: address, netmask, gateway, network, broadcast, hwaddress.
- Hooks: pre-up, up, post-up, pre-down, down, post-down (pueden repetirse; añade «|| true» si quieres que no interrumpan).
- Comentarios con # y extensión de línea con \ cuando necesites partir configuración.
Sobre DNS: editar /etc/resolv.conf a mano puede no persistir si lo gestiona resolvconf o NetworkManager; en Debian puro suele funcionar, pero lo más limpio es definir DNS en interfaces o en la herramienta que gestione la red. Si te preocupa privacidad, consulta cómo ocultar tu dirección IP.
Ubuntu moderno usa netplan (YAML en /etc/netplan/*.yaml) para definir la red junto a NetworkManager o systemd-networkd; si en tu servidor Ubuntu no ves resultados con interfaces, plantéate aplicar netplan apply tras editar su archivo en lugar del método clásico.
RPM (Fedora, Rocky/Alma, CentOS): ifcfg, nmcli y nmtui
En la familia RHEL/CentOS tradicionalmente existían ficheros /etc/sysconfig/network-scripts/ifcfg-INTERFAZ. Aunque en Fedora reciente manda NetworkManager, estos ifcfg siguen siendo comunes en derivados como Rocky/Alma.
Ejemplo de archivo estático para una interfaz enp0s2 en sistemas tipo RHEL/derivados:
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV6INIT="yes"
NAME="enp0s2"
ONBOOT="yes"
HWADDR="08:00:27:80:63:19"
IPADDR0="192.168.225.150"
PREFIX0="24"
GATEWAY0="192.168.225.1"
DNS1="8.8.8.8"
Tras guardar, reinicia el servicio de red si usas el stack clásico; verifica con ip addr que todo está en su sitio:
sudo systemctl restart network
ip addr
Con NetworkManager activo, nmcli/nmtui es la vía recomendada. Modifica perfiles, activa la conexión y, si lo necesitas, reinicia NetworkManager:
sudo nmcli connection modify "eth0" \
ipv4.method manual ip4 192.168.1.20/24 \
gw4 192.168.1.101 ipv4.dns "8.8.8.8"
sudo nmcli connection up "eth0"
sudo systemctl restart NetworkManager
openSUSE: NetworkManager o wicked (sysconfig)
En openSUSE puedes operar con NetworkManager (nmcli/nmtui) o con wicked y su formato sysconfig. Si usas NM, aplica exactamente los mismos comandos nmcli que en el apartado anterior.
Con wicked, la configuración por interfaz reside en /etc/sysconfig/network/ifcfg-NOMBRE. Un ejemplo típico para IP estática en, digamos, eth0 sería:
BOOTPROTO='static'
STARTMODE='auto'
IPADDR='192.168.1.50/24'
GATEWAY='192.168.1.1'
DNS1='1.1.1.1'
DNS2='8.8.8.8'
Aplica cambios reiniciando wicked y comprueba rutas e IP con ip addr e ip route:
sudo systemctl restart wicked
ip addr
ip route | grep default
Arch Linux: netctl y systemd-networkd
Arch ofrece varias rutas. Con netctl puedes copiar un perfil de ejemplo y adaptarlo a tu interfaz. Es una opción muy clara en servidores ligeros.
Perfila tu conexión estática desde los ejemplos y habilítala para que arranque automáticamente con systemd:
ls /etc/netctl/examples/
sudo cp /etc/netctl/examples/ethernet-static /etc/netctl/enp2s0
sudo nano /etc/netctl/enp2s0
# Contenido recomendado:
Description='A basic static ethernet connection'
Interface=enp2s0
Connection=ethernet
IP=static
Address=('192.168.1.102/24')
Gateway=('192.168.1.1')
DNS=('8.8.8.8' '8.8.4.4')
sudo netctl enable enp2s0
sudo netctl start enp2s0
Si estabas usando dhcpcd, detenlo y deshabilítalo para evitar que sobrescriba tu IP estática recién definida y así mantener la red sin interferencias:
sudo systemctl stop dhcpcd
sudo systemctl disable dhcpcd
El segundo camino en Arch es systemd-networkd, minimalista y sólido. Crea un perfil .network y activa el servicio:
sudo nano /etc/systemd/network/enp2s0.network
# Ejemplo:
Name=enp2s0
Address=192.168.1.102/24
Gateway=192.168.1.1
DNS=8.8.8.8
DNS=8.8.4.4
# Desactiva netctl si estaba en uso
aur: sudo systemctl disable netctl@enp2s0.service
# Asegúrate de que dhcpcd no interfiera
aur: sudo systemctl stop dhcpcd && sudo systemctl disable dhcpcd
# Activa systemd-networkd
sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd
Tras reiniciar, verifica con ip addr que tu dirección y rutas están operativas; si no, revisa nombre de interfaz, máscara y gateway.
Servidores DNS: elección y configuración
Puedes declarar DNS en la propia conexión (nmcli, netplan o interfaces) o editar /etc/resolv.conf si no está gestionado por otra herramienta. Recuerda que algunos sistemas escriben «DO NOT EDIT THIS FILE BY HAND» porque lo genera resolvconf/NetworkManager.
Ejemplo simple de resolv.conf cuando no hay gestor sobre él y quieres forzarlo a mano con dos servidores y dominios de búsqueda:
nameserver 1.1.1.1
nameserver 8.8.8.8
search midominio.local otrodominio.local
Lista de DNS públicos conocidos para que puedas escoger según rendimiento o política de filtrado y privacidad, con primarios y secundarios:
- Quad9 (IBM): 9.9.9.9
- OpenDNS: 208.67.220.123 / 208.67.220.222 / 208.67.220.220
- Cloudflare: 1.1.1.1 / 1.0.0.1
- Level3: 209.244.0.3 / 209.244.0.4
- Verisign: 64.6.64.6 / 64.6.65.6
- Google: 8.8.8.8 / 8.8.4.4
- WATCH: 84.200.69.80 / 84.200.70.40
- Comodo Secure DNS: 8.26.56.26 / 8.20.247.20
- OpenDNS Home: 208.67.222.222 / 208.67.220.220
- DNS Advantage: 156.154.70.1 / 156.154.71.1
- Norton ConnectSafe: 199.85.126.10 / 199.85.127.10
- SafeDNS: 195.46.39.39 / 195.46.39.40
- OpenNIC: 50.116.23.211 / 107.170.95.180
- SmartViper: 208.76.50.50 / 208.76.51.51
- Dyn: 216.146.35.35 / 216.146.36.36
- FreeDNS: 37.235.1.174 / 37.235.1.177
- Alternate DNS: 198.101.242.72 / 23.253.163.53
- Yandex DNS: 77.88.8.8 / 77.88.8.1
- puntCAT: 109.69.8.51
Recuerda que el primer DNS es el preferente y el segundo actúa como respaldo automático. Si quieres inspeccionar resoluciones puntuales, nslookup o dig te contarán qué IP devuelve un dominio:
nslookup google.com
Verificación, rutas y servicio de red
Tras aplicar cambios revisa tu IP, máscara y broadcast con ip addr; no debería quedar ninguna duda del estado de la interfaz ni de si está arriba (UP) o abajo (DOWN).
ip addr
Comprueba la puerta de enlace por defecto con la tabla de rutas; si no hay default via, tu equipo no saldrá a Internet aunque tenga IP estática correcta. Si detectas errores como Ethernet no tiene una configuración de IP válida, revisa interfaz, máscara y gateway:
ip route | grep default
Para información detallada con NetworkManager, nmcli device show es oro: muestra IPv4, gateway y DNS activos:
nmcli device show
En algunos entornos minimalistas puede que no tengas reboot/shutdown instalados; con systemd puedes reiniciar o apagar igualmente:
sudo systemctl reboot
sudo systemctl poweroff
Si detectas que tu configuración manual no surte efecto en Debian porque NM sigue al mando, revisa si debes desinstalarlo o migrar a su control con nmcli. En Ubuntu considera netplan, y en openSUSE valida si usas NetworkManager o wicked antes de aplicar cambios, así la configuración persistirá sin sorpresas.
Con todo lo anterior tienes a mano tanto los métodos clásicos como las herramientas modernas para fijar una IP inmutable en Debian/Ubuntu, Fedora/RHEL, openSUSE y Arch. Elegir el camino correcto (nmcli/nmtui, archivos del sistema o servicios como netctl/systemd-networkd) depende de quién gestione la red en tu distro, pero el resultado es el mismo: estabilidad, control y cero sobresaltos a la hora de administrar servidores y equipos de escritorio exigentes.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.