Jump to content
Sign in to follow this  
daniele_dll

Configurazione rete routed per macchine virtuali (libvirt+KVM)

Recommended Posts

Hola a todos,

 

spero di non aver sbagliato sezione :)

 

Detto questo, ho acquistato uno o due mesi fa un server dedicato per metter su una serie di macchine virtuali e, finalmente, sto avendo il tempo fisico per farlo.

 

Premessa: ho sempre usato KVM con libvirt per le macchine virtuali perché dovendo gestire un numero limitato di macchine virtuali in proprio e, secondo me, un'ottima alternativa rispetto ad altre soluzioni come ESXi e Xen, soprattutto perché mi permette di fare il setup dell'host per come mi piace (probabilmente potrei farlo pure con Xen ma lo conosco tra zero e niente ^^).

 

Premessa 2: il setup di macchine virtuali l'ho SEMPRE fatto in ambienti di rete locale, a parte un solo caso, ed ho sempre usato, quindi, una configurazione di tipo "bridge" per la rete.

 

Sto usando un setup di tipo "routed" per le VM, visto che gli indirizzi IP aggiuntivi sono mappati direttamente al mac-address della scheda di rete fisica del server e quindi se il mac address non è quello niente da fare (motivo per il quale, benché ovviamente abbia provato per scrupolo, una configurazione bridge non può funzionare).

 

Ho in parte seguito questa guida KVM mit Nutzung aller IPs - the easy way/en

 

Le operazioni che ho svolto sull'host per la rete sono state le seguenti:

- aggiunta di un bridge (virbr0)

- ifconfig virbr0 IP_SERVER_DEDICATO netmask 255.255.255.255

- ip route add IP_AGGIUNTIVO dev virbr0

- iptables -A FORWARD -i virbr0 -o DEVICE_RETE -s IP_AGGIUNTIVO -j ACCEPT

- iptables -A FORWARD -i DEVICE_RETE -o virbr0 -d IP_AGGIUNTIVO -j ACCEPT

- abilitazione del forwarding tra i device di rete ( echo 1 > /proc/sys/net/ipv4/ip_forward )

 

Sul guest, semplicemente:

- ifconfig eth0 IP_AGGIUNTIVO netmask 255.255.255.255

- route add -host IP_SERVER_DEDICATO -dev eth0

- route add default gw IP_SERVER_DEDICATO

 

Tutto funziona correttamente per delle ore (variabile da 2 a 7 ... la durata più lunga l'ho ottenuta con un ping attivo verso l'ip) per poi smettere di funzionare.

 

Per farlo tornare a funzionare devo mettere down la rete virbr0, assegnare l'ip alla scheda di rete fisica fare un ping (così probabilmente gli apparati vedono traffico sul mac address della scheda di rete) e poi posso rifare il setup della rete precedente.

 

(IPOTESI) Quello che penso è che il problema sia dovuto al fatto che i pacchetti escono con un mac address diverso da quello della scheda di rete e gli apparati considerano l'ip down dopo un TOT di tempo e fanno pulizia sulle loro tabelle.

 

Come posso far uscire i pacchetti con il mac address della scheda di rete fisica? In realtà credevo che fosse già così, ma evidentemente non lo è.

 

Se non riesco a risolvere, l'unica opzione, è di usare il NAT (facendo poi un NAT 1-1 con l'ip pubblico che assegno alla VM esternamente), ma sinceramente preferirei proprio evitarlo perché penso che avrei problemi di altra natura se ho bisogno di metter su vpn o robe del genere.

 

PS: non fate troppo caso alla sintassi dei comandi perché sono andato a memoria e potrei aver scritto qualche castroneria

Share this post


Link to post
Share on other sites

Ho provato a rimuovere le regole del firewall perché ho un mezzo dubbio che fossero loro la causa del problema, inoltre ho disabilitato il send_redirects perché, da quanto ho letto, può causare problemi.

 

Se così funziona, provo con l'icmp send_redirects abilitato

Share this post


Link to post
Share on other sites

Ho provato a spegnere i send_redirects ma la cosa non ha sortito alcun effetto

 

Ho anche trovato questo bug

https://bugs.launchpad.net/ubuntu/+source/qemu-kvm/+bug/997978

 

Anche se risulta fixed (da parecchi mesi ormai) ed era, comunque, relativo alla modalità bridged

 

Dimenticavo di dire che ho monitorato il traffico con tcpdump e vedo i pacchetti uscire ma non vedo nulla entrare

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×