sábado, 12 de agosto de 2017

Proxmox – Interfaces promiscuas.

Otra entrada corta sobre interfaces promiscuas… y últimamente ya van unas cuantas.

En este caso la necesidad es capturar tráfico desde una vm que corre sobre proxmox. Por defecto esto se realiza con normalidad, una interfaz física es asociada a un Vbridge, el cual es usado por la/las máquinas virtuales.

La interfaz en la VM se puede configurar promiscua sin mayor problema.

ethX –> vmbrX –> VM(ethx promisc)

El problema viene cuando al capturar tráfico desde la VM, solo vemos tráfico multicast y no todo el trafico como era de esperar.

Según parece por defecto esta deshabilitada la posibilidad de que un bridge actúe en modo promiscuo desde proxmox, por temas de seguridad.

Para habilitar esta posibilidad, es necesario, el parámetro «bridge_ageing 0» el cual no es posible configurar desde la WUI. (Ni como admin, lo cual estaría bastante bien)

Podemos configurarlo desde el fichero «interfaces» en el propio proxmox
/etc/network/interfacesauto vmbr4
iface vmbr4 inet manual
    bridge_ports eth1
    bridge_stp off
    bridge_fd 0
    bridge_ageing 0#PROMISC
Este cambio según las indicaciones de proxmox, requiere reboot aunque hay maneras de recargarlo correctamente, sin necesidad de reboot completo.

Nota: Según las pruebas, si editamos desde la WUI tras este cambio, el parámetro se mantiene y no es «machacado».

Nota2: Este cambio solo es valido para entornos con máquinas bajo kvm y no bajo qemu (Sin verificar)

Tras esto la VM, ya recibe el tráfico promiscuo como se esperaba.

jueves, 10 de agosto de 2017

Configurando Bond promisc

Hace poco he tenido la necesidad, de agregar varias interfaces  en modo promiscuo, en solo una interfaz virtual.

Ya escribí una pequeña introducción sobre configuración de bond, hace mucho tiempo, en la que se indican los distintos tipos.

En esta ocasión el modo usado es el «3» o Broadcast.

La configuración de la interfaz de bond y de sus interfaces físicas es la siguiente.

/etc/sysconfig/network-scripts/ifcfg-bond0
TYPE="Bond"
BONDING_MASTER="yes"
BOOTPROTO="none"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_FAILURE_FATAL="no"
NAME="bond0"
DEVICE="bond0"
ONBOOT="yes"
PROMISC="yes"
BONDING_OPTS="mode=3"
NM_CONTROLLED="no"
/etc/sysconfig/network-scripts/ifcfg-eno1
DEVICE="eno1"
ONBOOT="yes"
BOOTPROTO="none"
TYPE="Ethernet"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_FAILURE_FATAL="no"
NAME="eno1"
PROMISC="yes"
MASTER="bond0"
SLAVE="yes"
NM_CONTROLLED="no"
/etc/sysconfig/network-scripts/ifcfg-eno2
DEVICE="eno2"
ONBOOT="yes"
BOOTPROTO="none"
TYPE="Ethernet"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_FAILURE_FATAL="no"
NAME="eno2"
PROMISC="yes"
MASTER="bond0"
SLAVE="yes"
NM_CONTROLLED="no"
Tras esta configuración, simplemente queda garantizar que las interfaces levanten en modo promiscuo, para lo que editamos rc.local

/etc/rc.local
/sbin/ip link set bond0 promisc on
/sbin/ip link set eno1 promisc on
/sbin/ip link set eno2 promisc on

Llegados aquí podremos capturar todo el tráfico de las interfaces enoX en la interfaz bond0