[eside-ghost] Qemu e iptables NAT
zgor
zgor en int80h.net
Sab Mayo 6 19:09:12 CEST 2006
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
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
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)
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 !
Más información sobre la lista de distribución eside-ghost