[eside-ghost] Qemu e iptables NAT

Saladino arkato en gmail.com
Dom Mayo 7 01:30:56 CEST 2006


Aupa Z!
On 5/6/06, zgor <zgor en int80h.net> wrote:
> Aupi,
>
> >
> > Ando preparando una frikada y he montado una debian sobre qemu. Ahora
> > quiero ponerle red y aunque he hecho algunos avances no consigo
> > seguir. Esta es la situación actual.
>
> ueueue :D
>
> > Host:
> > interfaz eth2 con salida a la red local->192.168.0.15
> > interfaz tap0 virtual de qemu-> 192.168.1.1
> >
> > Guest:
> > interfaz eth0 ->192.168.1.2
> >
> > Ahora bien, desde el guest puedo pingar a 192.168.1.1 y a 192.168.0.15
> > pero no mas alla, y desde el host puedo pingar a 192.168.1.2.
> > Los gatweyas estan asi:
> > host->192.168.0.5
> > guest->192.168.1.1
> >
> > Le he metido a iptables esta instruccion:
> > iptables -t nat -A POSTROUTING  -j MASQUERADE
>
> ahi te faltaria un -o eth2 (para indicar que natee todo lo que enrutes y
> salga por eth2) y el mitico echo 1 > /proc/sys/net/ipv4/ip_forward
> En cualquier caso, con un sniffer (tcpdump / iptraf /ethereal / potion
> ...) deberias ver si llega o no a salir por el iface, aunque un:
> watch "iptables -L -n -v -x -t nat"
> tb debeira bastarte (vas viendo como aumentan los paquetes que hacen
> 'match' con la regla), si no aumentan, mal asunto :D
>
> > pero como si te arrascas.
> > Yo con iptables no tengo experiencia, pero eso no dice que cualquier
> > paquete que vaya a donde sea sea enmascarado y enviado?
> > La politica por defecto es ACCEPT.
> > La idea seria que el host hiciera nat para el guest y se lo mandara al
> > gateway.
> > Pues eso, a ver si alguien me dice lo que estoy haciendo mal.
>
> Lo que si que me plantearia es si de verdad quieres hacer nat, ya que
> haciendo nat pierdes la direccionabilidad plena en ambos sentidos a
> cualquier puerto, y siendo tu misma red, lo puedes arreglar con rutas
> estaticas
> supongo que 192.168.0.5  sera tu router, no ?
> Para que toda tu red pueda alcanzar al guest y que el propio guest pueda
> salir a internet sin ser nateado en el primer router (el host), bastaria
> con añadir una ruta estatica:
> destino:  192.168.1.0/24 via 192.168.0.15
> de esa forma, cualquier host de tu lan que quiera comunicarse con el
> guest, lo hara por defecto a traves de tu router y este re-encaminara el
> paquete sobre el mismo iface pero de paso enviara un redirect, asi no
> tienes que andar cambiando las rutas en toda tu red :D

Como hago rutas estaticas? con route? tiene pinta...

>
> O tb puedes pasar de dividir la red haciendo bridging en el host
> bastaria con el mitico echo 1 ...forward y luego con las bridge-utils en
> el host:
> ifconfig eth2 0.0.0.0 up
> ifconfig tap0 0.0.0 up
> brctl addbr br0
> brctl addif eth2 br0
> brctl addif tap0 br0
> ifconfig br0 192.168.0.15
> ip route add default via 192.168.0.5

Esto es igual que "route add default gw *.*.*.* ?"

>
> y en el guest:
> ifconfig eth0 192.168.0.x
> ip route add default via 192.168.0.5
>
> asi tienes todo en la misma red :D (lo he dicho de carrerilla, qizas lso
> parametros del brctl sean al reves, pero creo que en lineas generales no
> me he dejado nada)

Ya, lo de los bridges mola, es lo que tenia puesto, pero como lo uso
en la uni ahora no tengo mas que una IP disponible en la 505, si me
pongo otra IP no funciona con eso de los filtros por ip que han puesto
asique estaba que o tenia IP para el host o para el guest pero nunca
los dos, por eso pense en NAT.

>
> con tunctl tb puedes hacer los tapX persistentes, asi no tienes que
> andar controlando el momento en que se levanten y andar al loro de rutas
> y tal, sino que desde el propio arranque se quedan asi y el guest lo
> reutiliza
>
> suerte !
Gracias
Saladino


Más información sobre la lista de distribución eside-ghost