Configuración de red en CentOS 7

Para configurar la red en CentOS 7 hay dos formas: utilizano asistente gráfico, o bien utilizando la línea de comandos.

Configurar la red a través de un asistente

Lo primero es ejecutar el comando nmcli d para la identificación rápida de las interfaces de red instaladas en el sistema

[mauri@localhost ~]$ nmcli d DISPOSITIVO TIPO ESTADO CONNECTION enp0s3 ethernet conectado enp0s3 lo loopback sin gestión --

Al ejecutar este comando, podemos ver que tenemos una interfaz de red llamada "enp0s3".

A partir de aquí, los pasos son los siguientes:

Configuración por DHCP

  1. Ejecutar el comando nmtui y aparecerá un asistente dando varias opciones. Elegimos la opción "Edit a connection".
  2. A continuación, podremos ver los nombres de todas la interfaces. En nuestro caso, solamente hay una. Seleccionarla.
  3. Seleccionar la opción "Automatically connect"
  4. Hacer clic en "Ok" para cerrar el asistente.
  5. Reiniciar el servicio de red mediante el comando siguiente:
  6. systemctl restart network

NOTA: Si después de reiniciar el servicio de red comprobamos que no se ha actualizado la configuración de red, entonces reiniciaremos la interfaz. Por ejemplo, si la interfaz se llamase "eth0", entonces los comandos a ejecutar serían los siguientes:

# ifdown eth0 # ifup eth0

Actividad 1. Configura la interfaz de red de tu sistema por DHCP, emplenado la interfaz gráfica. Después reinica el servicio de red y comprueba que se ha asignado una dirección a tu interfaz.

Toma una captura donde se pueda ver la configuración de la interfaz por DHCP y guárdala con el nombre Act1.1-red-linux.png. Después comprueba que se ha asignado una dirección IP a tu interfaz. Para ello, vuelca el archivo /var/log/messages por pantalla, y busca algo como lo siguiente. Hecho esto, guarda una captura con el nombre Act1.1-red-linux.png:

Jan 7 14:01:09 localhost NetworkManager: DHCPREQUEST on enp0s3 to 255.255.255.255 port 67 (xid=0x297925c2) Jan 7 14:01:09 localhost NetworkManager: DHCPACK from 10.0.2.2 (xid=0x297925c2) Jan 7 14:01:09 localhost dhclient[9318]: bound to 10.0.2.15 -- renewal in 39804 seconds. Jan 7 14:01:09 localhost NetworkManager: bound to 10.0.2.15 -- renewal in 39804 seconds. Jan 7 14:01:09 localhost NetworkManager[650]: (enp0s3): DHCPv4 state changed preinit -> reboot Jan 7 14:01:09 localhost NetworkManager[650]: address 10.0.2.15 Jan 7 14:01:09 localhost NetworkManager[650]: plen 24 (255.255.255.0) Jan 7 14:01:09 localhost NetworkManager[650]: gateway 10.0.2.2 Jan 7 14:01:09 localhost NetworkManager[650]: server identifier 10.0.2.2 Jan 7 14:01:09 localhost NetworkManager[650]: lease time 86400 Jan 7 14:01:09 localhost NetworkManager[650]: nameserver '10.0.2.3' Jan 7 14:01:09 localhost NetworkManager[650]: Activation (enp0s3) Stage 5 of 5 (IPv4 Configure Commit) scheduled...

Configuración estática

  1. Ejecutar el comando nmtui y aparecerá un asistente dando varias opciones. Elegimos la opción "Edit a connection".
  2. A continuación, podremos ver los nombres de todas la interfaces. En nuestro caso, solamente hay una. Seleccionarla.
  3. Elegir la configuración manual en la sección "IPv4 CONFIGURATION".
  4. Insertar una dirección IP, una subred, un gateway y DNS.
  5. Seleccionar "Automatically connect".
  6. Presionar Ok y cerrar el asistente.
  7. Finalmente reiniciar el servicio de red con el siguiente comando:
  8. systemctl restart network

Actividad 2. Elige un direccionamiento IP adecuado para el segmento en el que se encuentra tu systema. Después, configura la red de forma manual, y comprueba que tienes acceso a la red haciendo ping a tu puerta de enlace.

Toma una captura donde se pueda ver la configuración de la interfaz manualmente y guárdala con el nombre Act2.1-redlinux.png. Después toma otra captura donde se pueda ver cómo reinicias el servicio y comprueba el nuevo direccionamiento de tu interfaz de red. Guarda esta captura con el nombre Act2.2-red-linux.png.

Configuración de red desde la lína de comandos

Configurar la red desde la línea de comandos supone conocer bien el archivo de configuración de la interfaz de red. Dicho archivo es /etc/sysconfig/network-scripts/ifcfg-enp0s3 (en mi caso). El contenido puede ser algo parecido a lo siguiente:

HWADDR="08:00:27:F7:77:FF" 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="00a49dbf-26ca-4fbf-8be0-7e1ca6e5645e" ONBOOT="yes"

Para conocer el significado de cada parámetro, podemos consultar en docs.oracle.com/cd/E37670_01/E41138/html/ol_about_netconf.html

Para configurar por DHCP

Para configurar la interfaz por DHCP, es preciso fijarse en las opciones BOOTPROTO y ONBOOT. Deben quedar del siguiente modo:

BOOTPROTO=dhcp ONBOOT=yes

Después reiniciamos el servicio de red:

systemctl restart network

Actividad 3. Asegúrate de que la interfaz de red está configurada por DHCP consultado el archivo correspondiente a la interfaz en el directorio /etc/sysconfig/network-scripts. Abre dicho archivo, y si la configuración no es por DHCP, entonces modifícalo para lo sea. Después reinicia el servicio.

Toma una captura donde se pueda comprobar la configuración en el archivo que has modificado. Resalta los parámetros implicados en la configuración pedida, y guárdala con el nombre Act3.1-red-linux.png. Después comprueba en el archivo /var/log/messages que se ha asignado por DHCP una dirección de red, y guarda la captura con el nombre Act3.2-red-linux.png.

Para configuración estática

De nuevo debemos encontrar las opciones BOOTPROTO y ONBOOT. Deben quedar del siguiente modo:

BOOTPROTO=static ONBOOT=yes

A continuación debemos añadir las opciones IPADDR, NETMASK, GATEWAY y DNS1, como en el siguiente ejemplo:

IPADDR=192.168.1.40 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=80.58.61.250

Finalmente reiniciamos el servicio de red:

systemctl restart network

Actividad 4. Asegúrate de que interfaz de red está configurada manualmente consultado el archivo correspondiente a la interfaz en el directorio /etc/sysconfig/network-scripts. Abre dicho archivo, y si la configuración no es estática, entonces modifícalo para lo sea. Después reinicia el servicio.

Toma una captura donde se pueda comprobar la configuración en el archivo que has modificado. Resalta los parámetros implicados en la configuración pedida, y guárdala con el nombre Act4.1-red-linux.png. Después comprueba el direccionamiento de red de la interfaz, y guarda la captura con el nombre Act4.2-red-linux.png.

Nombrado de las interfaces de red

Tradicionalmente, las interfaces de red han sido nombradas como eth[0123...]. El inconveniente que tienen estos nombres es que no necesariamente tienen que ver con la tecnología del hardware instalado. Esto supone un problema en cuanto a averiguar que interfaz de red es cual cuando hay más de un tipo de hardware instalado. CentOS/RHEL 6 introdujo un nuevo esquema de nombrado, que con CentOS/RHEL 7 se aplica por defecto. Este esquema de nombrado determina el nombre de las interfaces de red con la idea de diferenciar fácilmente las interfaces, y que permanezcan consistentes en los diferentes arranques*

Existe un procedimiento para mantener consistente el nombre de las interfaces de red de GNU/Linux, descrito en http://www.mauriciomatamala.net/TIPS/nombres-ifaces-persistentes.php. Este modelo se basa en asociar el nombre de la interfaz a la dirección MAC de la interfaz. Pero este modelo tiene un problema en los sistemas virtuales, puesto que las direccion MAC pasan a ser efímeras (ya que sepueden cambiar en cualquier momento)

Las convenciones de nombrado son las siguientes:

Los dos primeros caracteres del nombre de la interfaz

  • en -- ethernet
  • sl -- línea serie
  • wl -- wlan
  • ww -- wwan

El resto del nombre de la interfaz:

  • o<número> - Número de interfaz integrada en la placa base.
  • s<número_ranura>[f<función>][d<id_dispositivo>] - Número de ranura de conexión en caliente.
  • x<MAC> - Direción MAC
  • p<bus>s<ranura>[f<función>][d<dev_id>] - Ubicación PCI
  • p<bus>s<ranura>[f<función>][u<puerto>][...][c<config>][i<interfaz>] - cadena de nombre de puerto USB

El inconveniente de este esquema de nombrado, es que a veces se vuelve más difícil de leer que los nombres tradicionales. Por ello puede aparecer el deseo o necesidad de cambiar el nombre de una interfaz, aplicando el esquema de nombrado tradicional.

Nombres de interfaces persistentes con reglas de nombrado UDEV

A continuación veremos como se utilizan las reglas UDEV de nombrado persistente de interfaces. Entender esto es necesario para poder renombrar las interfaces, tal y como se explica más adelante. Se puede consultar este punto en nombres-ifaces-persistentes.php

Cambiando el nombre de la interfaz

En primer lugar vamos a desactivar el esquema de nombrado predecible de CentOS/RHEL 7. Para ello, debemos pasar el parámetro net.ifnames=0 al kernel durante el arranque. Para hacer esto, editamos el archivo /etc/default/grub y añadimos la cadena "net.ifnames=0" en la línea correspondiente a GRUB_CMDLINE_LINUX. Debe quedar como se muestra a continuación:

GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="vconsole.keymap=es crashkernel=auto vconsole.font=latarcyrheb-sun16 net.ifnames=0 rhgb quiet" GRUB_DISABLE_RECOVERY="true"

Para que esta nueva configuración tenga efecto en el próximo reinicio, recreamos el archivo grub.cfg:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Posteriormente, creamos una regla de nombrado de red en el archivo /etc/udev/rules.d/70-persistent-net.rules, añadiendo la siguiente línea:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:5b:39:e6:aa:df", ATTR{type}=="1", KERNEL=="eth*", NAME="redlocal0"

Para terminar, supongamos que el script de configuración de CentOS se llamaba ifcfg-enp0s8. Entonces, si hemos llamado a nuestra interfaz "redlocal0", lo que haremos será renombrar dhcio archivo a ifcfg-redlocal0. Además, debemos editar dicho archivo y modificar los parámetros NAME y DEVICE. Es decir, internamente el archivo (ahora renombrado a) ifcfg-redlocal0 contendrá algo como lo siguiente:

HWADDR="08:00:27:F7:77:FF" DEVICE="redlocal0" 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="redlocal0" UUID="00a49dbf-26ca-4fbf-8be0-7e1ca6e5645e" ONBOOT="yes"

NOTA: Es preciso sustituir la MAC mostrada por la MAC de la interfaz.

Finalemente, reiniciamos el sistema y el nombre de la interfaz debería haber cambiado.

Una vez cambiado el nombre de la interfaz

Es importante tener en cuenta que si el nombre anterior de la interfaz se emplea en algún archivo de configuración, debería ser actualizado al nuevo nombre. De este modo, el script para la interfaz en /etc/sysconfig/network-scripts/ debería ser modificado en este sentido.

Actividad 5. Modifica el nombre por defecto de tu interfaz, para que se llame "pro1000".

Muestra por pantalla la configuración de las interfaces de red, y guarda una captura con el nombre Act5-red-linux.png.