El fix primero, el porqué después. Runbooks de lab y producción: Kubernetes, multi-cloud (AWS, GCP, Azure), Linux, red, bare metal y virtualización (KVM, Proxmox, Hyper-V, OpenStack).
OPNsense: port-forward inalcanzable desde la misma subred WAN (reply-to)
OPNsense agrega reply-to a las reglas WAN y manda las respuestas al gateway aunque el cliente esté en el mismo segmento. Desactívalo y el firewall vuelve a usar su tabla de rutas.
Servidor con LUKS que se cuelga y no vuelve: watchdog, desbloqueo por SSH con dropbear y netconsole
Tres piezas para que un cuelgue cueste un minuto y no horas: el watchdog reinicia, dropbear en el initramfs te deja escribir la passphrase de LUKS por SSH y netconsole guarda los últimos mensajes del kernel en otra máquina.
Windows 11 sin cuenta de Microsoft: oobe\bypassnro y sus reemplazos
El truco clásico oobe\bypassnro, cómo revivirlo por registro cuando Microsoft lo quitó, y la alternativa moderna start ms-cxh:localonly.
acme-dns: DNS-01 sin dar la llave de toda la zona (delegación CNAME de _acme-challenge) con certbot y cert-manager
NS auth.example.com → acme-dns; POST /register → username, password, fulldomain; CNAME _acme-challenge.example.com → . certbot certonly –manual –manual-auth-hook /etc/letsencrypt/acme-dns-auth.py –preferred-challenges dns -d ‘*.example.com’ -d example.com. En Kubernetes, solver dns01.acmeDNS con accountSecretRef. acme-dns 2.0.2 (febrero de 2025) sigue activo.
Backup consistente de Prometheus: snapshot con la admin API (enableAdminAPI en el operador), copiarlo, restaurarlo y borrar series
kubectl patch prometheus … enableAdminAPI true; POST http://localhost:9090/api/v1/admin/tsdb/snapshot; kubectl exec … tar cf - -C /prometheus/snapshots NAME | tar xf -. Restaurar = copiar los bloques a la raíz del data dir de la nueva instancia. La API no tiene autenticación: port-forward y apágala al terminar.
badblocks en discos grandes: 'Value too large for defined data type (must be 32-bit value)'
badblocks -b 4096 -sv /dev/sdX. El contador de bloques es de 32 bits y con bloques de 1 KiB se queda en 4 TiB; con 4 KiB cubre 16 TiB. -w borra el disco; para un chequeo rápido, smartctl -t long.
Certificado gestionado de Google que nunca se emite: CAA (pki.goog, letsencrypt.org), FAILED_NOT_VISIBLE y el orden correcto
CAA con issue pki.goog y issue letsencrypt.org (o ningún CAA), A/AAAA apuntando solo a la IP del balanceador, certificado adjunto al target proxy, y hasta 60 minutos. gcloud compute ssl-certificates describe muestra el domainStatus que dice cuál de las tres falla.
Cloud VPN de GCP no levanta: leer los logs IKE (peer not responding, traffic selectors narrowed) y el BGP con pfSense
Logs Explorer con resource.type=vpn_gateway y el texto del estado IKE. ‘peer not responding’ = versión IKE, PSK, IP o UDP 500/4500; ’traffic selectors narrowed’ = subredes de fase 2 que no coinciden. Con pfSense y BGP: route maps permit in/out o no se aceptan rutas.
Crecer el disco de una VM Linux en caliente: rescan, growpart, pvresize, lvextend y xfs_growfs
echo 1 > /sys/class/block/sda/device/rescan; growpart /dev/sda 3; pvresize /dev/sda3; lvextend -r -l +100%FREE /dev/vg/lv. Sin LVM: resize2fs o xfs_growfs. Todo online.
DHCP opción 121: rutas estáticas classless (RFC 3442), cómo codificarlas en hex y ponerlas en ISC dhcpd, Kea, pfSense y MikroTik
{prefijo}{octetos significativos del destino}{router} por ruta, en hex; la 0.0.0.0/0 tiene cero octetos de destino. Incluye siempre la ruta por defecto en la 121, porque el cliente descarta el router de la opción 3 cuando recibe la 121. Windows la pide como 249 además de 121; Kea 2.4+ la escribe como ‘192.0.2.0/24 - 192.168.1.254’; MikroTik como 0x… con code=121.