Blackhold

Configurar vlans, bondings y IPv6 en un Proxmox

Posted on abril 5th, 2014 by admin

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! :)

« »

guy fawkes