Configuración de interfaces físicas, VLANs (vif) y agregación de enlaces (bonding) en Vyatta
Seguimos con los tutoriales de ejemplo para mostrar la forma de configurar los módulos de Vyatta. En este paso a paso de configuración de Vyatta nos centramos en la topología o esquema base que hemos creado para explicar la forma de configurar nuestra máquina Vyatta como router open source de la red, configuraremos interfaces, VLANs (vif) y enlaces agregados de red (bonding) para conseguir el primer paso y que actúe como router open source de la red interna y la mantenga segmentada según la topología propuesta.
En un post anterior pusimos un ejemplo de configuración básica inicial de Vyatta. Conviene pasar de nuevo y refrescar algunos conceptos y consejos de uso del CLI de Vyatta.
En esta publicación vamos a centrarnos en una configuración similar aunque algo más avanzada a la citada en el párrafo anterior pero en este caso vamos a ceñirnos a la topología o esquema base que hemos creado en la que se ha tratado de simular un entorno que se ajuste perfectamente a la realidad y para que sirva como referencia y punto de partida a las siguientes publicaciones que se vayan poniendo mostrando con ejemplos como se configuran los diferentes módulos y servicios que Vyatta integra.
Según la topología ejemplo tenemos un entorno con dos oficinas de la misma empresa geográficamente separadas y que habremos de interconectar de forma segura mediante una máquina Vyatta conectada a internet en cada una de las oficinas, a estas máquinas Vyatta las hemos llamado openredesR1 y openredesR2.
Configuration de openredesR1
openredesR1 tiene 3 interfaces de red, dos de ellas (eth0 y eth1) estarán configuradas como Link Aggregation (LACP, IEEE 802.3ad, NIC bonding, NIC teaming) 1 formando bond0 y la otra, eth2 está conectada al router ADSL. A su vez para posteriormente poder aplicar diferentes políticas de seguridad a los distintos departamentos de la empresa se ha decidido crear diferentes VLANs 2 que dividen la red LAN en subredes más pequeñas y homogéneas en cuanto a forma de trabajo y tipo de tráfico generado en la red se refiere. Para esto es necesario dividir bond0 en 5 subredes exactamente y configurar en openredesR1 una IP dentro del rango establecido para cada una de las subredes o VLAN que vamos a crear.
Entonces para configurar las 3 interfaces que tiene openredesR1 en la forma especificada y tener conectividad a Internet desde openredesR1 y las subredes creadas seguimos los siguientes pasos:
-
Creamos y editamos la interfaz bond0:
openredes@openredesR1# edit interfaces bonding bond0 3 [edit interfaces bonding bond0] openredes@openredesR1# set description LANTRUNK1A [edit interfaces bonding bond0] openredes@openredesR1# set mode 802.3ad 4 [edit interfaces bonding bond0] openredes@openredesR1# commit [edit interfaces bonding bond0] openredes@openredesR1# top 5 [edit] -
Añadimos las interfaces esclavas que van a formar parte de bond0:
openredes@openredesR1# set interfaces ethernet eth0 bond-group bond0 [edit] openredes@openredesR1# set interfaces ethernet eth1 bond-group bond0 [edit] openredes@openredesR1# commit [edit] -
Creamos las interfaces virtuales (VLANs) en bond0 asignándoles por ahora a cada una su IP (utilizaremos la última de cada rango) y una descripción:
openredes@openredesR1# edit interfaces bonding bond0 [edit interfaces bonding bond0] openredes@openredesR1# set vif 10 address 192.168.0.126/25 [edit interfaces bonding bond0] openredes@openredesR1# set vif 10 description Ventas [edit interfaces bonding bond0] openredes@openredesR1# set vif 20 address 192.168.0.190/26 [edit interfaces bonding bond0] openredes@openredesR1# set vif 20 description Marketing [edit interfaces bonding bond0] openredes@openredesR1# set vif 30 address 192.168.0.206/28 [edit interfaces bonding bond0] openredes@openredesR1# set vif 30 description Admon [edit interfaces bonding bond0] openredes@openredesR1# set vif 40 address 192.168.0.222/28 [edit interfaces bonding bond0] openredes@openredesR1# set vif 40 description Gerencia [edit interfaces bonding bond0] openredes@openredesR1# set vif 50 address 192.168.0.238/28 [edit interfaces bonding bond0] openredes@openredesR1# set vif 50 description DMZ [edit interfaces bonding bond0] openredes@openredesR1# commit [edit interfaces bonding bond0] openredes@openredesR1# top [edit] -
Después configuramos la interfaz conectada al router ADSL (en este caso suponemos que el router esta configurado en monopuesto o bridge con lo que tenemos la IP pública en la interfaz eth2 de Vyatta y tenemos que gestionar los parámetros de conexión con el ISP, que suponemos usa encapsulación PPPoE 6, en el ejemplo, usaremos también direcciones IP “TEST-NET” 7), todos estos datos necesitaremos obtenerlos de nuestro ISP:
openredes@openredesR1# set interfaces ethernet eth2 pppoe 0 local-address 192.0.2.10 [edit] openredes@openredesR1# set interfaces ethernet eth2 pppoe 0 user-id usuario@adsl [edit] openredes@openredesR1# set interfaces ethernet eth2 pppoe 0 password password [edit] openredes@openredesR1# set interfaces ethernet eth2 remote-address 192.0.2.1 [edit] openredes@openredesR1# commit [edit] -
Vemos a modo de resumen la configuración que acabamos de dar a las interfaces para comprobar posibles errores:
openredes@openredesR1# run show interfaces bonding bond0 { description LANTRUNK1A mode 802.3ad vif 10 { address 192.168.0.126/25 description Ventas } vif 20 { address 192.168.0.190/26 description Marketing } vif 30 { address 192.168.0.206/28 description Admon } vif 40 { address 192.168.0.222/28 description Gerencia } vif 50 { address 192.168.0.238/28 description DMZ } } ethernet eth0 { bond-group bond0 duplex auto hw-id aa:bb:cc:dd:ee:ff smp_affinity auto speed auto } ethernet eth1 { bond-group bond0 duplex auto hw-id ff:ee:dd:cc:bb:aa smp_affinity auto speed auto } ethernet eth2 { description Publica duplex auto hw-id a1:b2:c3:d4:e5:f6 pppoe 0 { local-address 192.0.2.10 password password remote-address 192.0.2.1 user-id usuario@adsl } smp_affinity auto speed auto } loopback lo { } -
También desde el modo de operación podemos ver la configuración que acabamos de hacer y el estado de las interfaces:
openredes@openredesR1# run show interfaces Interface IP Address State Link Description bond0 - up up LANTRUNK1A bond0.10 192.168.0.126/25 up up Ventas bond0.20 192.168.0.190/26 up up Marketing bond0.30 192.168.0.206/28 up up Administracion bond0.40 192.168.0.222/28 up up Gerencia bond0.50 192.168.0.238/28 up up DMZ eth0 - up up eth1 - up up eth2 192.0.2.10/24 up up lo 127.0.0.1/8 up up lo ::1/128 up up [edit] openredes@openredesR1#
Con esto ya tenemos en openredesR1 todas las subredes creadas (habiendo configurado previamente el switch para gestionar dichas VLANs y para soportar LACP en los puertos especificados), las interfaces operativas para actuar como router en todas las subredes y con acceso internet sin limitaciones.
-
El último paso una vez terminado de configurar openredesR1 como router para la primera sede ejemplo es guardar la configuración para que sea persistente ante cualquier reinicio:
openredes@openredesR1# save Saving configuration to '/opt/vyatta/etc/config/config.boot'... Done [edit]
Configuración de openredesR2
De la misma forma pasamos a la configuración básica de openredesR2, al igual que openredesR1 también tiene 3 interfaces de red, dos de ellas (eth0 y eth1) estarán configuradas como Link Aggregation (LACP, IEEE 802.3ad, NIC bonding, NIC teaming) 1 formando bond0 y la otra, eth2 está conectada al router ADSL. A su vez para posteriormente poder aplicar diferentes políticas de seguridad a los distintos departamentos de la empresa se ha decidido crear diferentes VLANs 2 que dividen la red LAN en subredes más pequeñas y homogéneas en cuanto a forma de trabajo y tipo de tráfico generado en la red se refiere. Para esto, en este caso, es necesario dividir bond0 en 3 subredes exactamente y configurar en openredesR2 una IP dentro del rango establecido para cada una de las subredes o VLAN que vamos a crear.
Entonces para configurar las 3 interfaces que tiene openredesR2 en la forma especificada y tener conectividad a Internet desde openredesR2 y las subredes creadas seguimos los siguientes pasos:
-
Creamos y editamos la interfaz bond0:
openredes@openredesR2# edit interfaces bonding bond0 3 [edit interfaces bonding bond0] openredes@openredesR2# set description LANTRUNK1B [edit interfaces bonding bond0] openredes@openredesR2# set mode 802.3ad 4 [edit interfaces bonding bond0] openredes@openredesR2# commit [edit interfaces bonding bond0] openredes@openredesR2# top 5 [edit] -
Añadimos las interfaces esclavas que van a formar parte de bond0:
openredes@openredesR2# set interfaces ethernet eth0 bond-group bond0 [edit] openredes@openredesR2# set interfaces ethernet eth1 bond-group bond0 [edit] openredes@openredesR2# commit [edit] -
Creamos las interfaces virtuales (VLANs) en bond0 asignándoles por ahora a cada una su IP (utilizaremos la última de cada rango) y una descripción:
openredes@openredesR2# edit interfaces bonding bond0 [edit interfaces bonding bond0] openredes@openredesR2# set vif 60 address 192.168.1.126/25 [edit interfaces bonding bond0] openredes@openredesR2# set vif 60 description I+D [edit interfaces bonding bond0] openredes@openredesR2# set vif 70 address 192.168.1.190/26 [edit interfaces bonding bond0] openredes@openredesR2# set vif 70 description Desarrollo [edit interfaces bonding bond0] openredes@openredesR2# set vif 80 address 192.168.1.254/26 [edit interfaces bonding bond0] openredes@openredesR2# set vif 80 description Servers [edit interfaces bonding bond0] openredes@openredesR2# commit [edit interfaces bonding bond0] openredes@openredesR2# top [edit] -
Después configuramos la interfaz conectada al router ADSL (en este caso suponemos que el router está configurado en monopuesto o bridge con lo que tenemos la IP pública en la interfaz eth2 de Vyatta y tenemos que gestionar los parámetros de conexión con el ISP, que suponemos usa encapsulación PPPoE 6, en el ejemplo, usaremos también direcciones IP del bloque “TEST-NET” 7), todos estos datos necesitaremos obtenerlos de nuestro ISP:
openredes@openredesR2# set interfaces ethernet eth2 pppoe 0 local-address 192.0.2.20 [edit] openredes@openredesR2# set interfaces ethernet eth2 pppoe 0 user-id usuario@adsl [edit] openredes@openredesR2# set interfaces ethernet eth2 pppoe 0 password password [edit] openredes@openredesR2# set interfaces ethernet eth2 remote-address 192.0.2.1 [edit] openredes@openredesR2# commit [edit] -
Comprobamos la configuración de interfaces que acabamos de hacer:
openredes@openredesR2# run show interfaces bonding bond0 { description LANTRUNK1B mode 802.3ad vif 60 { address 192.168.1.126/25 description I+D } vif 70 { address 192.168.1.190/26 description Desarrollo } vif 80 { address 192.168.1.254/26 description Servers } } ethernet eth0 { bond-group bond0 duplex auto hw-id 00:11:22:33:44:55 smp_affinity auto speed auto } ethernet eth1 { bond-group bond0 duplex auto hw-id 01:23:45:67:89:ab smp_affinity auto speed auto } ethernet eth2 { description Publica duplex auto hw-id 55:44:33:22:11:00 pppoe 0 { local-address 192.0.2.20 password password remote-address 192.0.2.1 user-id usuario@adsl } smp_affinity auto speed auto } loopback lo { }
Con esto ya tenemos en openredesR2 todas las subredes creadas (habiendo configurado previamente el switch para gestionar dichas VLANs y para soportar LACP en los puertos especificados), las interfaces operativas para actuar como router en todas las subredes y con acceso internet sin limitaciones.
-
El último paso una vez terminado de configurar openredesR2 como router para la segunda sede ejemplo es guardar la configuración para que sea persistente ante cualquier reinicio:
openredes@openredesR2# save Saving configuration to '/opt/vyatta/etc/config/config.boot'... Done [edit]
- ^ Para por llevar a cabo la configuración citada de agregación de enlaces es necesario que el switch al que conectemos los enlaces soporte y tenga los puertos a los que conectamos dichos enlaces configurados según el protocolo LACP.
- ^ Para el funcionamiento de las subredes hemos de configurar el switch para que refleje las VLANs etiquetadas de la misma forma que lo hemos hecho en nuestro router Vyatta.
- ^ Recordemos que con el comando “edit” nos posicionamos directamente en la rama del nodo que especifiquemos a continuación.
Recordemos también que el tabulador es nuestro amigo :) - ^ Usamos el ejemplo el modo 802.3ad o Dynamic link aggregation, que permite crear grupos de enlaces en agregación que compartan las mismas configuraciones de velocidad y duplex. Permite “sumar” las capacidades de todos los enlaces del grupo y ofrecer tolerancia a fallos ante la caída de puertos o de enlaces.
- ^ Recordemos que con el comando “top” salimos de la rama en la que estamos y volvemos a la raíz del sistema de configuración.
- ^ La encapsulación PPPoE (Point-to-Point Protocol over Ethernet) se usa crear un PVC en líneas ADSL tal y como define el RFC 2516. Podemos configurar para este fin tanto una interfaz ADSL como una interfaz Ethernet (no será así¬ para el resto de encapsulaciones ADSL).
- ^ “TEST-NET” es un bloque de direcciones de ejemplo que comprende las IPs contenidas en el bloque 192.0.2.0/24 (ver actualización de direcciones IPv4 reservadas para proposito especial) para su uso en documentación y código ejemplo como establece el RFC 3330.













Gracias por las oportunas y rapidas respuestas. Pues si, me he entusiasmado bastante y creo que voy demasiado rapido, como bien has dicho.
Por lo menos, antes de la gran configuracion de firewall y webproxy mis pc’s en las vlan 10 y 20 tienen internet perfectamente, y sin ningun problema.
Bueno, porque el webproxy? La respuesta es que este proyecto va relacionado con la efectividad laboral de alguna empresa, por eso es vital prohibir contenidos como “malware”, “porn”, etc y algunos bloqueos manuales como “facebook.com” y algunos blog’s que hacen perder el tiempo. (Openredes será el unico abierto jajaja)
Si, es mi proyecto de final de estudios, por eso estoy un tanto nervioso en cuanto a mi tiempo …luego veré que esta todo cuesta arriba..por eso ahora estoy “afilando mi hacha” :).
Me dedicaré a leer sobre Firewall, que eso en verdad me complica. Lo del webproxy lo entendi, por eso quiero aplicar eso primero y luego el firewall.
Gracias de nuevo y espero con ansias los nuevos tutoriales :)
Me alegro que hayas elegido Vyatta para tu proyecto final.
Sigo aconsejandote:
- deja el webproxy para el final.
- dedicale un tiempo a pensar que módulos vas a usar de los que vyatta te brinda, haz una lista, me cuentas y te digo en que orden los configuraría yo.
Ya he leido todos las configuracion que has hecho a las distintas vlan’s tuyas y estan buenisimas.
Voy por lo mio. Hoy he podido ver porfin la GUI en otro PC que no es el vyatta. Hace rato que queria verlo, y ahora pude hacerlo.
Ahora, que politicas instauraré? No sé si son todas…espero que tu tambien puedas reconmendarme unas más.
———–Cloud: —– internet: 192.168.109.3/24
————–| ———DNS: 146.83.108.144 y 146.83.108.152
————–|
————–| e0
——-vyatta-router
————–| e1
————–|
——-Switch cisco
———–/—
———/——
——-/ ———-
PC´s ————–Server
Vlan10 ———–Vlan 20
Para Vlan 10:
Como esta orientada a una empresa ficticia sin un rubro en particular creo que con estas reglas estarán bien:
-Acceso libre a internet solo puertos conocidos (cuales son los puertos conocidos? Solo http-https-mysql-micrsoftSQL?)
-Permitir puertos para correo (POP SMTP, etc)
-Bloquear todos otros puertos no mencionados (solo conozco p2p que es el mas conocido…no sé si hay mas que tambien se ocupe bastante, quizas el del msn tambien)
-Por ultimo, sería inhabilitar con el webproxy algunas paginas y categorias que el web proxy me da (ej: facebook, youtube, myspace, fotolog).
Para la Vlan 20:
Lo ideal sería habilitar toda la seguridad posible, ya que este “server” contendra informacion vital tanto de la empresa como de los clientes. Algunas politicas serían:
-Habilitar un tunel VPN desde internet al server, con autentificacion, obviamente
-Denegar todo trafico desde internet al Server.
-Mantener un registro de todas las conexiones.
-Permitir administracion del Router Vyatta.
-Permitir trafico desde la VLan 10 a Vlan 20 y viceversa.
-Denegar cualquier otro tipo de puertos que no sean los “conocidos”
Bueno, eso es lo que pensé. Si tienes alguna recomendacion o algun cambio,soy todo oidos.
Nuevamente, gracias por todo ^^.
(Como anecdota, mi profesor de proyecto, es el mismo que me hizo los 4 cursos CISCO jajaja)
cuales son los puertos conocidos? son los puertos normales de navegación por internet, http, https y quizas ftp. Con esto ya evitas conexiones p2p y otros que no sean los mencionados, asi que no tienes que crear una nueva regla para tema p2p, msn…
En cuanto a la config de firewall para la vlan20, que servicios ofrecerá el server? acepta solo recepcion a esos y envio desde esos servicios.
Vas a enseñarle a tu profe de CCNA nuevos orizontes no? jeje muy bien!
Hola de nuevo =D
Mira, ayer trate configurar firewall y tuve problemas :S
Me estaba guiando con tus tutoriales de Firewall, pero creo que tengo un problemilla por ahi.
Con respecto a el trafico “local” no tengo problemas. Ocupe los mismos comandos y sigo navegando sin ni un solo problema
#edit firewall name vlan-10local
#edit rule 5
#set action reject
#set state invalid enable
#commit
—————————-
#edit rule 10
#set action accept
#set destination port domain, bootpc
#set protocol tcp_udp
#commit
Con estos comandos no hay problema de navegacion ni nada. Puedo seguir navegando y el DHCP funciona [y si, tambien puse el comando de aplpicar el firewall a la interfaz].
El problema es cuando quiero configurar el trafico “in”.
Trate solamente de implementar la regla 2 (esa que acepta el trafico entre puertos conocidos….eso es lo que entendi, no sé si esta bien lo que dije ).
Configure primero el grupo de puertos
# edit firewall group port-group puertos-vlan10-20
[edit firewall group port-group puertos-vlan10-20]
# set port 80
[edit firewall group port-group puertos-vlan10-20]
# set port 443
[edit firewall group port-group puertos-vlan10-20]
# set port 1433
[edit firewall group port-group puertos-vlan10-20]
# set port 3306
[edit firewall group port-group puertos-vlan10-20]
# set port 995
[edit firewall group port-group puertos-vlan10-20]
# set port 465
[edit firewall group port-group puertos-vlan10-20]
# set port 993
[edit firewall group port-group puertos-vlan10-20]
# commit
Luego en la regla 2:
#edit name vlan-10in
#edit rule 2
#set action accept
Con solo esos 3 comandos, aún todo funciona de maravillas. El problema va con los siguientes 3 comandos:
#set destination group port-group puertos-vlan10-20
#set state established enable
#set related enable
Probe con los 3 juntos, y nada. Probe cada uno por separado y nada tampoco. No puedo navegar, o sea no carga ninguna pagina. Que será mi problema? la configuracion de sistema, interfaces y servicios son las mismas. No he cambiado nada.
Gracias por tu tiempo de nuevo y ojala me ayudes con este problema :)
Ya no me quieres…xD
jeje tranqui hombre, es que he estao liaillo ultimamente.
A ver, la regla no te funciona porque solo permites conexiones que ya se han iniciado antes, si añades despues de la regla 2 otra numero 5 por ejemplo en la que permitas el inicio de las conexiones que especificas en ese grupo de puertos ya no tendras problema.
Otra cosa que puedes hacer es no reflejar nada de estado de conexión o insertar tambien el comando que permita las conexiones iniciarse “set state new enable” en la regla 2.
No intentes llevar al pie de la letra los ejemplos que yo hago en los tutoriales, la idea es que entiendas perfectamente lo que hago y como lo hago y una vez entiendas todo no tendrás problema en enfrentarte a cualquier tipo de configuración.
hola tengo una duda y de paso agradezco de antemano, mira aquí en el post Configuración de switches virtuales en VMware (vswitches). se crearon los vswitches con las vlans, ahora este post es diferente? o sigo configurando? porque como en el esxi puedes elegir a la maquina virtual que dependa de la vlan que tu desees, ahora mi duda es que si va de la mano con la configuracion del vyatta o son 2 cosas distintas?
Hay que hacerlo tanto en los vswitches como en Vyatta.