¿Como aplicar iptables sobre entre un bridge y varios dispositivos tap? [Solucionado]

Tengo un servidor con su eth0 y reglas iptables aplicadas referidas a este interfaz.

Despues de leer la doc sobre VirtualBox tengo que montar con bridge-utils un puente entre el dispositivo fisico eth0 y los ethernet virtuales tap0, tap1, etc.....

Mis dudas que no consigo aclarar a pesar de leer varios hilos, google, etc..:

- ¿El dispositivo ethernet entra en modo promiscuo tragando todo el tráfico cuando activo el bridge?
- ¿Las reglas que aplicaba sobre eth0 siguen siendo validas o tengo que cambiarlas y referenciar a br0?
- ¿Puedo diferencias al trafico que viene de la LAn por eth0 del trafico que vien de los tapX vía bridge por br0?

Gracias de antemano.

Me respondo a mí mismo.

Estos dispositivos como sabemos no son físicos, son virtuales, por software.

Efectivamente el interfaz eth0 se pone en modo promíscuo y deja pasar todo el tráfico que llega a la tarjeta.

Los dispositivos tapX trabajan en la capa 2, la de enlace, mientras que los tunX en la capa 3, la de IP.

Para filtrar en la capa 2 sobre el bridge tenemos que usar ebtables y no netfilter, http://ebtables.sourceforge.net/ .

Una muy buena explicación de los dispositivos tun/tap en http://en.wikipedia.org/wiki/TUN/TAP.

En el paquete bridge-utils hay un README.Debian que lleva a explicar que el /et/network/interfaces está preparado para especificar los dispositivos br0 y tap0 y crearlos automáticamente.

Creo que cometí un error ya que definí primero por orden en el fichero el br0 y luego tap0, con lo cual no me añadí tap0 al puente y tuve que hacerlo a mano por brctl addif br0 tap0. No he terminado de probar el fichero interfaces modificado,,, por no relevantar el puente y quedarme desconectado del servidor.

Los guest de VirtualBox llegan ahora a la LAN pero cuando les asigno una ip fija, no sé que pasa cuando intento que tomen la ip del dhcp server que está montado en el propio host, le llega la petición y el host le hace la oferta de ip, pero esa oferta nunca llega al guest y no tomoa la ip, tengo que investigar más sobre esto y lo añado a este hilo.

Despues de sanear las reglas del firewall sobre el bridge br0 he conseguido que los clientes guest en virtualbox tomen la ip del servicio dhcp.

Otro problema que me ocurre, es que el servicio dhcpd funcionaba, pero al reinicio no,,,, hay que configurarlo para que trabaje sobre br0 y no eth0, en /etc/default/dhcp3-server.

Tambien importante acordarse del tráfico de vuelta en los clientes virtualbox cuando usamos openvpn, ya en otros hilos comentaba que yo he propagado un segundo gateway via dhcp, pero si configuramos tcp/ip a mano hay que meter una ruta adicional para que además del gateway por defecto tome al servidor openvpn, esto si el servidor que aloja openvpn no es el gateway por defecto.

¿Hay alguien interesado en que haga un tutorial en el wiki sobre bridge-utils, y su aplicación sobre virtualbox, openvpn, .....? Es algo simple y corto, para no dejar este hilo en el olvido y ahorrarle a más de uno un quebradero de cabeza con el tráfico de red.

ZorroPlateado escribió:

¿Hay alguien interesado en que haga un tutorial en el wiki sobre bridge-utils, y su aplicación sobre virtualbox, openvpn, .....?

A mi si me interesaria, si armas un articulo en el wiki es mucho mas fácil encontrar la información que si queda solo en este hilo.
Mas de una vez me ha pasado buscar el el foro la solución a un problema que yo mismo habia resuelto pero ya no recordaba como y no poder encontrarla por no recordar el titulo del hilo. Las categorias del wiki hacen que encontrar las cosas sea mucho mas fácil, te apoyo en la iniciativa.

Creer que algo es imposible es el primer paso para que lo sea ---- «Sí, ¡haga lo que le digo!» - y desde entonces mi debian ya no es lo que era

Venga, pues una mañana de estas que tenga un par de horas me pongo con la literatura en el wiki,,, además puntualizaré los típicos problemas de novato cuando llega a algo nuevo.

Relacionado con ¿Como aplicar iptables sobre entre un bridge y varios dispositivos tap? [Solucionado]