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
tap
.
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
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
).