Category Archives: Recetas

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.

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

Recopilación de comandos MySQL desde consola

Después de una temporada sin tiempo ni para escribir un triste post hoy me he propuesto ponerme al día con unos cuantos que tenia empezados.

En este post intento recoger una serie de comandos útiles si en tu día a día te toca trabajar con MySQL desde la consola.

  • Conectarte al interprete de MySQLcon el usuario USUARIO

] # mysql -u USUARIO -p

  • Ver / Listar las bases de datos que hay dadas de alta en el servicio
SHOW databases;
  • Ver / Listar los usuarios dados de alta en el servicio
SELECT * FROM mysql.user;

Continue reading

Gestión de usuarios desde consola en Linux

Bueno como una de las ideas por las que cree este blog era para dar guardar algunas recetas tanto para administradores despistados como para noveles y dado que no voy muy sobrado de tiempo últimamente os dejo algunos comandos básicos para la gestión de usuarios y grupos en Linux desde la consola o Shell:

  • Añadir usuario
    • [root@localhost ~]# useradd -s /bin/bash NuevoUsuario
  • Asignar contraseña
    • [root@localhost ~]# passwd NuevoUsuario
  • Añadir grupo
    • [root@localhost ~]# groupadd -r NuevoGrupo
  • Asignar usuario a grupo
    • [root@localhost ~]# gpasswd –a NuevoUsuario NuevoGrupo

Cuando tenga un rato intentare ampliar un poco la información de este post pero de momento no tengo fuerzas para mas.

Contraseña inicial y modificación de contraseñas en MySQL

Buenas tardes, otro tip así rapidito para cuando no nos acordamos del comando para modificar la contraseña de root de MySQL que viene por defecto recien instalado.
Dado que la contraseña por defecto es nada (hay que dejar el campo vacío) una de las primeras cosas que deberemos hacer si queremos mantener nuestra base de datos a salvo es modificar añadirle alguna contraseña al usuario. Para ello desde consola lo único que debemos introducir es:

mysqladmin -u nombre_usuario contraseña

Si al ejecutarlo os da un error es posible que tengáis el servidor parado o bloqueado, revisad el estado y cuando este funcionando correctamente ejecutamos el comando.