06. [15p] Interconectare mașini virtuale

Creați 2 imagini de disk pornind de la imaginea de baza base.qcow2 cu numele sda-vm1.qcow2 și sda-vm2.qcow2.

Până în acest moment am creat mașini virtuale fără nici o legătură către Internet. Dorim să asigurăm accesul la Internet pentru acestea. Pentru acest lucru trebuie să adăugăm la crearea mașinii virtuale o interfață de rețea cu ajutorul parametrului '-net':

root@saisp:~# kvm -hda sda-vm1.qcow2 -m 256 -smp 2 -net nic,model=e1000,macaddr=00:11:22:33:44:55 -net tap,ifname=tap-vm1

Obligatoriu trebuie să porniți mașina virtuală ca utilizator privilegiat pentru a putea să fie create interfețele de tip tap.

Ignorați warning-ul referitor la tap.

Cu ajutorul primei opțiuni -net nic specificăm proprietățile interfeței din mașina virtuală (în cazul de față se dorește emularea unei interfațe Intel e1000 cu adresa MAC 00:11:22:33:44:55).

Toate opțiunile adăugate nu sunt obligatorii (dacă nu se specifică se folosesc valori implicite). A doua opțiune -net tap specifică tipul interfeței virtuale din mașina fizică ce are corespondență 1 la 1 cu interfața din mașina virtuală (tot traficul trimis pe interfața eth0 de pe masina virtuala ajunge pe interfața tap-vm1 în mașina fizică). De asemenea toți parametri sunt opționali.

Porniți o a doua mașină virtuală folosind imaginea sda-vm2.qcow2 și adăugați-i o interfață de rețea cu adresa MAC AA:11:22:33:44:55 ce are corespondență în mașina fizică o interfață de tip tap cu numele tap-vm2.

root@saisp:~# kvm -hda sda-vm2.qcow2 -m 256 -smp 2 -net nic,model=e1000,macaddr=AA:11:22:33:44:55 -net tap,ifname=tap-vm2

Modificați hostname-urile mașinilor la VM1, respectiv VM2:

root@VM:~# hostname VM1
root@VM:~# su -
root@VM1:~# 
 
root@VM:~# hostname VM2
root@VM:~# su -
root@VM2:~# 

Logați-vă din nou ca root pentru a se modifica prompt-ul.

În acest moment am creat 2 legături virtuale între instanțele KVM și mașina fizică. În mod uzual se dorește ca mașinile virtuale și mașina fizică să aparțină aceleiași rețele. Pentru acest lucru avem nevoie de un switch virtual în care să conectăm legăturile create anterior (tap-vm1 și tap-vm2) împreună cu mașina fizică. Switch-ul virtual poate fi emulat folosind conceptul de bridge din kernelul de Linux.

Vom crea bridge-ul/switch-ul virtual denumit brX, unde X va fi 0 (br urmat de un index):

root@saisp:~# brctl addbr br0
root@saisp:~# ip link set dev br0 up

Întotdeauna, nu uitați să ridicați nivelul 2 al bridge-ului

Vom conecta cele două interfețe virtuale tap-vm1 și tap-vm2 in bridge:

root@saisp:~# brctl addif br0 tap-vm1
root@saisp:~# brctl addif br0 tap-vm2

Configurați pe interfața br0 adresa IP 192.168.1.1/24, iar pe mașinile virtuale adresele IP 192.168.1.2/24, respectiv 192.168.1.3/24. Verificați conectivitatea între cele 3 adrese IP folosind comanda ping.

În acest moment avem conectivitate între toate cele host-uri (saisp, VM1, VM2). Pentru a asigura conectivitatea la Internet trebuie să activăm rutarea și translatarea de adrese (NAT) pe mașina fizică:

root@saisp:~# echo 1 > /proc/sys/net/ipv4/ip_forward
root@saisp:~# iptables -t nat -A POSTROUTING -o ethX -j MASQUERADE

unde ethX este placa de retea de pe masina fizica.

Ne mai rămâne să configurăm ruta implicită și serverul de DNS pe mașinile virtuale. Conectați-vă folosind SSH la mașinile virtuale și adăugați ca rută implicită adresa 192.168.1.1 (mașina fizică) și ca server de DNS 8.8.8.8. Verificați cu ajutorul comenzii ping că site-ul www.google.ro răspunde la cereri.

Scoatem interfețele tap-vm1 și tap-vm2 din bridge, după care îl ștergem pe acesta:

root@saisp:~# brctl delif br0 tap-vm1
root@saisp:~# brctl delif br0 tap-vm2
root@saisp:~# ip link set dev br0 down
root@saisp:~# brctl delbr br0

Închideți mașinile virtuale și ștergeți imaginile create (sda-vm1.qcow2 și sda-vm2.qcow2).

saisp/labs/08/contents/06.txt · Last modified: 2015/05/04 16:56 by alexandru.carp
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0