Problema

En muchos homelabs la tentación es conectar todos los dispositivos a un único broadcast domain por comodidad. Con el tiempo esa arquitectura se vuelve frágil: un equipo comprometido puede acceder a servidores críticos, el tráfico de invitados congestiona la red y la gestión de políticas de seguridad se vuelve un caos. El patrón que surge es la necesidad de segmentar la red en varios dominios lógicos (trusted, guest, servers, DMZ) y aplicar reglas de firewall entre ellos, manteniendo conectividad entre sitios remotos mediante protocolos ligeros como RIP y ofreciendo acceso remoto seguro con SSL‑VPN. El reto no es solo crear los VLANs, sino asegurarse de que la segmentación sea coherente, que las rutas se propaguen correctamente y que la política de firewall no se “derrite” con el tiempo.

Causa

  1. Diseño de VLAN incompleto – Definir los ID y asignar puertos sin documentar la intención lleva a que dispositivos terminen en la VLAN equivocada.
  2. Rutas estáticas vs. dinámicas – Mezclar rutas estáticas con un protocolo de vector‑distancia (RIP) sin filtrar adecuadamente los anuncios genera bucles o rutas inesperadas.
  3. Políticas de firewall dispersas – Configurar reglas en varios dispositivos (FortiGate, Cisco ISR) sin una base común provoca solapamientos y brechas de seguridad.
  4. Falta de automatización de backups – Los archivos de configuración cambian frecuentemente; sin backups programados la recuperación después de un fallo es lenta y propensa a errores.
  5. Monitoreo limitado – Sin métricas de tráfico y alertas, la degradación de la red o la violación de políticas pasa desapercibida hasta que ocurre un incidente.

Solución

1. Planificación de VLANs y asignación de puertos

  • Define un esquema de numeración (por ejemplo, 10 = trusted, 20 = guest, 30 = servers, 40 = DMZ).
  • Documenta cada VLAN en un archivo Markdown o en un repositorio Git; incluye propósito, dispositivos autorizados y rango de IP.
  • En el switch (Cisco 3560E) crea las VLAN y asigna puertos en modo access o trunk según corresponda:
configure terminal
vlan 10
 name TRUSTED
exit
vlan 20
 name GUEST
exit
interface GigabitEthernet1/0/1
 switchport mode access
 switchport access vlan 10
exit
interface GigabitEthernet1/0/24
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30,40
exit
write memory

2. Enrutamiento entre VLANs y sitios

  • RIP es suficiente para un homelab de dos sitios. Configura RIP solo en las interfaces que conectan los routers (FortiGate y Cisco ISR).
  • Filtra anuncios con distribute-list o route-map para que solo las subredes necesarias se propaguen.
  • En el FortiGate, habilita el inter‑VLAN routing y asócialo a la zona de confianza:
config system interface
 edit "vlan10"
  set ip 10.0.10.1/24
  set vlanid 10
  set interface "port1"
 next
 edit "vlan20"
  set ip 10.0.20.1/24
  set vlanid 20
  set interface "port1"
 next
end

config router rip
 set status enable
 config network
  edit 1
   set prefix 10.0.10.0/24
  next
  edit 2
   set prefix 10.0.20.0/24
  next
 end
end

3. Política de firewall centralizada

  • Modelo de zona: agrupa VLANs en zonas (Trusted, Guest, Servers, DMZ).
  • Regla base: denegar todo entre zonas y permitir solo lo necesario (p.ej., HTTP/HTTPS del DMZ a Internet, SSH desde Trusted a Servers).
  • Usa la interfaz de línea de comandos del FortiGate para exportar la política a un archivo y versionarla:
execute backup config flash
  • Automatiza la validación con un script que compare la política actual contra un archivo de referencia:
#!/usr/bin/env bash
REF="/etc/fg_policy.ref"
CUR="/tmp/fg_policy.cur"
execute show firewall policy > "$CUR"
if diff -q "$REF" "$CUR" >/dev/null; then
  echo "Política sin cambios"
else
  echo "Diferencias detectadas"
  # opcional: enviar alerta
fi

4. Backups automáticos y control de deriva

  • Programa una tarea cron que copie la configuración de cada dispositivo a un repositorio Git.
  • Cada commit incluye la fecha y un hash del estado, facilitando rollback.
0 2 * * * /usr/local/bin/backup-fgt.sh >> /var/log/backup-fgt.log 2>&1

backup-fgt.sh:

#!/usr/bin/env bash
HOST="10.0.10.1"
USER="admin"
PASS="********"
sshpass -p "$PASS" ssh "$USER@$HOST" "execute backup config flash" > "/backups/fg-$(date +%F).conf"
cd /backups && git add . && git commit -m "Backup $(date +%F)" && git push

5. Monitoreo con Prometheus/Grafana

  • Exporta métricas del FortiGate y del switch mediante snmp_exporter.
  • Crea dashboards que muestren tráfico por VLAN, uso de CPU y alertas de cambios de política.
  • Configura alertmanager para notificar por Telegram o correo cuando una regla de firewall se modifique.

Cuándo aplicar esta solución

  • Entornos con varios tipos de tráfico (invitados, servidores críticos, servicios expuestos).
  • Sitios distribuidos que requieren una ruta dinámica ligera (RIP, OSPF) sin la complejidad de BGP.
  • Políticas de seguridad estrictas donde la deriva de configuración es inaceptable.
  • Necesidad de visibilidad: si ya usas Prometheus/Grafana o planeas hacerlo, la integración es directa.

No es adecuada cuando:

  • El número de dispositivos supera los límites de un solo firewall y se necesita un cluster de firewalls.
  • Se requiere enrutamiento avanzado (BGP con múltiples proveedores).
  • La infraestructura está basada exclusivamente en la nube y no hay hardware on‑premise.

Código

#!/usr/bin/env bash
# backup-fgt.sh – copia la configuración del FortiGate a Git
HOST="10.0.10.1"
USER="admin"
PASS="********"
DATE=$(date +%F)
sshpass -p "$PASS" ssh "$USER@$HOST" "execute backup config flash" > "/backups/fg-$DATE.conf"
cd /backups
git add "fg-$DATE.conf"
git commit -m "Backup $DATE"
git push

Verificación

  1. Conectividad VLAN – Desde un host en la VLAN 10, ping a 10.0.20.1 (VLAN 20). Debería fallar si la política lo bloquea.
  2. RIP – En ambos routers ejecuta show ip rip database. Verifica que las rutas de las subredes remotas aparecen con la métrica esperada.
  3. Política – Ejecuta el script de validación de política y confirma que no hay diferencias con el archivo de referencia.
  4. Backup – Revisa el último commit en Git; el archivo de configuración debe coincidir con la salida del comando show running-config del firewall.
  5. Dashboard – Abre Grafana, verifica que los paneles de tráfico por VLAN muestran datos y que no hay alertas activas.

Notas adicionales

  • Orden de encendido: los switches deben iniciar antes que los routers para que los puertos trunk estén listos cuando el router solicite DHCP.
  • MTU: si usas VPN IPSec, ajusta la MTU de las VLAN a 1400 bytes para evitar fragmentación.
  • RIP autenticado: aunque RIP es simple, habilitar autenticación con MD5 evita anuncios no autorizados.
  • Documentación viva: almacena diagramas en mermaid dentro del mismo repositorio Git; así los cambios de topología quedan versionados.
  • Escalabilidad: si añades más sitios, considera migrar a OSPF; la configuración de filtros y áreas es similar a la de RIP.