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
[milton@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
- Ejecutar el comando nmtui y
aparecerá un asistente dando varias opciones. Elegimos la opción
"Edit a connection".
- A continuación, podremos ver los nombres de
todas la interfaces. En nuestro caso, solamente hay una.
Seleccionarla.
- Seleccionar la opción "Automatically
connect"
- Hacer clic en "Ok" para cerrar el
asistente.
- Reiniciar el servicio de red mediante el
comando siguiente:
# 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", “enp0s3”
entonces los comandos a ejecutar serían los siguientes:
# ifdown eth0
# ifup eth0
# ifup enp0s3
# ifdown enp0s3
Actividad 1. Configura la interfaz de red de tu
sistema por DHCP, empleando la interfaz gráfica. Después reinicia el servicio
de red y comprueba que se ha asignado una dirección a tu interfaz.
# systemctl restart network
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
- Ejecutar el comando nmtui y
aparecerá un asistente dando varias opciones. Elegimos la opción
"Edit a connection".
- A continuación, podremos ver los nombres de
todas la interfaces. En nuestro caso, solamente hay una. Seleccionarla.
- Elegir la configuración manual en la sección
"IPv4 CONFIGURATION".
- Insertar una dirección IP, una subred, un
gateway y DNS.
- Seleccionar "Automatically connect".
- Presionar Ok y cerrar el asistente.
- Finalmente reiniciar el servicio de red con el
siguiente comando:
# systemctl restart network
Actividad 2. Elige un direccionamiento IP adecuado
para el segmento en el que se encuentra tu sistema. Después, configura la red
de forma manual, y comprueba que tienes acceso a la red haciendo ping a tu
puerta de enlace.
Configuración
de red desde la línea 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:
# vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
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
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.
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.
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*
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 cómo 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:
# 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"
Finalmente, 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.