"Después del juego es antes del juego"
Sepp Herberger

martes, 25 de febrero de 2025

OpenWRT: unir todos los puertos de red bajo el mismo bridge.

Tenemos por los centros muchos routers DIR‑860L sobrantes de las antiguas pizarras digitales. Ya he dedicado varios articulos a estos router porque que me parecen bastante interesantes.

Lo primero que suelo hacer es quitarles el sistema DD-WRT que traen de serie y poner un OpenWRT que es mucho más versatil y parecido a un Linux.

Estos router traen 5 puertos GigaEthernet. 4 de ellos están en un mismo bridge, llamado LAN, y el otro puerto está aparte y es el puerto WAN del router, lo que permite que por defecto el router interconecte 2 redes cableadas distintas, en distintas VLANs, y enrute el tráfico entre ambas.

Pero puede ser que no queramos eso, sino que los 5 puertos ethernet estén en la misma red. Eso convierte el router en un miniswitch de 5 puertos GigaEthernet, el cual nos puede venir bien en algunas estancias del centro. Para unir los 5 puertos una vez hemos cargado OpenWRT los pasos son sencillos:

Editamos /etc/config/network para que quede asi:
config interface 'loopback'
	option ifname 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fdda:86a9:b1ad::/48'

config interface 'lan'
	option force_link '1'
	option macaddr '9a:45:4a:fb:74:c1'
	option type 'bridge'
	option proto 'dhcp'
	option ip6assign '60'
	option _orig_ifname 'eth0.1 radio0.network1 radio1.network1'
	option _orig_bridge 'true'
	option ifname 'eth0.1 eth0.2'

config switch
	option name 'switch0'
	option reset '1'
	option enable_vlan '1'

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '0 1 2 3 4 6t'
	option vid '1'  
Comentarios:
  • La macaddr habrá que cambiarla para poner la tuya.
  • Vease que todo se mete en la misma VLAN, la otra VLAN que tenía el router desaparece.
  • En ports metemos todos los puertos dentro del bridge, de manera que están en la misma red y no hay que enrutar el tráfico entre ellos.
Para hacer esto me he basado en este hilo de Reddit.

Bueno, pues con esto podemos reaprovechar mejor esos router ociosos que nos dejaron las pizarras Siatic.

回头见!

viernes, 14 de febrero de 2025

Paquete hp-health para servidores HP con Debian modernos.

A los que tenemos servidores HP el paquete hp-health viene muy bien para monitorizar (por ejemplo con monit) distintos parámetros físicos, como la temperatura, los ventiladores o el estado de las fuentes de alimentación redudantes que trae.

El paquete mas actualizado que ofrece HP para Debian en https://downloads.linux.hpe.com/SDR/repo/mcp/pool/non-free/ es hp-health_10.80-1874.10_amd64.deb, de 2019.

Si lo intentamos instalar sobre Debian 11 o superior con "dpkg -i health_10.80-1874.10_amd64.deb" nos da problemas de dependencias por librerías obsoletas. Muchas veces, cuando pasa esto la explicación es que las versiones o nombres de las librerias vinculadas están puestas a piñon y si pudieramos editar el .deb y cambiar esas dependencias por versiones mas modernas el paquete se instalaría sin problema. Vamos a ello:
# wget https://downloads.linux.hpe.com/SDR/repo/mcp/pool/non-free/hp-health_10.80-1874.10_amd64.deb
# dpkg-deb -R hp-health_10.80-1874.10_amd64.deb hp-health  
# nano hp-health/DEBIAN/control
En este fichero se guardan las dependencias. Tenemos que editar la linea "Version: XXX" para poner una versión mayor, por ejemplo "Version: 10.81" y la linea "Depends: XX" para poner las versiones actuales de las librerías que nos han dado error al intentar instalar el paquete. En mi caso, para instalarlo sobre Debian 12 lo debemos dejar así:
Depends: libc6 (>= 2.14), binutils, dmidecode, pciutils, libc6-i386 | lib32gcc-s1
Simplemente, en este caso cambiamos "libc6-i686 | lib32gcc1" por "libc6-i386 | lib32gcc-s1", su equivalente en Debian 12. Una vez editado el fichero de control reempaquetamos todo en un nuevo .deb:
# dpkg -b hp-health hp-health_10.81_amd64.deb 
# dpkg -i hp-health_10.81_amd64.deb 
Y con esto se instala sin problemas en nuestro Debian. Ya tenemos el paquete disponible para otra temporada.

viernes, 7 de febrero de 2025

Mirror para los repositorios de paquetes de Ubuntu 22.

Siempre me gusta hacer un mirror local de los repositorios de paquetes más frecuentes, ya que esto garantiza que mis equipos se actualizarán dentro de la red local sin depender de servicios ni conexiones externas. Ya traté esto en este articulo de hace 10 años, cuando trabajabamos con Debian. Ahora voy a contar como montarlo en Ubuntu 22.

Antaño usamos la utilidad debmirror. Las cosas han cambiado y ahora usaremos una herramienta más sencilla, apt-mirror. Primero instalamos el paquete en el servidor donde vamos a crear el repositorio mirror de paquetes:
# apt-get install apt-mirror
En /etc/apt/mirror.list metemos la lista de repositorios a clonar. Este configuración, a diferencia de la antigua debmirror, tiene un formato similar a los sources.list habituales de Debian/Ubuntu:
############# config ##################
#
# set base_path    /var/spool/apt-mirror
#
# set mirror_path  /mirror
# set skel_path    /skel
# set var_path     /var
# set cleanscript /clean.sh
# set defaultarch  >running host architecture<
# set postmirror_script /postmirror.sh
# set run_postmirror 0

set cleanscript /clean.sh
set defaultarch amd64  #Solo amd64
set nthreads     20
set _tilde 0
#set limit_rate 1000k 

############# end config ##############

#------------------------------------------------------------------------------#
#                            OFFICIAL UBUNTU REPOS                             #
#------------------------------------------------------------------------------#

deb-amd64 http://es.archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
deb-amd64 http://es.archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-amd64 http://es.archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-amd64 http://security.ubuntu.com/ubuntu jammy-security main restricted universe multiverse

#######################
# REPOS DE LA SECCION #
#######################

deb-amd64 http://desarrollo.educarex.es/solointranet/ubuntu/jammy/ jammy linex
deb-amd64 http://linex.educarex.es/ubuntu/jammy/ jammy linex

###### 3rd Party Binary Repos

deb-amd64 http://dl.google.com/linux/earth/deb/ stable main

clean http://es.archive.ubuntu.com/ubuntu
clean http://desarrollo.educarex.es/solointranet/ubuntu
clean http://linex.educarex.es/ubuntu
clean http://desarrollo.educarex.es/es.archive.ubuntu.com/ubuntu
En el fichero anterior configuramos la clonación de los repos de Ubuntu Jammy, el repositorio interno de nuestra red (desarrollo.educarex.es y linex.educarex.es) y el repositorio de Google Earth. Solo clono los paquetes amd64, ya que la versión i386 de los paquetes tiene un uso marginal, ocupa mucho y no tengo suficiente espacio de disco para clonar dicha parte.

Todo se descargará en var/spool/apt-mirror/mirror. Para poder hacer uso del repositorio clonado en nuestra red hay que instalar apache2 y hacer que /var/www/html/ubuntu apunte a /var/spool/apt-mirror/mirror:
# ln -sf /var/spool/apt-mirror/mirror /var/www/html/ubuntu
Para que los repositorios se clonen diariamente creamos los ficheros /etc/cron.d/apt-mirror y /etc/cron.d/apt-mirror-die:
# cat /etc/cron.d/apt-mirror
# Regular cron jobs for the apt-mirror package
00 22	* * *	apt-mirror	rm -f /var/spool/apt-mirror/var/apt-mirror.lock; /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log
# cat /etc/cron.d/apt-mirror-die 
# Matar el proceso apt-mirror
00 01	* * *	root	/usr/bin/killall -9 apt-mirror
A las 22:00 se lanza apt-mirror y tres horas después se corta. Por supuesto podemos cambiar estas horas para ajustar a nuestro caso. Harán falta varios días para bajar todos los repositorios completos, ya que el total son 670GB, repartidos así:
# du -sh *
5,4G	desarrollo.educarex.es
111M	dl.google.com
389G	es.archive.ubuntu.com
574M	linex.educarex.es
275G	security.ubuntu.com
Si tenemos prisa siempre podemos forzar la actualización a mano o lanzar el siguiente comando para ver si está todo ya bajado:
# apt-mirror
Una vez tenemos los repositorios clonados hay que distribuir a nuestros clientes unos ficheros *.list que apunten al mirror local en lugar de a los repositorios externos a la red. Tendriamos este /etc/apt/sources.list:
#Arquitectura amd64 tira del repositorio local
deb [arch=amd64] http://servidor-mirror/ubuntu/es.archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
deb [arch=amd64] http://servidor-mirror/ubuntu/es.archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
deb [arch=amd64] http://servidor-mirror/ubuntu/es.archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
deb [arch=amd64] http://servidor-mirror/ubuntu/security.ubuntu.com/ubuntu/   jammy-security main restricted universe multiverse

#Arquitectura i386 tira de repositorios en Internet
deb [arch=i386] http://es.archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
deb [arch=i386] http://es.archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
deb [arch=i386] http://es.archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
deb [arch=i386] http://security.ubuntu.com/ubuntu   jammy-security main restricted universe multiverse
Fichero /etc/apt/sources.list.d/repoXubuntuLinex.list:
#Repositorio Linex Desarrollo 
deb [arch=amd64] http://servidor-mirror/ubuntu/desarrollo.educarex.es/solointranet/ubuntu/jammy jammy linex
deb [arch=i386]  http://desarrollo.educarex.es/solointranet/ubuntu/jammy/ jammy linex

#Repositorio Linex para Ubuntu
deb [arch=amd64] http://servidor-mirror/ubuntu/linex.educarex.es/ubuntu/jammy jammy linex
deb [arch=i386]  http://linex.educarex.es/ubuntu/jammy/ jammy linex
Fichero /etc/apt/sources.list.d/google.list:
#Google Earth
deb [ arch=amd64 ] http://servidor-mirror/ubuntu/dl.google.com/linux/earth/deb/  stable main 
En los ficheros anteriores cambiamos "servidor-mirror" por el nombre o ip de nuestro mirror local. Lo más cómodo es distribuir estos tres ficheros *.list mediante una tarea puppet y una vez hecho esto hacer "apt-get update" en los clientes para que sincronicen con los mirrors locales.

Y ya está, una vez completado veremos que los apt-get y pkgsync van bastante más rápidos y apenas saturan nuestra salida a Internet.