Sobre Vlans

En una red se pueden ver los broadcast de todas las máquinas que están ahí, cada vez que alguien pregunte por algún ARP todas las máquinas lo verán. Esto no es un problema para una red de 10 ó 12 máquinas, pero si la red es mucho más grande esto va a afectar al redimiento muchísimo. Además tenemos que tener en cuenta que si tenemos varios servicios, como por ejemplo voip y almacenamiento en red si mezclamos todo eso al final va a afectar muy negativamente al rendimiento si está todo junto.

Y luego imaginad esa gente que trabaja en casa, a lo mejor tiene unos equipos en su red con una VPN, ¿es bueno que esos equipos estén en la misma red que el ordenador de sus hijos?

A veces es interesante dividir nuestra red en varias redes independientes, se me ocurren así a bote pronto las siguientes razones:

  1. Queremos separar los dominios de broadcast o difusión
  2. Queremos segmentar a los usuarios en redes distintas por motivos de seguridad
  3. Tenemos diversos tipos de servicios que no queremos que se mezclen
  4. Queremos trabajar menos y vivir mejor

La solución a esto podría ser tener un juego de switches para cada red y separar el cableado, eso estaría genial si el dinero creciera en los árboles y no no importara comprar tantos switches como fueran necesarios, si esa es vuestra situación corred a comprar switches y no sigáis escuchando el audio, ha sido un placer.

Bueno, ahora ya quedamos menos y los que quedamos no podemos o no queremos comprar un juego de switches por red porque es tirar el dinero y porque no vamos a gestionar más switches de los estrictamente necesarios porque queremos vivir mejor y trabajar menos.

Hoy vamos a hablar de las Vlans cuando es bueno usarlas, porque a veces no es bueno usarlas, todo depende. En mi caso quiero que sepáis que soy una persona que está en contra de usar una sola vlan más de las necesarias, de hecho y para no usar vlans intento bucarme la vida de la forma más insospechada que se os pueda ocurrir, pero hoy vamos a hablar de cuando son necesarias.

Antes de nada agradecer a todos los que habéis votado o comentado y también a aquellos que habéis propuesto temas, por ejemplo jcbeal propuso un programa de backup de PC con linux, y me gustaría desarrollar un poco más ese tema para incluirlo en otro porque en mi caso el backup lo hago con un rsync contra un disco externo para tener un backup local y sincronizo mi home contra Google Docs con insync, ya se que no es lo más glamuroso, pero a mi me funciona de maravilla y tengo mis ficheros en todas partes un 2 eurillos que te cobra Google al mes, no me merece la pena usar un owncloud o nextcloud para eso, lo uso, pero para otras cosas. Bueno, ya hablaremos de esto más adelante.

Bueno, ahora sí, vamos al tema en si.

Vlan es LAN virtual, es como tener dos redes separadas pero compartiendo el mismo switch y muchas veces el mismo cable.

Podemos decir que una Vlan es una agrupación lógica de equipos que está totalmente separada e las demás, así pues los broadcast se quedarán en al vlan, y por supuesto no se verán los de otra vlan. Todos los ARPs se quedarán en la vlan también, así que cuando un equipo quiera saber quien es otro y pregunta por su MAC esa petición se quedará en la vlan, eso es el ARP.

Y esto tiene muchísimas ventajas, vamos al ejemplo del principio, si usáis voip en la red y también usáis esa red para hacer backups en red es posible que el tráfico de voip se vea resentido y claro, se oíra mal, lo cual será terrible, porque podemos asumir que internet vaya lento, que se pierdan paquetes, pero no podemos soportar que el teléfono se oiga mal, la telefonía tiene que ir siempre perfecta..

¿Cómo separamos el tráfico por vlans? usando etiquetas, realmente cuando tenemos todo el tráfico en la red sin usar vlans estamos usando vlans, comunmente la vlan 1, así que la división lógica viene de serie en todos los switches que tengan una mínima gestión.

Vamos a suponer que tenemos un switch en casa, uno con gestión, y le decimos que el puerto 1 es de la vlan 100 y el puerto 2 es de la vlan 200, los PCs que estén pinchados en los puertos 1 y 2 no se van a ver nunca a no ser que pongamos un router y tengan direccionamientos diferentes.

Vamos a poner direcciones a las vlans, la vlan 100 será 192.168.100.0/24 y la vlan 200 192.168.200.0/24.

Vamos a suponer que tenemos varios PCs en las vlans y un router con dos interfaces, uno en la vlan 100 y otro en la vlan 200, si lo tenemos así podremos acceder desde la vlan 100 a la 200, pero sólo a través del router.

Ese router por supuesto puede ser un linux, puede ser un PC con dos tarjetas de red con el bit de ipforwarding habilitado, tal y como hablamos el otro día en el podcast #22 cuando hablamos de NAT en linux.

Os referencio al capítulo 22 del podcast porque es un momento estupendo para enlazar ambos puntos, hemos dividido la red en dos vlans y tenemos un router que es un pc con linux, la distribución da exactamente igual, vale cualquiera.

Si tenemos un tercer interfaz en el router con la IP que nos de el operador que tengamos ya podemos salir a internet, pero claro, como las dos vlans tienen direccionamiento privado no va a funionar nada, nos hará falta NAT, el famoso masquerade que propuso Germán hace un par de semanas.

Bien si ponemos

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE

Lo que vamos a conseguir que sólo tenga salida a internet la vlan 100, porque en el masquerade le hemos dicho que sólo haga NAT a las direcciones el tipo 192.168.100.0/24, para que la vlan 200 también saliera a Internet tendríamos que añadir la línea

iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o eth0 -j MASQUERADE

Si os dais cuenta aquí no hablamos de vlans por ningún lado, eso es porque directamente estamos trabajado con puertos de acceso y las vlans las tenemos únicamente en los switches, para nuestros PCs no hay vlans, y la configuración sería exactamente igual si en vez de uno hubiera dos switches.

Si os dais cuenta estoy diciendo que en el router, el linux, tenemos 3 interfaces, 3 puertos con 3 cables, que es algo muy común, pero no en casa, en casa todos mis PCs tienen sólo un puerto, entonces ¿cómo lo hacemos?

Tenemos que decirle al linux, al router que estamos usando que sea capaz de diferenciar las vlans, ahí es nada.

Las vlans se diferencian porque en vez de usar ethernet estándar, que es la norma IEEE 802.3, usan la norma IEEE 802.1Q. Bueno no voy a meterme mucho en normativa de la IEEE porque no es el objetivo, pero se diferencia en el formato de la trama ethernet, lo 802.3, la normal no tiene ningún identificativo para la vlan y la 802.1Q tiene un identifivo, una cabecera, eso hace que cuando nos llegue el paquete seamos capaces de ver a que vlan pertenece.

A eso se le llama puerto etiquetado o tagged.

Cómo vamos a ver eso en un linux, pues porque vamos a tener inerfaces del estilo eth0.100 y eth0.200, y ahí configuraremos como si fueran interfaces sin etiquetar.

Por ejemplo le pondremos la ip 192.168.100.1 al eth0.100 y la 192.168.200.1 al eth0.200.

Obviamente tendremos otro puerto para la salida a internet. Si lo pensáis en el linux estamos configurando un montón de interfaces, pero que están todos dentro del eth0, así que sólo hay un cable.

Esto aunque os parezca mentira os va ahorrar muchísimo trabajo.

Además de configurar el NAT podéis configurar un firewall, por ejemplo podéis decir que sólo pueda acceder de una red a otra con unos puertos de destino específicos o incluso hacer un NAT a un puerto de la IP pública para poner en casa un servidor del servicio que queráis en la IP pública que os den, lo que se llama mapear puertos, todo esto en el capítulo 22 lo tenéis.

La gracia es ir juntando todo lo que vamos comentando para poder montar algo más completo.