En esta entrada vamos a aprender a configurar las interfaces de red en el sistema operativo GNU/Linux CentOS 7, lo mismo servirá para RHEL 7 ya que es exactamente igual.
¿Qué es lo que cambia respecto a la configuración de red de versiones anteriores de CentOS y Red Hat? Vamos a ir viéndolo.
Lo primero que os llamará la atención, aunque es algo que se sabía desde versiones anteriores es la desaparición del comando ifconfig para la estandarización completa del comando ip:
[root@localhost ~]# ifconfig -bash: ifconfig: command not found [root@localhost ~]# whereis ifconfig ifconfig:
Para los que todavía no sepáis usar bien el comando IP, hace ya dos años (como pasa el tiempo) que hice un tutorial de uso comparando comandos de ip e ifconfig:
Cómo usar el comando ip en Linux (ejemplos vs ifconfig)
# ip addr list 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:99:f6:7a brd ff:ff:ff:ff:ff:ff inet 192.168.1.130/24 brd 192.168.1.255 scope global dynamic enp0s3 valid_lft 258471sec preferred_lft 258471sec inet6 fe80::a00:27ff:fe99:f67a/64 scope link valid_lft forever preferred_lft forever
Nomenclatura de interfaces de red
Como podéis ver en la salida del comando ip addr list, las interfaces de red ya no se llaman eth0,eth1,ethN. Este es el otro gran cambio en esta nueva versión. Este cambio (Predictable Network Interface Names) pretende asignar identificadores estables a las interfaces de red basándose en el tipo (local Ethernet, WLAN, WWAN…) y evitar los problemas de la nomenclatura clásica. Si os interesa profundizar en el tema recomiendo leer la documentación al respecto. Básicamente tenemos:
Names incorporating Firmware/BIOS provided index numbers for on-board devices (example: eno1)
Names incorporating Firmware/BIOS provided PCI Express hotplug slot index numbers (example: ens1)
Names incorporating physical/geographical location of the connector of the hardware (example: enp2s0)
Names incorporating the interfaces’s MAC address (example: enx78e7d1ea46da)
Classic, unpredictable kernel-native ethX naming (example: eth0)
¿Qué pasa si quiero volver a la nomenclatura anterior? Aquí la respuesta:
Configurar interfaces de red como «eth» en CentOS 7 y RHEL 7
Configuración manual de interfaces de red
La configuración manual sigue siendo exactamente igual que en versiones anteriores. Los ficheros que contienen la configuración de cada interfaz de red se encuentran en:
# ls -l /etc/sysconfig/network-scripts/ifcfg-* -rw-r--r--. 1 root root 321 ago 22 23:54 /etc/sysconfig/network-scripts/ifcfg-enp0s3 -rw-r--r--. 1 root root 254 abr 2 17:30 /etc/sysconfig/network-scripts/ifcfg-lo
Sólo hay que editar el de la interfaz correspondiente y modificar según requerimientos:
Configuración IP dinámica DHCP
# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 HWADDR="08:00:27:99:F6:7A" TYPE="Ethernet" BOOTPROTO="dhcp" DEFROUTE="yes" PEERDNS="yes" PEERROUTES="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" IPV6_FAILURE_FATAL="no" NAME="enp0s3" UUID="30d5594c-d4db-4f2d-bc0d-91ffd2571035" ONBOOT="yes"
Configuración IP estática
# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 HWADDR="08:00:27:99:F6:7A" TYPE="Ethernet" BOOTPROTO="static" IPADDR="192.168.1.199" NETMASK="255.255.255.0" DEFROUTE="yes" PEERDNS="yes" PEERROUTES="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" IPV6_FAILURE_FATAL="no" NAME="enp0s3" UUID="30d5594c-d4db-4f2d-bc0d-91ffd2571035" ONBOOT="yes"
Reiniciar red
Para aplicar los cambios hay que reiniciar el servicio de red (Arrancar / Parar / Reiniciar servicios en RHEL 7 y CentOS 7):
# systemctl restart network.service
Y para ver el estado:
# systemctl status network.service network.service - LSB: Bring up/down networking Loaded: loaded (/etc/rc.d/init.d/network) Active: active (exited) since dom 2014-08-24 10:16:49 CEST; 3s ago Process: 11002 ExecStop=/etc/rc.d/init.d/network stop (code=exited, status=0/SUCCESS) Process: 11169 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=0/SUCCESS) ago 24 10:16:48 localhost.localdomain systemd[1]: Starting LSB: Bring up/down networking... ago 24 10:16:48 localhost.localdomain network[11169]: Bringing up loopback interface: Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo' ago 24 10:16:48 localhost.localdomain network[11169]: Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo' ago 24 10:16:48 localhost.localdomain network[11169]: Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo' ago 24 10:16:48 localhost.localdomain network[11169]: Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo' ago 24 10:16:48 localhost.localdomain network[11169]: [ OK ] ago 24 10:16:49 localhost.localdomain network[11169]: Bringing up interface enp0s3: Connection successfully activated (D-Bus active path: /org/free...ction/3) ago 24 10:16:49 localhost.localdomain network[11169]: [ OK ] ago 24 10:16:49 localhost.localdomain systemd[1]: Started LSB: Bring up/down networking. Hint: Some lines were ellipsized, use -l to show in full.
Gateway, Hostname y DNS
La configuración de Gateway, Hostname sigue siendo exactamente igual Especificaremos nuestro HostName y puerta de enlace en el siguiente fichero:
vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=pruebas GATEWAY=192.168.1.1
Y los DNS en lugar de configurarlos en /etc/resolv.conf vemos que es preferible añadirlos dentro del fichero de configuración de la interfaz de red:
vi /etc/resolv.conf # Generated by NetworkManager # No nameservers found; try putting DNS servers into your # ifcfg files in /etc/sysconfig/network-scripts like so: # # DNS1=xxx.xxx.xxx.xxx # DNS2=xxx.xxx.xxx.xxx # DOMAIN=lab.foo.com bar.foo.com
Configuración en módo gráfico
La configuración en modo gráfico se basa en Network Manager, que en instalaciones MINIMAL de CentOS 7/RHEL 7 no está disponible. No obstante, si lo utilizáis (no lo recomiendo) veréis que es muy intuitivo, aunque no es recomendable utilizar ambos métodos a la vez (modificaciones manuales y network manager) por que los cambios del Network Manager suelen pisar a las configuraciones manuales.
Os dejo un screenshot del Network Manager disponible durante la instalación del SO: