jak zbrigdować (zmostkować) VirtualBox ?

Czy pomógł Ci ten poradnik

Nie wiem o co w nim chodzi - tak chaotycznie napisany
12
60%
Nie wiem o co w nim chodzi - tak chaotycznie napisany
5
25%
Nie wiem o co w nim chodzi - tak chaotycznie napisany
3
15%
 
Liczba głosów: 20
delcadro
Sędziwy Jeż
Sędziwy Jeż
Posty: 63
Rejestracja: 11 wrz 2006, 00:13
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

jak zbrigdować (zmostkować) VirtualBox ?

Post autor: delcadro » 01 maja 2007, 12:39

Opis dotyczy wersji > = 1.4x < 2.0 i tylko sieci przewodowych !!!

W wersji VB 2.0 mostkowanie jest od razu możliwe bez poniższej konfiguracji. Działa zarówno z sieciami przewodowymi jak i wifi.

Opis dotyczy posiadacza Ubuntu który chce postawić np. wirtualne maszyny Windows XP. Poniższa konfiguracja mostkowania działa tylko i wyłącznie z sieciami kablowymi. Nie działa na sieciach wifi. Konfiguracja odnośnie wifi pojawi się kiedy znajdą się osoby chętne przeczytać ten opis. Obecnie nie widze sensu pisania o mostkowaniu Wifi odkąd pojawiła się wersja 2.0 Virtualboksa która rozwiązuje ten problem.
Osoby chcące dowiedzieć się jak konfigurować VirtualBox (udostępniać foldery, zmieniać rozdzielczość, klonować, tworzyć wrtualne maszyny itp.) odsyłam do świetnego poradnika Ruri znajdującego się pod adresem:
viewtopic.php?t=49282


Co nam umożliwia mostkowanie?

Wyobraźmy sobie sytuacje w której chcielibyśmy postawić całą wirtualną sieć składającą się z kilku komputerów.
Mimo iż stworzymy sobie kilka wirtualnych maszyn to po standardowej instalacji mamy do wyboru dwa interfejsy:
NAT oraz Host Interface (Interfejs gospodarza). Wersja najwosza 1.4 (spolszczona) wprowadziła dodatkowo: Wewnętrzna Sieć.

Uwagi
Poniższe ustawienia znajdziemy w:
głowne okno VirtualBox -- Zaznaczamy interesującą nas wirtualną maszynę -- klikamy w ustawienia -- Sieć -- Adapter 0(1,2..)


NAT
Umożliwia bez żadnego kombinowania posiadanie Internetu na wirtualnej maszynie.
Zalety:
od razu mamy Internet na wirtualnej maszynie
Wady:
żaden komputer z sieci - łącznie z komputerem systemowym (Ubuntu) nie będzie widział maszyny (nie będzie pingowal itp)
NAT automatycznie blokuje caly ruch wchodzący do wirtualnych maszyn.

Wewnętrzna Sieć

Także jej postawienie nie sprawia nam kłopotu. Wystarczy z rozwijanej listy ustawień sieciowych wirtualnej maszyny wybrać "Dołączony do" -- Wewnętrzna Sieć

Możemy ją stworzyć stawiając minimum 2 wirtualne maszyny (np. 2 XP).
Po uruchomieniu wirtualnych maszyn odpowienio konfigurujemy ustawienia sieciowe - tzn nadajemy różne adresy IP.
Zalety:
Od razu mamy sieć. Widzą się nawzajem wirtualne maszyny (pingują itp). Fajna sprawa do testowania rozwiązań sieciowych.
Wady:
Nie mamy kontaktu z kompem systemowym - więc nie mamy Internetu (tylko wewnętrzną sieć). Choć to także jest zaleta - bezpieczeństwo testowania. Z zewnątrz sieci (Internetu) nikt nie dostanie się do wirtualnych maszyn.



Interfejs gospodarza (Host Interface) - on umożliwi mostkowanie.
Nim w dalszej cześci będę się zajmował.

Umożliwia nam tworzenie całych wielopoziomowych sieci. Ten interfejs dopiero umożliwia w pełnej krasie testowanie rozwiązań sieciowych. Dzięki niemu możemy mostkować sieci, udostępniać połączenia z jednej wirtualnej maszyny do drugiej, testować firewalle itp.


Aby z niego skorzystać musimy:


1. Najpierw instalujemy

Kod: Zaznacz cały

sudo apt-get install uml-utilities bridge-utils

2. Uml-utilites tworzy grupę uml-net. Trzeba siebie dodać do tej grupy!!!

3. Następnie edytujemy /etc/network/interfaces

Kod: Zaznacz cały

auto lo

iface lo inet loopback

iface eth0 inet static            
address 0.0.0.0                

auto tap1
iface tap1 inet manual
    tunctl_user moj_login       

auto bridge0   
iface bridge0 inet dhcp          
    bridge-ports eth0 tap1    
    bridge-ageing 7200         
    bridge-fd 0                      


Wyjaśnienie:
Moim podstawowym interfejsem jest eth0. Numer IP dostawałem automatycznie z DHCP.
Jeśli miałeś statyczny numer IP w swoim interfejsie to musisz dodać je w bridge0 (nie w eth0 !! )

address 0.0.0.0 #koniecznie adres 0.0.0.0

tunctl_user moj_login # moj_login zastąp swoim loginem

bridge-ports eth0 tap1 # moża dopisać więcej interfejsów do mostkowania

Przykładowy wpis powinien wyglądać tak:

Kod: Zaznacz cały

iface bridge0 inet static
address 192.168.1.100   
gateway 192.168.1.1
netmask 255.255.255.0
bridge-ports eth0 tap1       
    bridge-ageing 7200          
    bridge-fd 0         



Wpis

Kod: Zaznacz cały

iface eth0 inet static            
address 0.0.0.0   
oznacza, że swojemu głownemu interfejsowi przydzielamy IP = 0.0.0.0
Rolę Waszego głównego interfejsu przejmuje bridge0 (poprawcie reguły w firewallu)

Wpis

Kod: Zaznacz cały

 bridge-ports eth0 tap1   

oznacza, że łączymy dawa podane interfejsy w jeden (bridge0) - mostkujemy je.

4. Uruchamiamy cały system (samo sudo /etc/init.d/networking restart w moim przypadku nie wystarczyło)

5. Po uruchomieniu ubuntu udpalacie VirtualBox i przechodzicie do ustawień Sieci konkretnej wirtualnej maszyny.
a)tam z listy wyboru wybieramy "Interfejs gospodarza"
b)w "Nazwa interfejsu" wpisujecie

Kod: Zaznacz cały

tap1


Jeśli porzebujecie więcej takich interfejsów zmostkowanych (np dla innych wirualnych maszyn uruchamianych naraz) wtedy po prostu dublujecie wpisy

Kod: Zaznacz cały

auto tap1
iface tap1 inet manual
    tunctl_user moj_login

tylko w miejscach gdzie był tap1 wpisujecie tap2 i kolejne numery.
Dodatkowo w miejscu
bridge-ports eth0 tap1
dopisujecie kolejne interfejsy więc np wyglądałoby to tak:
Kod:

Kod: Zaznacz cały

    bridge-ports eth0 tap1 tap2 tap3


Przykład
Przykład stworzenia sieci składającej się z 3 wirtualnych Windows XP kompuerów:




Chcemy aby nasza sieć wyglądała tak:


Kod: Zaznacz cały

                                       Internet(Ruter)
					        |	
					        |
					   Windows XP (K1)
				            |        |                 
			        Windows XP(K2)       |
                                                     |  
					    Windows XP (K3)

Widzimy, że K1 będzie potrzebował dwóch interfejsów sieciowych
Komputerom K1 i K2 wystarczy jeden interfejs (oba są bezpośrednio podpięte pod K1)

Teraz trzeba się zastanowić jak połączyć te interfejsy:

K1 łącząc się z Internetem potrzebuje na pewno interfejsu tap1. tap1 musi być zmostkowany z eth0 (inczej nie będzie internetu). Do połączenia z siecią wewnętrzną potrzebuje drugiego mostkowego interfejsu - tap2 (zbridgowany z interfesjami sieci wewnętrznej)
Więc w wyborze ustawień Sieci w Adapter0 wpisujemy tap1, a w Adapter1 tap2

W K2 wpisujemy tap3, a w K3 tap4

Ustawienia /etc/network/interfaces:

Powinno wyglądać tak:

Kod: Zaznacz cały

auto lo    
iface lo inet loopback
	
iface eth0 inet static
address 0.0.0.0
	     
auto tap1
iface tap1 inet manual
tunctl_user delcadro

auto tap2
iface tap2 inet manual
tunctl_user delcadro

auto tap3
iface tap3 inet manual
tunctl_user delcadro

auto tap4
iface tap4 inet manual
tunctl_user delcadro

auto bridge2
iface bridge2 inet static
address 192.168.1.100     # drugiemu mostkowi wymyślamy jakieś IP 
netmask 255.255.255.0     
bridge-ports tap2 tap3 tap4     # bridgujemy 3 interfejsy
bridge-ageing 7200         
bridge-fd 0                       
                                   
				 
auto bridge0
iface bridge0 inet dhcp
bridge-ports eth0 tap1
bridge-ageing 7200
bridge-fd 0
Pozostało nam skofigurowanie XP (i firewalla na ubuntu)
Na K1 pierwszy interfejs pobiera swoje IP z DHCP (na ruterze)
To połączenie musimy udostępnić. Po tym zabiegu drugiemu interfejsowi zostanie nadane IP 192.168.0.1 maska: 255.255.255.0

Na K2 wpisujemy(chyba, że mamy na K1 postawiny serwer DHCP wtedy zostawiamy ustawienia na auto) np.: IP 192.168.1.5 maska: 255.255.255.0 brama: 192.168.0.1
Na K1 wisujemy(chyba, że mamy na K1 postawiny serwer DHCP wtedy zostawiamy ustawienia na auto) np.: IP 192.168.1.6 maska: 255.255.255.0 brama: 192.168.0.1




Uwagi:
Ważna jest kolejność wpisów w /etc/network/interfaces.
Widzimy przecież ze najpierw ma zostać zresetowany eth0, później mają się stworzyć interfejsy tap1, tap2 a później mostki z tych interfejsów.
Bardzo ważną sprawą jest odpowiednie skonfigurowanie firewalla. Niestety nie jestm dobry w IPTABLES wiec po prostu przy takiej konfiguracji np Firestarter musi być wyłączony.


Przy mniej skompliwowanym połączeniu: np tylko jednej maszyny wirtualnej , której przydzieliliśmy tap1(i zmostkowaliśmy z eth0) wystarczy w Firestarterze włączyć Enable Internet Connection Sharing oraz wybrać na OBU wykrytych urządzeniach ten jedyny mostek: bridge0


6 Podsumowanie


Dzięki powyższym ustawieniom otrzymacie min. możliwość widzenia się Ubuntu i virtualnego XP w otoczeniu sieciowym. Nie musze chyba mowić jakie ma to zalety. Ja potrzebowałem tego strasznie do pracy mgr inż. Dla porównania w vmware do mostkowania otrzymuje się dostęp od razu po instalacji, ale niestety moj sprzet nie wytrzymywał na vmware 2 systemów naraz z czym VirtualBox radzi sobie bez problemów (choć troszkę wolno)(Ubuntu + wirtualne:3x XP + IPCOP/Linux na 384 MB RAM SDR, Duron 1,2).

PS w razie uwag lub pytań proszę pisać na priv.

Uwagi dodatkowe
Jesli uzupełniacie plik /etc/network/interfaces
to starajcie się nie pisać w nich momentarzy jak np.

Kod: Zaznacz cały

bridge-ports tap2 tap3 tap4     # bridgujemy 3 interfejsy
wystarczy samo

Kod: Zaznacz cały

bridge-ports tap2 tap3 tap4
Zauważyłem, że jeśli występuje komentarz to mogą pojawić się problemy przy przetwarzaniu tego pliku.
::::::::::: Delcadro::::::::::::
ODPOWIEDZ

Wróć do „Software-Sieć”