- Mensajes
- 13,686
Introducción
Hoy os quiero hablar de uno de los temas más controvertidos de implementar en mikrotik: el tema de las VLANs. Desde la aparición de la versión 6.41 de RouterOS y la aparición de bridges sustituyendo a las master/slave interfaces, el tema de cómo implementar VLANs en un mikrotik ha sido todo una fiesta de gente tirándose al monte (donde me incluyo) e intentado averiguar cual es la manera más correcta de implementar VLANs en su red local. La razón es que, desde la introducción de ese firmware, el tema de las VLANs pasaron a implementarse de una manera muy distinta a como se venían implementado antes. Básicamente antes tenías dos posibilidades: o las hacías a nivel software (interface -> VLAN), cosa que soporta cualquier equipo; o a nivel hardware, si eras afortunado de tener un equipo con un switch chip compatible con tabla de VLANs (switch -> VLAN). Sin embargo ahora entra en juego una tercera: el inter-VLAN-filtering, a nivel de bridge (Bridge -> VLANs), el cual puede funcionar a nivel hardware o software, dependiendo de nuestro equipo. Normalmente estarmos en el primer caso, y funcionarán por software, porque sólo los equipos más potentes de la marca (CCR's) soportan dicha implementación por hardware. Pero eso no quita que nos pueda venir muy bien para montar esto a nivel casero, y sobre todo para aprender cómo funciona una VLAN.
Un poco de culturilla general
Lo primero que tenemos que aclarar son dos conceptos: ¿qué es una VLAN? ¿para qué sirve una VLAN?
Respondiendo a la primera pregunta, diremos que una VLAN es un LAN virtual. Es decir, una manera de poder meter por un mismo puerto/cable, varias redes LAN al mismo tiempo, usando una etiqueta en la cabecera del paquete a transmitir que la identifique e identifique el tráfico perteneciente a las mismas, de tal manera que luego se puedan recuperar sólo es tráfico de manera independiente del resto. Para esto se utiliza una cabecera adicional en el frame ethernet a transmitir (802.1Q Header), metiendo un extra de 4bytes (32 bits) adicionales al tamaño del paquete ethernet. Los primeros 16 bits se usan para identificar el paquete como perteneciente a al protocolo 802.1Q (TPID), como una trama etiquetada con una VLAN, mientras que, de los 16 restantes (TCI), 12 se encargan de llevar el número de VLAN correspondiente + 4 de pico para tareas de QoS. Con 12 bits podemos direccionar, en teoría, 4096 vlans distintas (2^12), de las cuales un par de direcciones están reservadas, quedándonos una cifra final, nada desdeñable, de 4094 VLAN ID's distintos que poder usar.
Respondiendo a la segunda pregunta, se usan para muchas cosas, pero principalemnte para una: segmentar una red, hacerla cachitos. Como dice la wikipedia: una VLAN es cualquier dominio de broadcast particionado y aislado, dentro de una red de comunicaciones. Pensad en una VLAN como una VPN en capa 2, pero sin authenticación ni cifrado. Como una autopista (el puerto ethernet) con varios carriles, donde los carriles nunca se cruzan, cada uno con sus prioridades, su velocidad, sus rutas, etc. ¿Para qué es esto útil? Pues os lo podéis imaginar, para llevar distintos servicios por una misma red LAN, sin que se entorpezcan entre ellos. Y, sobre todo, para facilitarle mucho la vida a la gente que se dedica a montar redes en medianas y grandes empresas, puesto que ya no tengo que montar un switch distinto para cada tipo de servicio, y un mismo equipo físico puede manejar distintos tipos de tráfico, sin necesidad de que esté fisicamente conectado únicamente a dichos usuarios finales. Si os fijáis en la siguiente foto, sin vlans, esa red necesitaría 9 switches, tres por planta, en lugar de los tres que tiene; habría que dedicar un switch para cada tipo de tráfico si esto no existiera.
Conceptos básicos
El propósito
Como bien podéis imaginar, el manual va sobre cómo segmentar nuestra red, usando VLANs. Lo primero de todo, una aclaración: el 99% de las veces que oigáis la palabra VLAN, están hablando de un switch, no de un router. Los routers, por lo general, no manejan VLANs, sólo les asignan direcciones y listo. Todo el manejo de una VLAN se puede (y se debe) hacer a nivel de switch, en capa 2. En el router lo único que harán es darle una dirección IP.
No obstante, el propósito de este manual no es enseñaros a manejar VLANs en un switch, esto es algo que podéis aprender vosotros mismos sin mucho esfuerzo, sino enseñaros un caso muy particular y que se puede usar a nivel doméstio: el conocido como "router on a stick" o router en un palo, si lo traducimos literalmente. En este caso consideraremos el router como un doble actor: como router y como switch, implementando todo en él, pudiendo aprovechar parte de sus puertos para entregar tráfico "untagged" (sin etiqueta) que se puede usar directamente, otros puertos formarán parte del bridge y actuarán como puertos trunk (con todo su tráfico etiquetado), pudiendo enganchar estos a un switch o un AP; otros actuarán como puertos híbridos, entregando una VLAN sin etiqueta, y otra u otras, etiquetadas.
El equipo
Como de costumbre, uso mis propios equipos y esta vez no iba a ser menos. Esto lo vamos a montar en un RB750, hEX Gr2. No obstante, lo podéis hacer en cualquier equipo de la marca. Lo único que tenéis que tener en cuenta es que, al implementarlo por software (99% de los casos), esta es una opción que va a tirar de CPU, así que cuidado al implementarla en equipos de $30.
Muchas de las cosas que os voy a explicar están basadas en lo que hay en la propia wiki de mikrotik, en el artículo relativo a Bridge VLAN Filtering. Concretamente, la implementación de router on a stick es la del tercer ejemplo: VLAN Example #3 (InterVLAN Routing by Bridge)
Otro buen recurso que podéis usar para entender el tema de VLANs, lo tenéis en el propio foro de mikrotik, previo registro.
Manos a la obra
Lo primero de todo, vamos a definir qué queremos hacer. A modo didáctico, vamos a plantear el siguiente supuesto de uso: tengo un router con cinco puertos (tipo un hex, hex-s) y quiero segmentar mi red con 3 vlans. Además, como soy un poco novato y no me quiero complicar la vida, voy a tener dos bridges: un bridge principal con un puerto que va a llevar mi LAN local (ether2), y otro bridge con el resto de puertos, implementando vlan filtering. De esta manera tendríamos:
Partimos de un router mikrotik de 5 puertos, en mi caso para el ejemplo he usado un hEX Gr2, con su configuración recién reseteada a valores por defecto. La red principal corre en la 192.168.1.1/24, la cual se entrega en un bridge con todos los puertos del 2 al 5, de manera normal, sin ninguna VLAN.
Bueno, empezamos, ahora de verdad, manos a la obra:
Primero, sacamos los puertos 3, 4 y 5 del bridge principal, puesto que los vamos a dedicar al nuevo bridge
Ahora creamos el bridge que implementará el vlan filtering
Ahora crearemos las distintas VLANs que vamos a manejar en nuestra red, aparte de nuestra LAN principal. En mi caso, voy a manejar tres: 10, 20 y 30. El significado funcional que le queráis dar a cada una de ellas, lo dejo a vuestra elección. Como dichas VLANs van a ser manejadas por el bridge que hemos creado previamente, las creamos sobre esa interfaz. Podéis crear tantas como cachitos queráis hacer de la red.
Ahora les vamos a dar una IP concreta, un segmento de red que usarán los equipos conectados a ella. El segmento de red puede ser el que os dé la real gana, no tiene que ser el 10, 20 y 30 como en mi ejemplo.
Creamos un servidor DHCP para dichas nuevas redes, tal que los clientes que vayan a usarlas directamente obtengan una IP de ese rango sin tener que hacer nada. Primero, creamos el pool de direcciones para dichos servidores
A continuación, creamos la red para el servidor DHCP:
Y ahora los servidores propiamente dichos, asociados a dichas redes y dichos pools:
Ahora viene a la miga del asunto: la configuración de vlans en el bridge. Lo primero que vamos a configurar son las VLANs que se van a entregar en modo acceso, sobre los puertos que las van a entregar. En este caso van a ser la vlan 20 sobre ether4 y la 30 sobre ether5. Los puertos que no vayan a ser usados como puertos híbridos o de acceso, directamente se meten al bridge tal cual, como sería el caso de ether3. Los de acceso/híbridos llevarán un parámetro extra, el PVID, que indicará el número de VLAN que entregan sin etiqueta, en modo acceso.
Ahora configuramos las VLANs sobre el bridge. Marcamos los puertos que van a llevar la VLAN en modo trunk. Los que la llevan en modo acceso no es necesario marcarlos, puesto que se añadirán dinámicamente, con la configuración previa del PVID que hemos hecho. El propio bridge se añade para todas las VLANs, en modo tagged (trunk), siempre. Tenemos que acabar configurando lo siguiente:
Si le damos la vuelta a la tortilla y lo miramos desde el punto de vista de los puertos, tendríamos:
Y por último, activamos el filtrado de vlans a nivel de bridge
Para probar todo esto visualmente, vamos a jugar un poco con nuestro ordenador, añadiendo las 3 interfaces VLANs a una interfaz física ethernet, y veremos qué pasa cuando vamos conectando el cable a cada uno de los 3 puertos que conforman el bridge de las VLANs. En mi caso, os pongo un pantallazo de un Mac, pero en un windows o linux supongo se hará parecido.
Conectado al puerto 3, modo trunk - se encienden todas las vlans y obtienen cada una una IP de su rango. La interfaz LAN no se enciende
Conectado al puerto 4, modo híbrido - se enciende la interfaz LAN, modo acceso normal sobre el rango de la VLAN 20, + la VLAN 10
Conectado al puerto 5, modo acceso - se enciende sólo la interfaz LAN, sobre el rango de la VLAN 30.
Esto último no es algo que tengáis que hacer vosotros, pero es una manera sencilla y visual de ver de un plumazo cómo se van a comportar cada uno de vuestros puertos. En vuestro caso, el puerto ether3 se debería enchufar a un switch administrable, donde luego se configuren las VLANs 10, 20 y 30 en modo trunk en el puerto que conecte con ether3 y en modo acceso en los distintos puertos del mismo, donde que quieran entregar para su uso. El puerto 4 se podría conectar a un teléfono IP, y decirle que su servicio trabaja sobre la VLAN 10, la cual le llegaría taggeada (el propio teléfono le quitaría el tag), mientras que podríamos conectar un equipo al teléfono IP, y obtendría IP del rango 192.168.20.1/24, el de la VLAN 20, puesto que esta le llega ya en modo acceso. Cualquier equipo conectado al puerto 5 obtendría una IP del rango 192.168.30.1/24, perteneciente a la VLAN 30, configurada por defecto en modo acceso.
BONUS TRACK - Implementar todo en el mismo bridge (PVID 1 = default VLAN)
Ahora vamos a suponer que queréis exactamente lo mismo, pero no queréis tener que manejar dos bridges, lo querés todo en el mismo bridge. No os importa el hardware offloading, porque el equipo que tenéis tiene CPU más que de sobra para mover el filtrado de VLANs en el bridge.
Como podéis ver en el ejemplo anterior, hemos tratado de usar números de VLAN como el 10, 20, 30, que se suelen alejar de los usados por las operadoras, en caso de que tengáis esos ya reservados para ether1. También veréis que hemos evitado usar la VLAN ID = 1, y el tema no es casual. Mikrotik usa esa VLAN para marcar el tráfico normal, el que no lleva otro VLAN ID distinto. Al igual que esto sucede en mikrotik, veréis que sucede en muchas otras marcas. Sin ir más lejos, mi switch administrable [Linksys LGS30], hace exactamente lo mismo. Cuando configuramos todo en el mismo bridge, veremos que al activar el VLAN filtering en el bridge, tenemos ese PVID = 1 como ID por defecto para el bridge. Lo podemos ver en la siguiente imágen:
Esto que a priori nos parece una chorrada, nos hace un bendito favor: hacer que todos los puertos trunk se comporten por defecto como puertos híbridos, configurando la VLAN1 como VLAN de acceso en todos ellos, además del resto de VLANs que configuremos en modo tagged.
Esto es muy útil, por ejemplo, para que no tengamos que definir expresamente una VLAN de administracion y que, por ejemplo, podamos tener acceso a un switch que enganchamos a un puerto trunk, sin necesidad de configurar nada más en él.
Sin más, vamos a ver las diferencias que encontramos, cuando añadimos un nuevo puerto al bridge, ether2, donde no configuramos ninguna VLAN expresamente. Es decir, voy a repetir exactamente la misma configuración que antes, partiendo igualmente de un router recién reseteado, y usando el propio bridge que tenemos por defecto para configurar el VLAN filtering, con todos los puertos del 2 al 5 en él. Como prácticamente toda la configuración es idéntica, sólo me voy a centrar en las diferencias, el resto es repetir lo que tenéis detallado más arriba.
Empezamos:
Antes de nada, y muy importante: conectad el equipo con el que estáis configurando el router a ether2, el puerto que vamos a dejar sin VLANs. Esto hará que no perdáis la conexión con el equipo en ningún momento.
Todos los pasos son idénticos, salvo por este par de detalles: primero, omitiremos el primer paso donde sacábamos los puertos del bridge principal, puesto que ya está como queremos; y el segundo, donde creábamos un bridge nuevo, simplemente vamos a renombrar el bridge principal, para que todo lo demás encaje.
Ahora simplemente, repetimos los pasos anteriores, dando de alta las vlans, asociadas al bridge, creando las direcciones, los pools, los servidores dhcp... etc, hasta que llegamos al paso de meter las VLANs en el bridge. En este caso, como todos los puertos ya están dentro del bridge, simplemente necesitamos definir cuales son puertos de acceso y sobre qué VLAN van a trabajar. Con los puertos tipo trunk, como ether3, o los puertos sobre los que no queramos VLAN, como ether2, los podemos dejar tal cual:
Y configuramos las tres vlans en el bridge, tal y como lo hicimos anteriormente:
Por último, activamos de nuevo el filtrado de vlans a nivel de bridge
Si habéis seguido el manual al pie de la letra, veréis que en ether2 tenéis una IP del rango 192.168.1.1/24, o la que sea que tuvierais configurada como LAN por defecto en el quick set. Al activar el VLAN filtering en el bridge, ese puerto tiene por narices que trabajar con una VLAN, en este caso con una especial, ID = 1. Si vais ahora a la tabla de VLANs del bridge, veréis que tenéis una entrada dinámica, con algo así:
Esa entrada dinámica lo que quiere decir es que la red principal, la que no llevaba VLANs, ahora pasa a llevar el ID = 1, y se entrega como untagged en todo el bridge, es decir, lista para su uso. Eso quiere decir que, cualquier puerto que no esté definido expresamente como puerto de acceso, pasa a ofrecer la VLAN_1 como VLAN por defecto, es decir, cualquier puerto trunk o sin VLAN de acceso especifica definida, pasa a ser un puerto híbrido.
Si repetimos el proceso de ir enganchando el cable a las distintas tomas de router, veremos que el comportamiento no cambia para ether4 y ether5, los cuales se siguen comportando como antes, como puerto híbrido y de acceso, respectivamente. Pero la cosa cambia con ether3. Ese puerto trunk, además de entregar las tres VLANs taggeadas que entregaba antes, ahora nos entrega también la VLAN_1 sin tag, lista para usar, con una IP del rango de nuestra red principal. Lo podemos comprobar con el mismo experimento de antes: donde antes se encendían solo las VLANs, ahora lo hace también la interfaz LAN de mi ordenador, con una IP del rango 192.168.1.1/24
Si ahora miramos la tabla de VLANs en el bridge, veremos que la entrada dinámica ha cambiado, indicándonos que se está entregando la VLAN_1 de manera untagged en el puerto ether3:
Como podéis apreciar, esa entrada dinámica se encarga de mantener actualizada la tabla de VLANs en el bridge en todo momento, y de saber a qué puerto/s se le está entregando la VLAN por defecto. Esto, como comentaba antes, nos permite mantener conectividad con los equipos cuando estamos configurando puertos tipo trunk (con todas sus VLANs taggeadas), así como poder alguno de los puertos del bridge sin necesidad de especificar una VLAN concreta para ellos, ni definirlos como puertos trunk en la tabla de VLANs. Si necesitamos usar otra VLAN que no sea la 1 como VLAN por defecto, todo lo que tenemos que hacer es hacer que machee el número de VLAN que configuremos como PVID en el bridge, al activar vlan filtering, con el que lleva el puerto como default PVID (por defecto, ambos a 1).
Por último, comentaros que, con cualquier de los dos setup, sólo tendremos acceso al propio router desde los puertos que tengan no tengan VLAN o tengan la VLAN_1 (o cualquier otra que definamos como VLAN por defecto), configurada en modo acceso . Esto es así porque en el firewall tenemos una regla en el chain de input que nos dice que descartamos todo tráfico que no venga de la lista LAN, a la cual, por defecto, sólo pertenece el bridge principal. Si necesitásemos acceder al router desde un equipo conectado, por ejemplo, a ether5, donde se entrega la VLAN_30 en modo acceso, necesitaríamos dar de alta esta nueva interfaz como perteneciente a la lista LAN. Tal que así:
Sin más, espero que os guste este manual, y que a alguien le sirva de ayuda.
Saludos!
Hoy os quiero hablar de uno de los temas más controvertidos de implementar en mikrotik: el tema de las VLANs. Desde la aparición de la versión 6.41 de RouterOS y la aparición de bridges sustituyendo a las master/slave interfaces, el tema de cómo implementar VLANs en un mikrotik ha sido todo una fiesta de gente tirándose al monte (donde me incluyo) e intentado averiguar cual es la manera más correcta de implementar VLANs en su red local. La razón es que, desde la introducción de ese firmware, el tema de las VLANs pasaron a implementarse de una manera muy distinta a como se venían implementado antes. Básicamente antes tenías dos posibilidades: o las hacías a nivel software (interface -> VLAN), cosa que soporta cualquier equipo; o a nivel hardware, si eras afortunado de tener un equipo con un switch chip compatible con tabla de VLANs (switch -> VLAN). Sin embargo ahora entra en juego una tercera: el inter-VLAN-filtering, a nivel de bridge (Bridge -> VLANs), el cual puede funcionar a nivel hardware o software, dependiendo de nuestro equipo. Normalmente estarmos en el primer caso, y funcionarán por software, porque sólo los equipos más potentes de la marca (CCR's) soportan dicha implementación por hardware. Pero eso no quita que nos pueda venir muy bien para montar esto a nivel casero, y sobre todo para aprender cómo funciona una VLAN.
Un poco de culturilla general
Lo primero que tenemos que aclarar son dos conceptos: ¿qué es una VLAN? ¿para qué sirve una VLAN?
Respondiendo a la primera pregunta, diremos que una VLAN es un LAN virtual. Es decir, una manera de poder meter por un mismo puerto/cable, varias redes LAN al mismo tiempo, usando una etiqueta en la cabecera del paquete a transmitir que la identifique e identifique el tráfico perteneciente a las mismas, de tal manera que luego se puedan recuperar sólo es tráfico de manera independiente del resto. Para esto se utiliza una cabecera adicional en el frame ethernet a transmitir (802.1Q Header), metiendo un extra de 4bytes (32 bits) adicionales al tamaño del paquete ethernet. Los primeros 16 bits se usan para identificar el paquete como perteneciente a al protocolo 802.1Q (TPID), como una trama etiquetada con una VLAN, mientras que, de los 16 restantes (TCI), 12 se encargan de llevar el número de VLAN correspondiente + 4 de pico para tareas de QoS. Con 12 bits podemos direccionar, en teoría, 4096 vlans distintas (2^12), de las cuales un par de direcciones están reservadas, quedándonos una cifra final, nada desdeñable, de 4094 VLAN ID's distintos que poder usar.
Respondiendo a la segunda pregunta, se usan para muchas cosas, pero principalemnte para una: segmentar una red, hacerla cachitos. Como dice la wikipedia: una VLAN es cualquier dominio de broadcast particionado y aislado, dentro de una red de comunicaciones. Pensad en una VLAN como una VPN en capa 2, pero sin authenticación ni cifrado. Como una autopista (el puerto ethernet) con varios carriles, donde los carriles nunca se cruzan, cada uno con sus prioridades, su velocidad, sus rutas, etc. ¿Para qué es esto útil? Pues os lo podéis imaginar, para llevar distintos servicios por una misma red LAN, sin que se entorpezcan entre ellos. Y, sobre todo, para facilitarle mucho la vida a la gente que se dedica a montar redes en medianas y grandes empresas, puesto que ya no tengo que montar un switch distinto para cada tipo de servicio, y un mismo equipo físico puede manejar distintos tipos de tráfico, sin necesidad de que esté fisicamente conectado únicamente a dichos usuarios finales. Si os fijáis en la siguiente foto, sin vlans, esa red necesitaría 9 switches, tres por planta, en lugar de los tres que tiene; habría que dedicar un switch para cada tipo de tráfico si esto no existiera.
Conceptos básicos
- Tráfico tagged: tráfico etiquetado con una vlan
- Tráfico untagged: tráfico en plano, como el que nos llega por un puerto ethernet cualquiera, cuando no tenemos vlans.
- Puerto trocal (trunk port) o tagged: puerto que transporta tráfico etiquetado
- Puerto de acceso (access prot) o untagged: puerto que transporta tráfico normal, sin etiquetar
- Puerto híbrido: pues la mezcla de los dos; el que transporta tanto tráfico etiquetado, como sin etiquetar, de VLANs distintas.
El propósito
Como bien podéis imaginar, el manual va sobre cómo segmentar nuestra red, usando VLANs. Lo primero de todo, una aclaración: el 99% de las veces que oigáis la palabra VLAN, están hablando de un switch, no de un router. Los routers, por lo general, no manejan VLANs, sólo les asignan direcciones y listo. Todo el manejo de una VLAN se puede (y se debe) hacer a nivel de switch, en capa 2. En el router lo único que harán es darle una dirección IP.
No obstante, el propósito de este manual no es enseñaros a manejar VLANs en un switch, esto es algo que podéis aprender vosotros mismos sin mucho esfuerzo, sino enseñaros un caso muy particular y que se puede usar a nivel doméstio: el conocido como "router on a stick" o router en un palo, si lo traducimos literalmente. En este caso consideraremos el router como un doble actor: como router y como switch, implementando todo en él, pudiendo aprovechar parte de sus puertos para entregar tráfico "untagged" (sin etiqueta) que se puede usar directamente, otros puertos formarán parte del bridge y actuarán como puertos trunk (con todo su tráfico etiquetado), pudiendo enganchar estos a un switch o un AP; otros actuarán como puertos híbridos, entregando una VLAN sin etiqueta, y otra u otras, etiquetadas.
El equipo
Como de costumbre, uso mis propios equipos y esta vez no iba a ser menos. Esto lo vamos a montar en un RB750, hEX Gr2. No obstante, lo podéis hacer en cualquier equipo de la marca. Lo único que tenéis que tener en cuenta es que, al implementarlo por software (99% de los casos), esta es una opción que va a tirar de CPU, así que cuidado al implementarla en equipos de $30.
Muchas de las cosas que os voy a explicar están basadas en lo que hay en la propia wiki de mikrotik, en el artículo relativo a Bridge VLAN Filtering. Concretamente, la implementación de router on a stick es la del tercer ejemplo: VLAN Example #3 (InterVLAN Routing by Bridge)
Otro buen recurso que podéis usar para entender el tema de VLANs, lo tenéis en el propio foro de mikrotik, previo registro.
Manos a la obra
Lo primero de todo, vamos a definir qué queremos hacer. A modo didáctico, vamos a plantear el siguiente supuesto de uso: tengo un router con cinco puertos (tipo un hex, hex-s) y quiero segmentar mi red con 3 vlans. Además, como soy un poco novato y no me quiero complicar la vida, voy a tener dos bridges: un bridge principal con un puerto que va a llevar mi LAN local (ether2), y otro bridge con el resto de puertos, implementando vlan filtering. De esta manera tendríamos:
- ether1: WAN, de este nos olvidamos. Es por donde nos viene el servicio de internet.
- ether2: LAN, dentro del bridge principal [bridge]
- ether3, ether4, ether 5: puertos para VLANs, pertenecientes todos al nuevo bridge [bridge-vlans]. En él implementaremos los siguientes tipos de configuración:
- ether3: puerto trunk, con todo su tráfico tagged. Para enchufarlo a un switch administrable y transportar todas las VLANs por un único cable a otro dispositivo.
- ether4: puerto híbrido, donde entregaremos una VLAN taggeada y otra sin taggear, esta última lista para su uso. Este caso es muy común, por ejemplo, en las oficinas con telefonía IP, y donde contamos con un único cable ethernet al que enganchar ambos equipos (teléfono IP y PC). Se entrega la VLAN de la VoIP taggeada al teléfono, y del mismo sale un cable al ordenador con la VLAN de la LAN en modo acceso. Si en cualquier momento desconectamos el teléfono IP de la ecuación, ese cable siempre estará listo para su uso, entregando una única VLAN en modo acceso, como si fuera el caso del puerto siguiente.
- ether5: puerto de acceso puro, donde entregaremos una de las VLANs sin tag, ya lista para uso
Partimos de un router mikrotik de 5 puertos, en mi caso para el ejemplo he usado un hEX Gr2, con su configuración recién reseteada a valores por defecto. La red principal corre en la 192.168.1.1/24, la cual se entrega en un bridge con todos los puertos del 2 al 5, de manera normal, sin ninguna VLAN.
Bueno, empezamos, ahora de verdad, manos a la obra:
Primero, sacamos los puertos 3, 4 y 5 del bridge principal, puesto que los vamos a dedicar al nuevo bridge
Código:
/interface bridge port remove numbers=[find interface=ether3 or interface=ether4 or interface=ether5]
Ahora creamos el bridge que implementará el vlan filtering
Código:
/interface bridge add name=bridge-vlans
Ahora crearemos las distintas VLANs que vamos a manejar en nuestra red, aparte de nuestra LAN principal. En mi caso, voy a manejar tres: 10, 20 y 30. El significado funcional que le queráis dar a cada una de ellas, lo dejo a vuestra elección. Como dichas VLANs van a ser manejadas por el bridge que hemos creado previamente, las creamos sobre esa interfaz. Podéis crear tantas como cachitos queráis hacer de la red.
Código:
/interface vlan add name=vlan10 vlan-id=10 interface=bridge-vlans
/interface vlan add name=vlan20 vlan-id=20 interface=bridge-vlans
/interface vlan add name=vlan30 vlan-id=30 interface=bridge-vlans
Ahora les vamos a dar una IP concreta, un segmento de red que usarán los equipos conectados a ella. El segmento de red puede ser el que os dé la real gana, no tiene que ser el 10, 20 y 30 como en mi ejemplo.
Código:
/ip address add address=192.168.10.1/24 interface=vlan10
/ip address add address=192.168.20.1/24 interface=vlan20
/ip address add address=192.168.30.1/24 interface=vlan30
Creamos un servidor DHCP para dichas nuevas redes, tal que los clientes que vayan a usarlas directamente obtengan una IP de ese rango sin tener que hacer nada. Primero, creamos el pool de direcciones para dichos servidores
Código:
/ip pool add name=pool-vlan10 ranges=192.168.10.2-192.168.10.254
/ip pool add name=pool-vlan20 ranges=192.168.20.2-192.168.20.254
/ip pool add name=pool-vlan30 ranges=192.168.30.2-192.168.30.254
A continuación, creamos la red para el servidor DHCP:
Código:
/ip dhcp-server network add address=192.168.10.0/24 gateway=192.168.10.1 dns-server=8.8.8.8,8.8.4.4
/ip dhcp-server network add address=192.168.20.0/24 gateway=192.168.20.1 dns-server=8.8.8.8,8.8.4.4
/ip dhcp-server network add address=192.168.30.0/24 gateway=192.168.30.1 dns-server=8.8.8.8,8.8.4.4
Y ahora los servidores propiamente dichos, asociados a dichas redes y dichos pools:
Código:
/ip dhcp-server add name=dhcp-server-vlan10 interface=vlan10 address-pool=pool-vlan10 disabled=no
/ip dhcp-server add name=dhcp-server-vlan20 interface=vlan20 address-pool=pool-vlan20 disabled=no
/ip dhcp-server add name=dhcp-server-vlan30 interface=vlan30 address-pool=pool-vlan30 disabled=no
Ahora viene a la miga del asunto: la configuración de vlans en el bridge. Lo primero que vamos a configurar son las VLANs que se van a entregar en modo acceso, sobre los puertos que las van a entregar. En este caso van a ser la vlan 20 sobre ether4 y la 30 sobre ether5. Los puertos que no vayan a ser usados como puertos híbridos o de acceso, directamente se meten al bridge tal cual, como sería el caso de ether3. Los de acceso/híbridos llevarán un parámetro extra, el PVID, que indicará el número de VLAN que entregan sin etiqueta, en modo acceso.
Código:
/interface bridge port add bridge=bridge-vlans interface=ether3
/interface bridge port add bridge=bridge-vlans interface=ether4 pvid=20
/interface bridge port add bridge=bridge-vlans interface=ether5 pvid=30
Ahora configuramos las VLANs sobre el bridge. Marcamos los puertos que van a llevar la VLAN en modo trunk. Los que la llevan en modo acceso no es necesario marcarlos, puesto que se añadirán dinámicamente, con la configuración previa del PVID que hemos hecho. El propio bridge se añade para todas las VLANs, en modo tagged (trunk), siempre. Tenemos que acabar configurando lo siguiente:
- VLAN10: en modo trunk en ether3 (puerto trunk) y en ether4 (puerto híbrido).
- VLAN20: en modo trunk en ether3. En modo acceso en ether 4 (puerto híbrido).
- VLAN30: en modo trunk en ether3. En modo acceso en ether 5 (puerto de acceso)
Si le damos la vuelta a la tortilla y lo miramos desde el punto de vista de los puertos, tendríamos:
- ether3: puerto trunk con las vlans 10, 20, 30.
- ether4: puerto híbrido con la vlan 10 en modo trunk, y la 20 en modo acceso.
- ether5: puerto de acceso para la vlan 30.
Código:
/interface bridge vlan add bridge=bridge-vlans tagged=bridge-vlans,ether3,ether4 vlan-ids=10
/interface bridge vlan add bridge=bridge-vlans tagged=bridge-vlans,ether3 vlan-ids=20
/interface bridge vlan add bridge=bridge-vlans tagged=bridge-vlans,ether3 vlan-ids=30
Y por último, activamos el filtrado de vlans a nivel de bridge
Código:
/interface bridge set bridge-vlans vlan-filtering=yes
Para probar todo esto visualmente, vamos a jugar un poco con nuestro ordenador, añadiendo las 3 interfaces VLANs a una interfaz física ethernet, y veremos qué pasa cuando vamos conectando el cable a cada uno de los 3 puertos que conforman el bridge de las VLANs. En mi caso, os pongo un pantallazo de un Mac, pero en un windows o linux supongo se hará parecido.
Conectado al puerto 3, modo trunk - se encienden todas las vlans y obtienen cada una una IP de su rango. La interfaz LAN no se enciende
Conectado al puerto 4, modo híbrido - se enciende la interfaz LAN, modo acceso normal sobre el rango de la VLAN 20, + la VLAN 10
Conectado al puerto 5, modo acceso - se enciende sólo la interfaz LAN, sobre el rango de la VLAN 30.
Esto último no es algo que tengáis que hacer vosotros, pero es una manera sencilla y visual de ver de un plumazo cómo se van a comportar cada uno de vuestros puertos. En vuestro caso, el puerto ether3 se debería enchufar a un switch administrable, donde luego se configuren las VLANs 10, 20 y 30 en modo trunk en el puerto que conecte con ether3 y en modo acceso en los distintos puertos del mismo, donde que quieran entregar para su uso. El puerto 4 se podría conectar a un teléfono IP, y decirle que su servicio trabaja sobre la VLAN 10, la cual le llegaría taggeada (el propio teléfono le quitaría el tag), mientras que podríamos conectar un equipo al teléfono IP, y obtendría IP del rango 192.168.20.1/24, el de la VLAN 20, puesto que esta le llega ya en modo acceso. Cualquier equipo conectado al puerto 5 obtendría una IP del rango 192.168.30.1/24, perteneciente a la VLAN 30, configurada por defecto en modo acceso.
BONUS TRACK - Implementar todo en el mismo bridge (PVID 1 = default VLAN)
Ahora vamos a suponer que queréis exactamente lo mismo, pero no queréis tener que manejar dos bridges, lo querés todo en el mismo bridge. No os importa el hardware offloading, porque el equipo que tenéis tiene CPU más que de sobra para mover el filtrado de VLANs en el bridge.
Como podéis ver en el ejemplo anterior, hemos tratado de usar números de VLAN como el 10, 20, 30, que se suelen alejar de los usados por las operadoras, en caso de que tengáis esos ya reservados para ether1. También veréis que hemos evitado usar la VLAN ID = 1, y el tema no es casual. Mikrotik usa esa VLAN para marcar el tráfico normal, el que no lleva otro VLAN ID distinto. Al igual que esto sucede en mikrotik, veréis que sucede en muchas otras marcas. Sin ir más lejos, mi switch administrable [Linksys LGS30], hace exactamente lo mismo. Cuando configuramos todo en el mismo bridge, veremos que al activar el VLAN filtering en el bridge, tenemos ese PVID = 1 como ID por defecto para el bridge. Lo podemos ver en la siguiente imágen:
Esto que a priori nos parece una chorrada, nos hace un bendito favor: hacer que todos los puertos trunk se comporten por defecto como puertos híbridos, configurando la VLAN1 como VLAN de acceso en todos ellos, además del resto de VLANs que configuremos en modo tagged.
Esto es muy útil, por ejemplo, para que no tengamos que definir expresamente una VLAN de administracion y que, por ejemplo, podamos tener acceso a un switch que enganchamos a un puerto trunk, sin necesidad de configurar nada más en él.
Sin más, vamos a ver las diferencias que encontramos, cuando añadimos un nuevo puerto al bridge, ether2, donde no configuramos ninguna VLAN expresamente. Es decir, voy a repetir exactamente la misma configuración que antes, partiendo igualmente de un router recién reseteado, y usando el propio bridge que tenemos por defecto para configurar el VLAN filtering, con todos los puertos del 2 al 5 en él. Como prácticamente toda la configuración es idéntica, sólo me voy a centrar en las diferencias, el resto es repetir lo que tenéis detallado más arriba.
Empezamos:
Antes de nada, y muy importante: conectad el equipo con el que estáis configurando el router a ether2, el puerto que vamos a dejar sin VLANs. Esto hará que no perdáis la conexión con el equipo en ningún momento.
Todos los pasos son idénticos, salvo por este par de detalles: primero, omitiremos el primer paso donde sacábamos los puertos del bridge principal, puesto que ya está como queremos; y el segundo, donde creábamos un bridge nuevo, simplemente vamos a renombrar el bridge principal, para que todo lo demás encaje.
Código:
/interface bridge set 0 name=bridge-vlans
Ahora simplemente, repetimos los pasos anteriores, dando de alta las vlans, asociadas al bridge, creando las direcciones, los pools, los servidores dhcp... etc, hasta que llegamos al paso de meter las VLANs en el bridge. En este caso, como todos los puertos ya están dentro del bridge, simplemente necesitamos definir cuales son puertos de acceso y sobre qué VLAN van a trabajar. Con los puertos tipo trunk, como ether3, o los puertos sobre los que no queramos VLAN, como ether2, los podemos dejar tal cual:
Código:
/interface bridge port set [find where interface=ether4] pvid=20
/interface bridge port set [find where interface=ether5] pvid=30
Y configuramos las tres vlans en el bridge, tal y como lo hicimos anteriormente:
Código:
/interface bridge vlan add bridge=bridge-vlans tagged=bridge-vlans,ether3,ether4 vlan-ids=10
/interface bridge vlan add bridge=bridge-vlans tagged=bridge-vlans,ether3 vlan-ids=20
/interface bridge vlan add bridge=bridge-vlans tagged=bridge-vlans,ether3 vlan-ids=30
Por último, activamos de nuevo el filtrado de vlans a nivel de bridge
Código:
/interface bridge set bridge-vlans vlan-filtering=yes
Si habéis seguido el manual al pie de la letra, veréis que en ether2 tenéis una IP del rango 192.168.1.1/24, o la que sea que tuvierais configurada como LAN por defecto en el quick set. Al activar el VLAN filtering en el bridge, ese puerto tiene por narices que trabajar con una VLAN, en este caso con una especial, ID = 1. Si vais ahora a la tabla de VLANs del bridge, veréis que tenéis una entrada dinámica, con algo así:
Esa entrada dinámica lo que quiere decir es que la red principal, la que no llevaba VLANs, ahora pasa a llevar el ID = 1, y se entrega como untagged en todo el bridge, es decir, lista para su uso. Eso quiere decir que, cualquier puerto que no esté definido expresamente como puerto de acceso, pasa a ofrecer la VLAN_1 como VLAN por defecto, es decir, cualquier puerto trunk o sin VLAN de acceso especifica definida, pasa a ser un puerto híbrido.
Si repetimos el proceso de ir enganchando el cable a las distintas tomas de router, veremos que el comportamiento no cambia para ether4 y ether5, los cuales se siguen comportando como antes, como puerto híbrido y de acceso, respectivamente. Pero la cosa cambia con ether3. Ese puerto trunk, además de entregar las tres VLANs taggeadas que entregaba antes, ahora nos entrega también la VLAN_1 sin tag, lista para usar, con una IP del rango de nuestra red principal. Lo podemos comprobar con el mismo experimento de antes: donde antes se encendían solo las VLANs, ahora lo hace también la interfaz LAN de mi ordenador, con una IP del rango 192.168.1.1/24
Si ahora miramos la tabla de VLANs en el bridge, veremos que la entrada dinámica ha cambiado, indicándonos que se está entregando la VLAN_1 de manera untagged en el puerto ether3:
Como podéis apreciar, esa entrada dinámica se encarga de mantener actualizada la tabla de VLANs en el bridge en todo momento, y de saber a qué puerto/s se le está entregando la VLAN por defecto. Esto, como comentaba antes, nos permite mantener conectividad con los equipos cuando estamos configurando puertos tipo trunk (con todas sus VLANs taggeadas), así como poder alguno de los puertos del bridge sin necesidad de especificar una VLAN concreta para ellos, ni definirlos como puertos trunk en la tabla de VLANs. Si necesitamos usar otra VLAN que no sea la 1 como VLAN por defecto, todo lo que tenemos que hacer es hacer que machee el número de VLAN que configuremos como PVID en el bridge, al activar vlan filtering, con el que lleva el puerto como default PVID (por defecto, ambos a 1).
Por último, comentaros que, con cualquier de los dos setup, sólo tendremos acceso al propio router desde los puertos que tengan no tengan VLAN o tengan la VLAN_1 (o cualquier otra que definamos como VLAN por defecto), configurada en modo acceso . Esto es así porque en el firewall tenemos una regla en el chain de input que nos dice que descartamos todo tráfico que no venga de la lista LAN, a la cual, por defecto, sólo pertenece el bridge principal. Si necesitásemos acceder al router desde un equipo conectado, por ejemplo, a ether5, donde se entrega la VLAN_30 en modo acceso, necesitaríamos dar de alta esta nueva interfaz como perteneciente a la lista LAN. Tal que así:
Código:
/interface list member add interface=vlan30 list=LAN
Sin más, espero que os guste este manual, y que a alguien le sirva de ayuda.
Saludos!
Última edición: