Hola a tod@s
En este post continuaremos con la configuración más avanzada de VyOS. Veremos la configuración del segundo router y las pruebas de conectividad.
Para más detalle de cómo realizar el deploy de VyOS, revisamos el post anterior “Configuración del router virtual VyOS – Router01”
Configurar VM VyOS
Las credenciales por defecto de la máquina virtual son las siguientes:
Usuario: vyos
Password: vyos
Desde este punto comenzaremos a ver los comandos que usaremos para configurar nuestro router vyos 02.
Configurar un nombre al router virtual
vyos@VyOS-witcherIT-02# configure
vyos@VyOS-witcherIT-02# set system host-name VyOS-witcherIT-02
Habilitar SSH en VyOS-01
vyos@VyOS-witcherIT-02# set service ssh port 22
Configurar servidor DNS
vyos@VyOS-witcherIT-02# set system name-server 8.8.8.8
Confirmamos los cambios y guardamos los mismos.
vyos@VyOS-witcherIT-02# commit
vyos@VyOS-witcherIT-02# save
Ahora, lo siguiente es configurar la interface con acceso a Internet. Esto nos permitirá poder acceder vía ssh a nuestro router.
Revisamos la configuración actual de la interfaces conectadas a nuestro router.
vyos@VyOS-witcherIT-02# exit
vyos@VyOS-witcherIT-02# show interfaces
Configuramos una IP en la interface eth0 que es la que tiene acceso a internet.
vyos@VyOS-witcherIT-02# configure
vyos@VyOS-witcherIT-02# set interfaces ethernet eth0 address 192.168.100.141/24
vyos@VyOS-witcherIT-02# set interfaces ethernet eth0 description Internet
vyos@VyOS-witcherIT-02# commit && save
Revisamos la configuración.
vyos@VyOS-witcherIT-02# exit
vyos@VyOS-witcherIT-02# show interfaces
Ahora ya podemos conectarnos a la IP configurada via ssh.
Ahora necesitaremos crear una ruta estática a ISP (Internet). Con esta ruta podremos tener acceso a redes externa.
vyos@VyOS-witcherIT-02# configure
vyos@VyOS-witcherIT-02# set protocols static route 0.0.0.0/0 next-hop 192.168.100.1 distance 1
vyos@VyOS-witcherIT-02# commit && save
vyos@VyOS-witcherIT-02# ping 8.8.8.8
Configuración de router 02
En este punto veremos la configuración usada en el router 02, en mi laboratorio. Esta es una configuración y no es mandatorio, solo sirve como una humilde guía para saber cómo configurar algunas características de VyOS.
Para comenzar realizaremos la configuración de MTU en interface que usaremos.
vyos@VyOS-witcherIT-02# set interfaces ethernet eth2 mtu 9000
vyos@VyOS-witcherIT-02# set interfaces ethernet eth3 mtu 9000
Configuración de port-Channel en las interfaces eth2 y eth3.
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 description ‘Switch Port-Channel’
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 hash-policy ‘layer2’
vyos@VyOS-witcherIT-02# set interfaces ethernet eth2 bond-group ‘bond0’
vyos@VyOS-witcherIT-02# set interfaces ethernet eth2 description ‘member of bond0’
vyos@VyOS-witcherIT-02# set interfaces ethernet eth3 bond-group ‘bond0’
vyos@VyOS-witcherIT-02# set interfaces ethernet eth3 description ‘member of bond0’
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 mode round-robin
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 mtu 9000
Configuración de VRRP para red Internet
vyos@VyOS-witcherIT-02# set high-availability vrrp group Internet hello-source-address 192.168.100.142
vyos@VyOS-witcherIT-02# set high-availability vrrp group Internet interface eth0
vyos@VyOS-witcherIT-02# set high-availability vrrp group Internet peer-address 192.168.100.141
vyos@VyOS-witcherIT-02# set high-availability vrrp group Internet no-preempt
vyos@VyOS-witcherIT-02# set high-availability vrrp group Internet priority 100
vyos@VyOS-witcherIT-02# set high-availability vrrp group Internet virtual-address 192.168.100.145/24
vyos@VyOS-witcherIT-02# set high-availability vrrp group Internet vrid 200
vyos@VyOS-witcherIT-02# commit
vyos@VyOS-witcherIT-02# Save
Configuración de VRRP para red Interna
vyos@VyOS-witcherIT-02# set interfaces ethernet eth1 vif 201 address 10.200.201.3/24
vyos@VyOS-witcherIT-02# set interfaces ethernet eth1 vif 201 description Interno
vyos@VyOS-witcherIT-02# set high-availability vrrp group int hello-source-address 10.200.201.3
vyos@VyOS-witcherIT-02# set high-availability vrrp group int interface eth1.201
vyos@VyOS-witcherIT-02# set high-availability vrrp group int peer-address 10.200.201.2
vyos@VyOS-witcherIT-02# set high-availability vrrp group int no-preempt
vyos@VyOS-witcherIT-02# set high-availability vrrp group int priority 100
vyos@VyOS-witcherIT-02# set high-availability vrrp group int virtual-address 10.200.201.1/24
vyos@VyOS-witcherIT-02# set high-availability vrrp group int vrid 201
Configuración de VRRP para VLANs
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 205 address 172.16.150.3/24
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 205 description VLAN200
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 205 mtu 9000
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN200 hello-source-address 172.16.150.3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN200 interface bond0.205
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN200 peer-address 172.16.150.2
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN200 no-preempt
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN200 priority 100
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN200 virtual-address 172.16.150.1/24
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN200 vrid 205
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 206 address 172.16.160.3/24
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 206 description VLAN300
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 206 mtu 9000
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN300 hello-source-address 172.16.160.3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN300 interface bond0.206
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN300 peer-address 172.16.160.2
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN300 no-preempt
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN300 priority 100
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN300 virtual-address 172.16.160.1/24
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN300 vrid 206
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 207 address 172.16.170.3/24
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 207 description VLAN400
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 207 mtu 9000
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN400 hello-source-address 172.16.170.3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN400 interface bond0.207
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN400 peer-address 172.16.170.2
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN400 no-preempt
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN400 priority 100
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN400 virtual-address 172.16.170.1/24
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN400 vrid 207
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 208 address 172.16.180.3/24
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 208 description VLAN500
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 208 mtu 9000
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN500 hello-source-address 172.16.180.3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN500 interface bond0.208
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN500 peer-address 172.16.180.2
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN500 no-preempt
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN500 priority 100
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN500 virtual-address 172.16.180.1/24
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN500 vrid 208
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 209 address 172.16.190.3/24
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 209 description VLAN600
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 209 mtu 9000
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN600 hello-source-address 172.16.190.3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN600 interface bond0.209
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN600 peer-address 172.16.190.2
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN600 no-preempt
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN600 priority 100
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN600 virtual-address 172.16.190.1/24
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN600 vrid 209
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 210 address 172.16.210.3/24
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 210 description VLAN700
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 210 mtu 9000
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN700 hello-source-address 172.16.210.3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN700 interface bond0.210
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN700 peer-address 172.16.210.2
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN700 no-preempt
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN700 priority 100
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN700 virtual-address 172.16.210.1/24
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN700 vrid 210
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 220 address 172.16.220.3/24
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 220 description VLAN800
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 220 mtu 9000
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN800 hello-source-address 172.16.220.3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN800 interface bond0.220
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN800 peer-address 172.16.220.2
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN800 no-preempt
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN800 priority 100
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN800 virtual-address 172.16.220.1/24
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN800 vrid 220
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 230 address 172.16.230.3/24
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 230 description VLAN900
vyos@VyOS-witcherIT-02# set interfaces bonding bond0 vif 230 mtu 9000
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN900 hello-source-address 172.16.230.3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN900 interface bond0.230
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN900 peer-address 172.16.230.2
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN900 no-preempt
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN900 priority 100
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN900 virtual-address 172.16.230.1/24
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN900 vrid 230
Crear grupo de sincronización para VRRP
Un grupo de sincronización permite que los grupos VRRP realicen la transición juntos.
vyos@VyOS-witcherIT-02# edit high-availability vrrp
vyos@VyOS-witcherIT-02# set sync-group VLAN member VLAN200
vyos@VyOS-witcherIT-02# set sync-group VLAN member VLAN300
vyos@VyOS-witcherIT-02# set sync-group VLAN member VLAN400
vyos@VyOS-witcherIT-02# set sync-group VLAN member VLAN500
vyos@VyOS-witcherIT-02# set sync-group VLAN member VLAN600
vyos@VyOS-witcherIT-02# set sync-group VLAN member VLAN700
vyos@VyOS-witcherIT-02# set sync-group VLAN member VLAN800
vyos@VyOS-witcherIT-02# set sync-group VLAN member VLAN900
vyos@VyOS-witcherIT-02# set sync-group Internet member Internet
vyos@VyOS-witcherIT-02# set sync-group Interno member int
vyos@VyOS-witcherIT-02# exit
vyos@VyOS-witcherIT-02# commit
vyos@VyOS-witcherIT-02# save
Scripts de comprobación de estado
La funcionalidad VRRP se puede ampliar con scripts. VyOS soporta dos tipos de Scripts: health check scripts y scripts de transition. Scripts de health check se ejecutan comprobaciones personalizadas además de la accesibilidad del enrutador maestro. Los scripts de transition se ejecutan cuando el estado VRRP cambia de maestro a backup o error y viceversa, y se puede utilizar para habilitar o deshabilitar ciertos servicios.
Buscando en la web, encontré un script básico de comprobación de estado (https://forum.vyos.io/t/vrrp-check-script-succeeds-when-run-in-shell-fails-when-run-by-vrrp/4507/10). Para la configuración que tengo en mi laboratorio funciona correctamente.
vyos@VyOS-witcherIT-02# vi /config/scripts/vrrp.sh
(Agregar al archivo)
#!/bin/bash
echo “$(date) test” >> /tmp/checkvtysh
/usr/bin/vtysh -c “show ip route” >> /tmp/checkvtysh 2>&1
“Guardar los cambios”
vyos@VyOS-witcherIT-02# chmod +x /config/scripts/vrrp.sh
Confirmamos los cambios y guardamos la configuración.
Configuración de comprobación de estado con script
Esta configuración hará que el proceso VRRP se ejecute cada 60 segundos y haga la transición del grupo si falla (es decir, salidas con estado distinto de cero) tres veces.
vyos@VyOS-witcherIT-02# set high-availability vrrp group int health-check script /config/scripts/vrrp.sh
vyos@VyOS-witcherIT-02# set high-availability vrrp group int health-check interval 60
vyos@VyOS-witcherIT-02# set high-availability vrrp group int health-check failure-count 3
vyos@VyOS-witcherIT-02# set high-availability vrrp group Internet health-check script /config/scripts/vrrp.sh
vyos@VyOS-witcherIT-02# set high-availability vrrp group Internet health-check interval 60
vyos@VyOS-witcherIT-02# set high-availability vrrp group Internet health-check failure-count 3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN200 health-check script /config/scripts/vrrp.sh
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN200 health-check interval 60
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN200 health-check failure-count 3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN300 health-check script /config/scripts/vrrp.sh
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN300 health-check interval 60
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN300 health-check failure-count 3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN400 health-check script /config/scripts/vrrp.sh
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN400 health-check interval 60
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN400 health-check failure-count 3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN500 health-check script /config/scripts/vrrp.sh
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN500 health-check interval 60
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN500 health-check failure-count 3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN600 health-check script /config/scripts/vrrp.sh
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN600 health-check interval 60
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN600 health-check failure-count 3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN700 health-check script /config/scripts/vrrp.sh
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN700 health-check interval 60
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN700 health-check failure-count 3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN800 health-check script /config/scripts/vrrp.sh
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN800 health-check interval 60
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN800 health-check failure-count 3
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN900 health-check script /config/scripts/vrrp.sh
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN900 health-check interval 60
vyos@VyOS-witcherIT-02# set high-availability vrrp group VLAN900 health-check failure-count 3
Configurar NAT
Source NAT generalmente se conoce simplemente como NAT, y es el proceso de tener muchos host internos que se comunican con Internet utilizando una IP única o un subconjunto de direcciones IP.
Para configurar SNAT, necesitamos saber:
- Las direcciones IP internas que queremos traducir;
- La interfaz saliente para realizar la translation on;
- La dirección IP externa a la que se va a traducir.
vyos@VyOS-witcherIT-02# set nat source rule 10 outbound-interface eth0
vyos@VyOS-witcherIT-02# set nat source rule 20 outbound-interface eth0
vyos@VyOS-witcherIT-02# set nat source rule 30 outbound-interface eth0
vyos@VyOS-witcherIT-02# set nat source rule 40 outbound-interface eth0
vyos@VyOS-witcherIT-02# set nat source rule 50 outbound-interface eth0
vyos@VyOS-witcherIT-02# set nat source rule 60 outbound-interface eth0
vyos@VyOS-witcherIT-02# set nat source rule 10 source address 10.200.201.0/24
vyos@VyOS-witcherIT-02# set nat source rule 20 source address 172.16.150.0/24
vyos@VyOS-witcherIT-02# set nat source rule 30 source address 172.16.160.0/24
vyos@VyOS-witcherIT-02# set nat source rule 40 source address 172.16.170.0/24
vyos@VyOS-witcherIT-02# set nat source rule 50 source address 172.16.180.0/24
vyos@VyOS-witcherIT-02# set nat source rule 60 source address 172.16.190.0/24
vyos@VyOS-witcherIT-02# set nat source rule 10 translation address masquerade
vyos@VyOS-witcherIT-02# set nat source rule 20 translation address masquerade
vyos@VyOS-witcherIT-02# set nat source rule 30 translation address masquerade
vyos@VyOS-witcherIT-02# set nat source rule 40 translation address masquerade
vyos@VyOS-witcherIT-02# set nat source rule 50 translation address masquerade
vyos@VyOS-witcherIT-02# set nat source rule 60 translation address masquerade
Configuración de OSPF
Open Shortest Path First (OSPF) es un protocolo de enrutamiento para el protocolo de Internet Redes (IP). Utiliza un algoritmo de enrutamiento de estado de enlace (LSR) y cae en el grupo de interior gateway protocols (IGP), que operan dentro de un único autónomo sistema (AS). Se define como OSPF Versión 2 en RFC2328 (1998) para IPv4. Actualizaciones para IPv6 se especifican como OSPF Versión 3 en RFC5340 (2008). OSPF apoya el Modelo de direccionamiento de enrutamiento entre dominios sin clases (CIDR).
Esta es una configuración básica de OSPF del Router 02.
Para tener un sistema VyOS intercambiando rutas con vecinos OSPF, al menos necesitaremos configurar un área y una red.
Configuración de OSPF para la red con salida a Internet:
vyos@VyOS-witcherIT-02# config
vyos@VyOS-witcherIT-02# set protocols ospf area 0 network 192.168.100.0/24
Configuración de OSPF para la red interna:
vyos@VyOS-witcherIT-02# set protocols ospf area 200 network 10.200.201.0/24
Configuración de OSPF para las VLAN sobre bond0:
vyos@VyOS-witcherIT-02# set protocols ospf area 100 network 172.16.150.0/24
vyos@VyOS-witcherIT-02# set protocols ospf area 100 network 172.16.160.0/24
vyos@VyOS-witcherIT-02# set protocols ospf area 100 network 172.16.170.0/24
vyos@VyOS-witcherIT-02# set protocols ospf area 100 network 172.16.180.0/24
vyos@VyOS-witcherIT-02# set protocols ospf area 100 network 172.16.190.0/24
vyos@VyOS-witcherIT-02# set protocols ospf area 100 network 172.16.210.0/24
vyos@VyOS-witcherIT-02# set protocols ospf area 100 network 172.16.220.0/24
vyos@VyOS-witcherIT-02# set protocols ospf area 100 network 172.16.230.0/24
El otro punto mínimo de la configuración es ID:
vyos@VyOS-witcherIT-02# set protocols ospf parameters router-id 2.2.2.2
vyos@VyOS-witcherIT-02# set protocols ospf log-adjacency-changes
vyos@VyOS-witcherIT-02# commit
vyos@VyOS-witcherIT-02# save
Podemos revisar la configuración con el comando:
vyos@VyOS-witcherIT-02# run show ip ospf neighbor
Esta es la configuración de prueba que estoy manejando actualmente en mi laboratorio. No es una configuración perfecta y puede que tenga algunos problemas, ya que no soy experto en redes. La idea es brindar una pequeña guía y dar a conocer VyOS como una excelente alternativa para manejar el enrutamiento o firewall en nuestro laboratorio.
Espero que esta información pueda ser de ayuda, y cualquier duda o sugerencia la dejan en los comentarios. Saludos.
Lista completa de la serie: