2010-09-15

VirtualBox - propojeni dvou hostu pomoci VDE (Ubuntu)

Resil jsem problem, jak propojit virtualni masiny ve dvou VirtualBoxech (na Ubuntu), aniz by komunikovali primo po LANce - VDE bylo nasnade, ale nikde jsem nemohl najit poradnej step-by-step. Toz jsem si ho sam urobil a proc se nepodelit, zejo :)
Kterak tedy propojit dva stroje (rekneme pc1 a pc2) pomoci virtualniho switche? Takto:
Na obou strojich je treba udelat toto:
1) Instalovat VDE
$ sudo apt-get install vde2
2) Vytvorit VDE switch
a) Pokud nepotrebujeme lokalni iface pripojeny do VDE, pak muzeme spustit pod userem:
$ vde_switch -daemon -sock /tmp/vde.tpl -mgmt /tmp/vde.mgmt
b) Pokud potrebujeme ke switchi pripojit i hosta, pak je treba vytvorit spolu se switchem TAP iface (to uz vyzaduje root permise):
$ sudo vde_switch -tap tap0 -daemon -sock /tmp/vde.tpl -mgmt /tmp/vde.mgmt
TAP iface je dobre pak i oadresovat:
$sudo ifconfig tap0 192.168.254.1/24
Pokud chceme se switchem pak pracovat jako user, je vhodne upravit prava:
$ sudo chmod 777 /tmp/vde.mgmt
$ sudo chmod -R 777 /tmp/vde.tpl/
3) Pripojit k VDE switchi je mozne takto:
$ unixterm /tmp/vde.mgmt
prikazem port/allprint pak zobrazime pripojene porty - pokud jsme nevytvorili TAP iface, tak bude vypis prazdny, pokud jsme ho vytvorili, tak bude vypadat zhruba takto:
vde$ port/allprint
0000 DATA END WITH '.'
Port 0001 untagged_vlan=0000 ACTIVE - Unnamed Allocatable
 Current User: NONE Access Control: (User: NONE - Group: NONE)
 IN:  pkts         46          bytes                  6351
 OUT: pkts          0          bytes                     0
  -- endpoint ID 0007 module tuntap : tap0
.
1000 Success
 4) Ve VirtualBoxu pripojit konkretni sitovy adapter konkretni VM k VDE switchi
!!! Jmeno VDE adapteru se musi shodovat sparametrem "-sock" z prikazu "vde_switch" v bodu 2

 5) Zkontrolovat, zda se opravdu VM pripojila ke switchi:
vde$ port/allprint
0000 DATA END WITH '.'
Port 0001 untagged_vlan=0000 ACTIVE - Unnamed Allocatable
 Current User: NONE Access Control: (User: NONE - Group: NONE)
 IN:  pkts         82          bytes                 11351
 OUT: pkts          0          bytes                     0
  -- endpoint ID 0007 module tuntap      : tap0
Port 0002 untagged_vlan=0000 ACTIVE - Unnamed Allocatable
 Current User: user Access Control: (User: NONE - Group: NONE)
 IN:  pkts          0          bytes                     0
 OUT: pkts          0          bytes                     0
  -- endpoint ID 0008 module unix prog   : VirtualBOX user=user PID=10493
.
1000 Success
Pokud jsme na obou strojich vytvorili VDE switch, tak je jeste nutne je propojit mezi sebou, aby VM v obou VirtualBoxech dokazali mezi sebou komunikovat (logicky, ze jo :-) To muzeme udelat nekolika zpusoby, ja ukazu dva:
a) pomoci SSH
Na jednom stroji (prip. na obou) je treba rozjet SSH server (defaultne ma Ubuntu instalovanyho jen klienta)
$ sudo apt-get install openssh-server
Na druhym stroji pak pustime tento prikaz:
$ dpipe vde_plug /tmp/vde.tpl = ssh user@pc2 vde_plug /tmp/vde.tpl
Nevyhodu to ma jasnou - heslo je nutny napsat ruco fuco, naopak vyhoda je, ze komunikace tese sifrovane. Nevyhody je mozny se zbavit nastavenim SSH certifikatu, ale tim se tady nehodlam zabyvat :)
b) pomoci netcat
Na jednom stroji pustime:
$ dpipe vde_plug /tmp/vde.tpl = nc -l -u 8000
Na druhym stroji pustime:
$ dpipe vde_plug /tmp/vde.tpl = nc -u -p 8000 pc1 8000
I tady je nevyhoda jasna - data tecou nesifrovane, na druhou stranu vyhoda spociva v tom, ze neni potreba zadny heslo, takze se to da krasne naskriptovat. Taky u tohoto zpusobu zpojeni VDE switchu je mozny se nevyhody zbavit, napr. sestavenim IPSec tunelu (ani tim se tady nebudu zabyvat :)

Tak, jako rychly navod by to mohlo stacit, neni-liz pravda?

Žádné komentáře:

Okomentovat

Mazat komentáře nehodlám, výjimky však tvoří vulgární a off-topic komentáře!