Differences

This shows you the differences between two versions of the page.

Link to this comparison view

saisp:labs:08:contents:06 [2014/01/29 19:38]
mihai.carabas [06. [15p] Interconectare mașini virtuale]
saisp:labs:08:contents:06 [2015/05/04 16:56] (current)
alexandru.carp [06. [15p] Interconectare mașini virtuale]
Line 2: Line 2:
 ==== 06. [15p] Interconectare mașini virtuale ==== ==== 06. [15p] Interconectare mașini virtuale ====
  
-Creați 2 imagini de disk pornind de la imaginea de baza ''​sda.qcow2''​ cu numele ''​sda-vm1.qcow2''​ și ''​sda-vm2.qcow2''​.+Creați 2 imagini de disk pornind de la imaginea de baza ''​base.qcow2''​ cu numele ''​sda-vm1.qcow2''​ și ''​sda-vm2.qcow2''​.
 <​solution -hidden> <​solution -hidden>
-<​code>​ +<​code ​bash
-root@saisp:​~#​ qemu-img create -f qcow2 -b sda.qcow2 sda-vm1.qcow2 +root@saisp:​~#​ qemu-img create -f qcow2 -b base.qcow2 sda-vm1.qcow2 
-root@saisp:​~#​ qemu-img create -f qcow2 -b sda.qcow2 sda-vm2.qcow2+root@saisp:​~#​ qemu-img create -f qcow2 -b base.qcow2 sda-vm2.qcow2
 </​code>​ </​code>​
 </​solution>​ </​solution>​
  
-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':<​code>​ +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':<​code ​bash
-root@saisp:​~#​ kvm -hda sda-vm1.qcow2 -m 256 -smp 2 -net nic,​model=e1000,name=eth5,​macaddr=00:​11:​22:​33:​44:​55 -net tap,​ifname=tap-vm1+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
 </​code>​ </​code>​
  
Line 18: Line 18:
 <note warning>​Ignorați warning-ul referitor la ''​tap''​.</​note>​ <note warning>​Ignorați warning-ul referitor la ''​tap''​.</​note>​
  
-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țIntel e1000 care poartă numele ''​eth5''​ și are 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 ''​eth5''​ ajunge pe interfața ''​tap-vm1''​ în mașina fizică). De asemenea toți parametri sunt opționali.+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ț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ții o interfață de rețea cu numele ''​eth4''​ și adresa MAC AA:​11:​22:​33:​44:​55 ce are corespondență în mașina fizică o interfață de tip ''​tap''​ cu numele ''​tap-vm2''​.+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''​.
 <​code>​ <​code>​
-root@saisp:​~#​ kvm -hda sda-vm2.qcow2 -m 256 -smp 2 -net nic,​model=e1000,name=eth4,​macaddr=AA:​11:​22:​33:​44:​55 -net tap,​ifname=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
 </​code>​ </​code>​
  
-Modificați hostname-urile mașinilor la ''​VM1'',​ respectiv ''​VM2'':<​code>​+Modificați hostname-urile mașinilor la ''​VM1'',​ respectiv ''​VM2'':<​code ​bash>
 root@VM:~# hostname VM1 root@VM:~# hostname VM1
 root@VM:~# su - root@VM:~# su -
Line 36: Line 38:
 Logați-vă din nou ca ''​root''​ pentru a se modifica prompt-ul. 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ă ​aceleaș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 ​uzual denumit ''​brX'',​ unde ''​X''​ va fi ''​0''​ (//br// urmat de un index):<​code>​+Î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):<​code ​bash>
 root@saisp:​~#​ brctl addbr br0 root@saisp:​~#​ brctl addbr br0
 root@saisp:​~#​ ip link set dev br0 up root@saisp:​~#​ ip link set dev br0 up
 </​code>​ </​code>​
 <note important>​Întotdeauna,​ nu uitați să ridicați nivelul 2 al bridge-ului</​note>​ <note important>​Întotdeauna,​ nu uitați să ridicați nivelul 2 al bridge-ului</​note>​
-Vom conecta cele două interfețe virtuale ''​tap-vm1''​ și ''​tap-vm2'':<​code>​+Vom conecta cele două interfețe virtuale ''​tap-vm1''​ și ''​tap-vm2'' ​in bridge:<​code ​bash>
 root@saisp:​~#​ brctl addif br0 tap-vm1 root@saisp:​~#​ brctl addif br0 tap-vm1
 root@saisp:​~#​ brctl addif br0 tap-vm2 root@saisp:​~#​ brctl addif br0 tap-vm2
 </​code>​ </​code>​
  
-Configurați pe interfața ''​br0''​ adresa IP ''​192.168.1.1/​24'',​ iar pe mașinile virtuale ​adresa ​IP ''​192.168.1.2/​24'',​ respectiv ''​192.168.1.3/​24''​. Verificați conectivitatea între cele 3 adrese IP folosind comanda ''​ping''​.+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''​.
 <​solution -hidden> <​solution -hidden>
-<​code>​+<​code ​bash>
 root@saisp:​~#​ ip a a 192.168.1.1/​24 dev br0 root@saisp:​~#​ ip a a 192.168.1.1/​24 dev br0
  
-root@VM1:~# ip a a 192.168.1.2/​24 dev eth5+root@VM1:~# ip a a 192.168.1.2/​24 dev eth0
  
-root@VM2:~# ip a a 192.168.1.3/​24 dev eth4+root@VM2:~# ip a a 192.168.1.3/​24 dev eth0
  
 root@saisp:​~#​ ping 192.168.1.2 root@saisp:​~#​ ping 192.168.1.2
Line 60: Line 64:
 </​solution>​ </​solution>​
  
-Î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ă:<​code>​+Î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ă:<​code ​bash>
 root@saisp:​~#​ echo 1 > /​proc/​sys/​net/​ipv4/​ip_forward root@saisp:​~#​ echo 1 > /​proc/​sys/​net/​ipv4/​ip_forward
-root@saisp:​~#​ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE+root@saisp:​~#​ iptables -t nat -A POSTROUTING -o ethX -j MASQUERADE
 </​code>​ </​code>​
 +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. 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.
 <​solution -hidden> <​solution -hidden>
-<​code>​+<​code ​bash>
 root@saisp:​~#​ ssh root@192.168.1.2 root@saisp:​~#​ ssh root@192.168.1.2
 root@VM1:~# ip route add default via 192.168.1.1 root@VM1:~# ip route add default via 192.168.1.1
-root@VM1:~# echo nameserver 8.8.8.8 > /​etc/​resolv.conf+root@VM1:~# echo "nameserver 8.8.8.8" ​> /​etc/​resolv.conf
 root@VM1:~# ping www.google.ro root@VM1:~# ping www.google.ro
 </​code>​ </​code>​
 </​solution>​ </​solution>​
  
-Scoatem interfețele ''​tap-vm1''​ și ''​tap-vm2''​ din bridge, după care îl ștergem pe acesta:<​code>​+Scoatem interfețele ''​tap-vm1''​ și ''​tap-vm2''​ din bridge, după care îl ștergem pe acesta:<​code ​bash>
 root@saisp:​~#​ brctl delif br0 tap-vm1 root@saisp:​~#​ brctl delif br0 tap-vm1
 root@saisp:​~#​ brctl delif br0 tap-vm2 root@saisp:​~#​ brctl delif br0 tap-vm2
 +root@saisp:​~#​ ip link set dev br0 down
 root@saisp:​~#​ brctl delbr br0 root@saisp:​~#​ brctl delbr br0
 </​code>​ </​code>​
  
 Închideți mașinile virtuale și ștergeți imaginile create (''​sda-vm1.qcow2''​ și ''​sda-vm2.qcow2''​). Închideți mașinile virtuale și ștergeți imaginile create (''​sda-vm1.qcow2''​ și ''​sda-vm2.qcow2''​).
saisp/labs/08/contents/06.1391017099.txt.gz · Last modified: 2014/01/29 19:38 by mihai.carabas
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