Tabla de contenido
¡Hola! Recientemente tuve algunos problemas con una tarjeta de red. Eso me hizo ver que sería buena idea subir un articulo sobre el tema. Hoy voy a enseñar 4 puntos a tener en cuenta al configurar un interfaz de red en linux.
Por favor, si te gusta este tipo de contenidos comparte el contenido en tus redes sociales y/o comenta.
¡Empezamos!
1. No tenemos red en el sistema
Como norma general si ejecutamos ip a show o ip a se debe mostrar en pantalla el listado de interfaces (en distribuciones mas antiguas esto se hace con ifconfig):
Si todo va bien y simplemente no tenemos configurada la IP podemos configurarla de la siguiente forma (esta forma de configurarla solo funcionará mientras no reiniciemos el servicio de red y reiniciemos el sistema):
Con ip a a xxx.xxx.xxx.xxx/mascara dev ethX añadimos una nueva IP a la interfaz de red, es importante definir la mascara de la IP correctamente ya que si no se especifica ninguna añade por defecto un /32 y no podremos configurar las rutas.
Como se puede ver en la imagen también debemos añadir la ruta por defecto para que utilicemos el gateway correcto, en este caso 192.168.1.1. Es una buena costumbre hacer dos pings antes de dar por configurada una IP, un ping a otra IP de la red y otro ping a internet (si es un dispositivo que deba tener salida a internet). La ruta por defecto se puede añadir con ip route a default via IP_GATEWAY dev ethX como se puede ver en la imagen.
2. Hemos configurado el interfaz y seguimos sin red
Como se puede ver en la imagen todavía no podemos resolver nombres. Hay que tener cuidado ya que en muchos casos nos podemos creer que no tenemos red y simplemente no somos capaces de resolver nombres. Para salir de dudas con ejecutar un simple ping a una ip publica como por ejemplo 8.8.8.8 nos serviría para saber si realmente estamos saliendo a internet o no.
En este caso como ya lo hemos hecho antes vamos a configurar el servidor DNS que vamos a usar y vamos a repetir la operación:
Una vez configurado el DNS ya se ha quedado todo funcionando correctamente.
3. Hemos tenido red configurada pero al hacer algún cambio no funciona
Cuando clonamos una maquina virtual o cambiamos una tarjeta de red (aunque la reemplacemos por el mismo modelo) puede que la red no funcione correctamente. Esto puede deberse a que tenemos guardada la mac del dispositivo en el fichero 70-persistent-net.rules (/etc/udev/rules.d/70-persistent-net.rules) relacionada con el dispositivo del que tenemos configuración.
El principal sintoma de esto es que cuando ejecutemos ip a veremos la interfaz con otro nombre. Por ejemplo si solo tenemos una tarjeta de red y la tarjeta debería llamarse eth0 esta se llamará eth1:
Para solucionar esto, solo se tiene que eliminar el fichero /etc/udev/rules.d/70-persistent-net.rules o también se puede editar el fichero y borrar la linea que nos «molesta», por ejemplo este es un ejemplo de «eth0»
SUBSYSTEM==»net», ACTION==»add», DRIVERS==»?*», ATTR{address}==»00:26:b9:82:21:7a», ATTR{dev_id}==»0x0″, ATTR{type}==»1″, KERNEL==»eth*», NAME=»eth0″
Yo recomiendo borrar el fichero. Después solo tenemos que reiniciar el sistema y debería funcionar correctamente la red si tenemos bien configurada la red y los interfaces se llaman como deberían.
4. Cuando no aparecen interfaces con ip a
Es posible que al tratar de configurar la red de un sistema nos encontremos con que con ip a no estamos reconociendo la interfaz a configurar esto es un indicador de que es posible que no tengamos el modulo del kernel para esta tarjeta de red, este modulo del kernel sería el equivalente a un driver de windows (esta aclaración va para los recién llegados de windows).
Para comprobar si nos pasa eso, podemos ejecutar ls /sys/class/net como vemos a continuación:
ger@portatil:~$ ls -al /sys/class/net/
total 0
drwxr-xr-x 2 root root 0 nov 18 21:52 .
drwxr-xr-x 67 root root 0 nov 18 21:52 ..
lrwxrwxrwx 1 root root 0 nov 18 21:52 docker0 -> ../../devices/virtual/net/docker0
lrwxrwxrwx 1 root root 0 nov 18 21:52 enp1s0f0 -> ../../devices/pci0000:00/0000:00:02.2/0000:01:00.0/net/enp1s0f0
lrwxrwxrwx 1 root root 0 nov 18 21:52 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx 1 root root 0 nov 18 21:52 tun0 -> ../../devices/virtual/net/tun0
lrwxrwxrwx 1 root root 0 nov 18 21:52 veth019ec36 -> ../../devices/virtual/net/veth019ec36
lrwxrwxrwx 1 root root 0 nov 18 21:52 wlp5s0 -> ../../devices/pci0000:00/0000:00:02.3/0000:05:00.0/net/wlp5s0
Con este comando debemos ver todas las interfaces que tiene el sistema. Si no vemos alguna el siguiente paso es comprobar si vemos el dispositivos con lspci o con lsusb dependiendo de si el dispositivo es USB o PCI:
ger@portatil:~$ lspci|grep -i net
01:00.0 Ethernet controller: Qualcomm Atheros QCA8171 Gigabit Ethernet (rev 13)
05:00.0 Network controller: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter (rev 01)
ger@portatil:~$ lsusb|grep -i net
ger@portatil:~$
Si el dispositivo aparece el el listado de dispositivos reconocidos pero no aparece al ejecutar ip a ni al ejecutar ls /sys/clases/net debemos revisar si los modulos del kernel corresponden al kernel cargado:
[root@localhost ~]# ls -al /lib/modules/
total 8
drwxr-xr-x. 3 root root 35 nov 18 21:36 .
dr-xr-xr-x. 27 root root 4096 oct 19 20:38 ..
drwxr-xr-x. 7 root root 4096 oct 19 20:41 3.10.0-862.el7.x86_64
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]#
Si no estuviesen los módulos del kernel tendríamos que hacernos con ellos (algunas veces solo con copiar el directorio de otra versión del kernel al kernel actual funcionan todos los módulos correctamente). En este caso todo está correcto así que deberíamos instalar el modulo del kernel de la interfac PCI o USB que falte. Normalmente este modulo se puede descargar desde la web del fabricante.
Esto ha sido todo sobre los 4 puntos a tener en cuenta al configurar un interfaz de red en linux., si os ha gustado el artículo os agradecemos que lo compartáis en vuestras redes sociales y/o comentéis.
¡Nos vemos!