Venga, hoy tenemos una configuración completita! :)
Nos encontramos con un equipo que tiene instalado proxmox y quiero que sus contenedores puedan tener vlan. Toda feliciana me propongo de pasar olímpicamente de configurar las vlan con el proxmox ya que alguna vez lo he intentado desde el interfaz y no hay ni un solo menú que sirva para realizar esta tarea.
Como es normal, busco en el blog para manuales de referencia y me pongo a seguir éste: Configurar vlans con GNU/Linux. Pero me encuentro que no me hace ni puñetero caso, así que buscando por internet leo que es necesario tener el módulo 8021q activado, así que trato de activarlo y el sistema dentro del contenedor me suelta palabrotas:
root@murzim-dnsnat64:/# modprobe 8021q libkmod: ERROR ../libkmod/libkmod.c:505 kmod_lookup_alias_from_builtin_file: could not open builtin file '/lib/modules/2.6.32-27-pve/modules.builtin.bin' FATAL: Module 8021q not found.
Así que la única opción es configurar las vlan fuera de los contenedores y asignar una vlan a un bridge que luego lo asignaremos a una interfaz del contenedor.
La maquina que tengo instalada dispone de 2 tarjetas de red, así que aprovecharemos que estamos tocando la configuración de red de hacer el bonding y si falla alguna tarjeta o se tiene que realizar algun cambio en el switch el servidor pueda estar permanentemente conectado.
Nos ponemos en el host y modificamos el fichero /etc/network/interfaces.
Lo primero es levantar todas las interfaces de red que nos interese trabajar y crear el bonding con ambas tarjetas, en este caso un active-backup
auto eth0 iface eth0 inet manual auto eth1 iface eth1 inet manual auto bond0 iface bond0 inet manual slaves eth0 eth1 bond_miimon 100 bond_mode active-backup
A continuación asignamos la ip al bridge vmbr0 pero con el puerto bond0 como interfaz. En este caso estoy asignando la IP a la interfaz sin VLAN, o VLAN1, ya que a la hora de hacer este manual aún no dispongo del switch que gestiona vlans y lo tengo montado un poco a lo bruto (el otro día casi me llevan a la hoguera por poner una IP sin VLAN en una interfaz con IPs en VLAN, no sé porqué, pero funciona xD)
auto vmbr0 iface vmbr0 inet static address 10.90.226.66 netmask 255.255.255.224 gateway 10.90.226.65 bridge_ports bond0 bridge_stp off bridge_fd 0
Ahora definimos las vlan que queremos crear, para hacerlo mas humanamente entendible, el numero del bridge corresponde a la vlan y si nos fijamos cuando asignamos la interfaz en el bridge, ponemos la bond0 con un .10 o un .123 detrás, esta es una de las varias definiciones que hay para definir VLAN.
auto vmbr10 iface vmbr10 inet manual bridge_ports bond0.10 bridge_stp off bridge_fd 0 auto vmbr123 iface vmbr123 inet manual bridge_ports bond0.123 bridge_stp off bridge_fd 0
Una vez realizado esto, reiniciamos el servicio de red para que recargue la configuración (recomiendo estar cerca de la máquina si no sabes muy bien lo que estás tocando, porqué te va a tocar acceder físicamente a ella!)
# /etc/init.d/networking restart
Lo siguiente es ir a la interfaz web de proxmox y creamos 2 interfaces nuevos, eth10 asignado al vmbr10 y eth123 al vmbr123 y no asignamos ninguna ip a ninguna de las interfaces y entramos a uno de los contenedores:
root@murzim:~# vzctl enter 100 entered into CT 100 root@murzim-dnsnat64:/#
(aquí un pequeño avance de un post que va a venir en los próximos días…)
Modificamos el fichero /etc/network/interfaces del contenedor:
auto lo eth0 eth123 iface lo inet loopback iface eth0 inet static address 10.90.226.67 netmask 255.255.255.224 bridge_ports vmbr10 bridge_stp off bridge_fd 0 up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.90.226.65 iface eth123 inet static address 5.10.205.131 netmask 255.255.255.224 gateway 5.10.205.129 bridge_ports vmbr123 bridge_stp off bridge_fd 0 iface eth138 inet6 static address 2a00:1508:6001::101 netmask 64 up ip r add default via 2a00:1508:6001::1 dev eth123
En la primera línea levantamos las interfaces.
Luego asignamos la ip sin vlan a eth0 y la ponemos dentro del bridge donde va a estar la vlan que hemos creado en el host.
La ip a la vlan123 en eth123 en bridge vmbr123.
Y finalmente la IPv6 en la eth123 (no hace falta definir la interfaz en el bridge, así funciona, que supongo que eth123 al estar ya en el bridge y ser la misma interfaz no hace falta volver a ponerla en el bridge! sería algo similar al eth0 y al eth0:1 (interfaces virtuales).
Reiniciamos el servicio de red.
root@murzim-dnsnat64:/# /etc/init.d/networking restart
Y éste es el output de ifconfig
root@murzim-dnsnat64:/# ifconfig eth0 Link encap:Ethernet HWaddr 16:00:54:5c:7b:f0 inet addr:10.90.226.67 Bcast:10.90.226.95 Mask:255.255.255.224 inet6 addr: fe80::1400:54ff:fe5c:7bf0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:13138 errors:0 dropped:0 overruns:0 frame:0 TX packets:426 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:984227 (961.1 KiB) TX bytes:28159 (27.4 KiB) eth123 Link encap:Ethernet HWaddr 52:33:49:19:ff:35 inet addr:5.10.205.130 Bcast:5.10.205.159 Mask:255.255.255.224 inet6 addr: 2a00:1508:6001::101/64 Scope:Global inet6 addr: fe80::5033:49ff:fe19:ff35/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:439 errors:0 dropped:0 overruns:0 frame:0 TX packets:41 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:24304 (23.7 KiB) TX bytes:2949 (2.8 KiB)
Una prueba para verificar que el equipo sale bien a internet por ipv4 y por ipv6
root@murzim-dnsnat64:/# ping guifi.net PING guifi.net (109.69.8.5) 56(84) bytes of data. 64 bytes from octocefal.guifi.net (109.69.8.5): icmp_req=1 ttl=61 time=8.02 ms 64 bytes from octocefal.guifi.net (109.69.8.5): icmp_req=2 ttl=61 time=8.40 ms 64 bytes from octocefal.guifi.net (109.69.8.5): icmp_req=3 ttl=61 time=7.85 ms 64 bytes from octocefal.guifi.net (109.69.8.5): icmp_req=4 ttl=61 time=8.10 ms ^C --- guifi.net ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3001ms rtt min/avg/max/mdev = 7.855/8.099/8.407/0.199 ms root@murzim-dnsnat64:/# ping6 guifi.net PING guifi.net(2a00-1508--5.ip6.guifi.net) 56 data bytes 64 bytes from 2a00-1508--5.ip6.guifi.net: icmp_seq=1 ttl=61 time=8.08 ms 64 bytes from 2a00-1508--5.ip6.guifi.net: icmp_seq=2 ttl=61 time=8.06 ms 64 bytes from 2a00-1508--5.ip6.guifi.net: icmp_seq=3 ttl=61 time=8.15 ms 64 bytes from 2a00-1508--5.ip6.guifi.net: icmp_seq=4 ttl=61 time=8.42 ms ^C --- guifi.net ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3003ms rtt min/avg/max/mdev = 8.060/8.178/8.420/0.181 ms root@murzim-dnsnat64:/#
Y esto es todo! :)
imposible dejarte un comentario. Juer, que nivel. Gracias.
Gracias ;D
Hola, me parecio muy detallado el articulo. La verdad no tengo mucha experiencia en vlans asi que me gustaria preguntar lo siguiente:
Yo tengo Proxmox en una maquina con 1 NIC. Todas las configuraciones estan por defecto pero me gustaria crear una VM que este fuera de bridge que se crea por defecto. Para eso necesito crear una VLAN, correcto? Cual seria el procedimiento? Afecta de alguna manera a las VM’s existentes que salen por el bridge?
Espero haber sido claro. Muchas gracias por leerme!