Restaurar antiguo esquema de nombres de interfaces de red CentOS 7

Para volver a utilizar el antiguo esquema de nombres de interfaces de red en distribuciones basadas en la familia 7 de Red Hat hay que modificar el parámetro net.ifname y biosdevname=0 en tiempo de arranque y restaurar los antiguos esquemas de configuración de udev.

  • Para ello hay que añadir “net.ifname=0” y “biosdevname=0” en la linea de GRUB_CMDLINE_LINUX de /etc/default/grub .

 

/etc/default/grub
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="crashkernel=auto rd.lvm.lv=VG/root rd.lvm.lv=VG/swap net.ifname=0 biosdevname=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

 

  • Después de modificar el archivo hay que reconfigurar los parámetros del kernel .
~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-327.22.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.22.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-327.10.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.10.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-2d3aa073f57b24438b30ee0a252a1a8c
Found initrd image: /boot/initramfs-0-rescue-2d3aa073f57b24438b30ee0a252a1a8c.img
done

 

  • Una vez reconfigurados los parámetros de arranque debemos restaurar los antiguos esquemas de configuración de udev, personalizándolos en caso de querer usar algún nombre en particular. Es importante que modifiquemos ATTR{address} con los valores de las direcciones MAC de los interfaces de red que tenemos activos en nuestros sistema.
/etc/udev/rules.d/60-net.rules
~]# vim /etc/udev/rules.d/60-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:c7:e2:04", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:39:e7:3c", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

 

  • Una vez preparados los nuevos nombres de los interfaces debemos modificar los archivos de configuración actuales para que encajen con los nuevos nombres.
/etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
DEVICE="eth0"
ONBOOT="yes"
IPADDR="192.168.1.120"
PREFIX="24"
GATEWAY="192.168.1.1"
DNS1="8.8.8.8"
NM_CONTROLLED="no"
/etc/sysconfig/network-scripts/ifcfg-eth1
TYPE="Ethernet"
DEVICE="eth1"
ONBOOT="yes"
IPADDR="192.168.1.121"
PREFIX="24"
GATEWAY="192.168.1.1"
DNS1="8.8.8.8"
NM_CONTROLLED="no"

 

  • Ya con los archivos de configuración preparados para su uso procederemos a reiniciar el sistema.

Después de esto deberíamos poder tener el esquema de nombres antiguo operativo en nuestro nuevo sistema. De todos modos, como suele pasar en el mundo de la informática, pequeños detalles pueden hacer que sigamos sin ver los interfaces renombrados. Por poner un ejemplo os cuento un caso que me he encontrado hace poco.


Experiencia personal

Como muchos de vosotros, para mis experimentos, hago uso de todo tipo de técnicas de virtualización con distintos tipos de tecnologías. En mi caso estaba probando un servidor CentOS 7 en un host con virtualización por KVM. Para las pruebas necesitaba utilizar multiples interfaces de red, y con las prisas por empezar a meterme en materia no me pare a mirar los parámetros de configuración. Pues resulto que el segundo interfaz de red virtual se agrego como un dispositivo rtl8139. Por costumbre me gusta renombrar los interfaces de red a la convención antigua (manias que tiene uno) y me encontré con que la primera si que se renombraba sin problemas pero la segunda no. La solución, una vez que sabes lo que tienes que buscar, es muy sencilla, la configuración de udev no coincidía con el interfaz en cuestión. Si tenéis algún problema renombrando interfaces revisad que a configuración de /etc/udev/rules.d/60-net.rules coincide con los parámetros de la interfaz en cuestión. Para ello os pongo un par de comandos para ello:

~]# ls -l /sys/class/net/
total 0
lrwxrwxrwx. 1 root root 0 Aug 27 06:12 ens9 -> ../../devices/pci0000:00/0000:00:09.0/net/ens9
lrwxrwxrwx. 1 root root 0 Aug 27 06:12 eth0 -> ../../devices/pci0000:00/0000:00:03.0/virtio0/net/eth0
lrwxrwxrwx. 1 root root 0 Aug 27 06:12 lo -> ../../devices/virtual/net/lo

Con esto obtenemos el listado de interfaces activas en el sistema. Ahora obtenemos la información que necesita utilizar udev para la configuración:

~]# udevadm info -a -p /sys/class/net/ens9
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
  looking at device '/devices/pci0000:00/0000:00:09.0/net/ens9':
    KERNEL=="ens9"
    SUBSYSTEM=="net"
    DRIVER==""
    ATTR{mtu}=="1500"
    ATTR{type}=="1"
    ATTR{netdev_group}=="0"
    ATTR{flags}=="0x1003"
    ATTR{speed}=="100"
    ATTR{dormant}=="0"
    ATTR{addr_assign_type}=="0"
    ATTR{dev_id}=="0x0"
    ATTR{duplex}=="full"
    ATTR{gro_flush_timeout}=="0"
    ATTR{iflink}=="3"
    ATTR{addr_len}=="6"
    ATTR{address}=="52:54:00:39:e7:3c"
    ATTR{operstate}=="up"
    ATTR{broadcast}=="ff:ff:ff:ff:ff:ff"
    ATTR{tx_queue_len}=="1000"
    ATTR{dev_port}=="0"
    ATTR{ifalias}==""
    ATTR{ifindex}=="3"
    ATTR{link_mode}=="0"
    ATTR{carrier}=="1"
  looking at parent device '/devices/pci0000:00/0000:00:09.0':
    KERNELS=="0000:00:09.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="8139cp"
    ATTRS{irq}=="10"
    ATTRS{subsystem_vendor}=="0x1af4"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x020000"
    ATTRS{driver_override}=="(null)"
    ATTRS{consistent_dma_mask_bits}=="64"
    ATTRS{dma_mask_bits}=="64"
    ATTRS{local_cpus}=="f"
    ATTRS{device}=="0x8139"
    ATTRS{enable}=="1"
    ATTRS{msi_bus}==""
    ATTRS{local_cpulist}=="0-3"
    ATTRS{vendor}=="0x10ec"
    ATTRS{subsystem_device}=="0x1100"
    ATTRS{numa_node}=="-1"
    ATTRS{d3cold_allowed}=="0"
  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

En este ejemplo la clave es modificar el parámetro KERNEL==”eth*” por KERNEL==”ens*” y listo.

Y ahora MacBook… convirtiéndome en un switcher?

Buenas a todos, llevo unos días sin escribir nada y eso se debe a que he estado ladillo con mis proyectos. Esas pajas mentales que se me ocurren, voy dándoles forma poco a poco. Este proyecto me ha traído a un mundo totalmente desconocido para mi hasta ahora, el mundo del Mac.

Me voy a ahorrar los detalles aburridos y ajenos al tema que me ocupa, en este y otros post voy a ir analizando mi paso a todos los niveles de administrador de sistemas experimentado en Linux y Windows a Mac.

Continue reading

Probar el correcto funcionamiento de nuestro servidor SMTP

Cuando tienes instalado un servidor de correo como bien sabréis este realmente esta dividido en 2 servidores, el de correo entrante y el del correo saliente. Hoy nos vamos a centrar en el protocolo de correo saliente SMTP, es el estándar de facto en lo que a envió de e-mails se refiere.

Los que hayáis hecho vuestros pinitos instalando cualquiera de sus implementaciones tarde o temprano os habréis encontrado con la situación de que al menos uno de vuestros usuarios no envía bien los correos. En este articulo no voy a resolver uno a uno todos los posibles errores, prefiero daros la herramienta básica para la comprobación del servicio. De todos modos si tenéis cualquier duda puntual podéis comentármelo por aquí e intentare echaros una mano.

A continuación os facilito los comandos necesarios para mandar un e-mail a través de una terminal SMTP asegurándonos de que el fallo es del servidor o del cliente SMTP. Necesitamos:

Continue reading

Google Chrome o el navegador que decide por ti

Buenas tardes a todos, hoy he leído la noticia de que a corto-medio plazo los desarrolladores de Google Chrome han decidido implantar una característica nueva en su navegador, desactivación de plugins desactualizados bajo su criterio.

Para los que no lo sepáis Chrome a día de hoy se actualiza solo, lo cual me parece un poco “heavy” pero bueno, si cambio el cerebro a modo “no tengo tiempo ni para mear” hasta es una tranquilidad pensar en que este navegador se actualiza por su cuenta, sobre todo si hablamos del entorno personal de mi casa.

Continue reading

Adiós a Live Mesh, bienvenido Live Sync!

Como ya venían avisando, Live Mesh iba a ser sustituido por la aplicación Sync de Windows Live. La cosa esta en que hasta la salida de la beta, únicamente permitía sincronizar carpetas, por lo que hasta el viernes he estado usando Mesh como mas de uno. Este viernes por fin salió la beta y con ella la nueva versión de Sync.

De momento me esta dando mas problemas que Mesh con los escritorios y tampoco veo que se pueda elegir la carpeta donde la sincronizas, me explico. Si comparto mi Carpeta  C: Prueba desde mi ordenador A con mi ordenador B con Sync se me creará la carpeta C: Prueba, no puedo elegir otra ruta distinta para la sincronización lo cual es un poco limitante y en mi caso un problema.

Continue reading