Category Archives: Guía

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

Medidas anti-spam I, SPF: Que es, como funciona y como implementarlo

Buenos días a todos, esta vez toca el turno a nuestros queridos registros SPF. Algunos los conoceréis desde hace días, otros los habréis oído nombrar o leído en algún sitio, otros no tenéis ni idea de lo que es.

¿Que es SPF?

Sender Policy Framework o SPF, es una protocolo para luchar contra el Spam por correo electrónico creado en 2003. Mas concretamente intenta evitar que se manden correos suplantando identidades dentro de un dominio. Para ello solo necesitaremos introducir un registro TXT con una sintaxis especial en el servidor DNS que gestione el dominio al que le queremos aplicar las restricciones.

Continue reading

Protocolo de resolución de problemas de DNS

En este articulo comparto una lista de comprobaciones que reviso siempre que tengo un problema con las DNS’s, imagino que no será perfecta y que alguien tendrá alguna cosas mas que se podría añadir para perfeccionarla. Cualquier comentario será bien recibido. También se puede dar el caso contrario, que alguien vea la guía y no sepa a que se refiere, igualmente que consulte vía comentario y le responderé encantado.
Personalmente con esta lista a día de hoy he podido, mas tarde o mas temprano, solucionar todos los problemas que me han surgido con las DNS’s

Continue reading

Activar compresión en Internet information Services, IIS 6.0

Buenos días, cuando nos encontramos con un servidor web en producción una de las muchas preguntas que debemos responder es: ¿Es posible comprimir el trafico?. La respuesta por lo general y salvo raras excepciones es que SI que se puede comprimir el trafico. Esta practica nos reporta ciertos beneficios y algún inconveniente por eso se recomienda ponerla en practica salvo las raras excepciones mencionadas anteriormente ya que optimizaremos el entorno de producción. En este articulo vamos a tratar como se configura la compresión en IIS 6.0 que es donde actualmente lo he podido probar, para diferentes versiones del servicio imagino que no debería haber muchas diferencias pero no lo puedo asegurar.

Continue reading