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!