Właśnie zainstalowałem KVM na moim serwerze Ubuntu zgodnie z tym przewodnikiem: https://help.ubuntu.com/community/KVM/Installation
Następnie przygotowałem zmostkowaną sieć, jak pokazano tutaj: https://help.ubuntu.com/community/KVM/Networking
Następnie stworzyłem maszynę wirtualną z virt-managerem. Próbowałem kilka razy, ale gość nie łączy się z siecią! Jakaś pomoc?
ifconfig:
br0 Link encap:Ethernet HWaddr d0:27:88:b0:e4:38
inet addr:192.168.20.100 Bcast:192.168.20.255 Mask:255.255.255.0
inet6 addr: fe80::d227:88ff:feb0:e438/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:62 errors:0 dropped:0 overruns:0 frame:0
TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:10493 (10.4 KB) TX bytes:8433 (8.4 KB)
eth0 Link encap:Ethernet HWaddr d0:27:88:b0:e4:38
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:62 errors:0 dropped:0 overruns:0 frame:0
TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:11361 (11.3 KB) TX bytes:8479 (8.4 KB)
Interrupt:41
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
virbr0 Link encap:Ethernet HWaddr 5a:8c:57:95:af:3b
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
pokaż brctl:
bridge name bridge id STP enabled interfaces
br0 8000.d02788b0e438 no eth0
virbr0 8000.000000000000 yes
brctl showmacs br0:
port no mac addr is local? ageing timer
1 5c:d9:98:67:b6:28 no 48.33
1 d0:27:88:b0:e4:38 yes 0.00
1 e0:2a:82:f9:6c:09 no 0.00
trasa ip:
default via 192.168.20.1 dev br0 metric 100
192.168.20.0/24 dev br0 proto kernel scope link src 192.168.20.100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
* W gościu * Nie byłem w stanie skopiować wkleić informacji od gościa, ponieważ nie mogę do niego ssh. Nie otrzymał żadnego adresu IP z DHCP. Nie będzie działać nawet po ręcznym skonfigurowaniu.
server
networking
kvm
network-bridge
THpubs
źródło
źródło
ifconfig
,brctl show
,brctl showmacs br0
, iip route
. Na gości:ifconfig
,ip route
,ping 8.8.8.8
,ping <your internet router>
, itraceroute 8.8.8.8
. Nie mogę powiedzieć, że skonfigurowałem KVM tak jak ty, ale zacząłem mostkować się do pracy za pomocąkvm
polecenia. Musiałem rozłączyć sieć bezprzewodową, aby mój host mógł połączyć się z Internetem i, zgodnie z podanymi przez ciebie wskazówkami, musisz połączyć się z Internetem za pomocą Ethernetu.brctl showmacs br0
powyższej liście?Odpowiedzi:
Czynności wstępne
To działało dla mnie dla Ubuntu 12.04. Podczas testowania należy wyłączyć zaporę komputera, aby nie przeszkadzała.
Plik / etc / default / qemu-kvm powinien być taki, jak pierwotnie zainstalowany.
Będziesz musiał zainstalować most-utils qemu-kvm i libvirt-bin . Dowolni użytkownicy korzystający z maszyn wirtualnych powinni zostać dodani do grupy libvirtd.
Wydaje się, że nie ma już potrzeby dodawania możliwości CAP_NET_ADMIN.
Ustawienia sieci
Domyślnym trybem sieci jest tryb użytkownika, zwany także SLIRP. Używa predefiniowanego mostu virbr0, który jest routowany przez NAT do komputera-gościa. Routing NAT korzysta z funkcji ip_forwarding jądra i iptables . Tryb mostowania używa wirtualnego mostu w gościu, z którym łączy się (nienumerowany) interfejs Ethernet i na którym zarówno host, jak i gość mają swoje interfejsy sieciowe.
Poniższe diagramy mogą wyjaśnić różnice:
Możesz zobaczyć, jak zdefiniowana jest domyślna sieć użytkownika za pomocą:
Mogę ustawić tryb zmostkowany za pomocą następujących metod:
W / etc / network / interfaces (z pomostowej części postu, o której wspomniałeś w swoim pytaniu):
Restart; i upewnij się, że sieć bezprzewodowa nie jest aktywna. Sprawdź domyślną trasę IP za pomocą
ip route
. Musi używać interfejsu br0.NB: Jeśli twój Ethernet nie jest podłączony po wprowadzeniu tej zmiany, musisz podłączyć kabel Ethernet i uzyskać nośnik , bo inaczej boot zawiesi się na dwie minuty i nie będziesz mieć możliwości sieciowych To dlatego, że interfejs eth0, przez znajdując się w tym pliku, musi pojawić się, aby rozruch mógł rozpocząć się normalnie.
Uwaga: Zasadniczo nie można używać sieci bezprzewodowej zamiast eth0 ze względu na ich niezdolność do używania wielu adresów MAC (wnioskuję, że potrzebują one drugiego dla mostu).
Alternatywnie możesz wyłączyć korzystanie z Ethernetu i upewnić się, że nie ma on adresu IP i że nie ma skonfigurowanej domyślnej trasy
ip route
. Następnie:Możesz również podać tutaj statyczny adres IP, a także zdefiniować domyślną trasę i adres DNS. W tym przykładzie
dhclient
robi to.Oto moja tabela tras:
Korzystanie z KVM
Następnie mogę uruchomić zmostkowaną maszynę KVM za pomocą:
Ten
-netdev tap
parametr powoduje, że sudo jest wymagane. Podczas uruchamiania maszyny wirtualnej qemu-kvm uruchamia następujące polecenia:Odbywa się to przez / etc / qemu-ifup
Interfejs vnet0 maszyny wirtualnej jest dodawany do mostu br0, ponieważ domyślna trasa powyżej używa tego interfejsu mostu. Jeśli nie byłoby, interfejs tap zostałby dodany do interfejsu virbr0. Ponieważ nie jest to połączone z Internetem, w moich eksperymentach NAT byłby używany do połączenia gościa z hostem i Internetem. Możesz skierować vnet0 do konkretnego mostu w / etc / default / qemu-kvm. Za pomocą virt-manager poniżej możesz bezpośrednio wskazać, z którym mostem się połączyć.
Z powodu powyższych poleceń wydanych przez qemu-kvm i
-netdev tap,id=tunnel,ifname=vnet0
parametru maszyna wirtualna vm jest podłączona do tunelu vnet0, a tunel jest podłączony do mostu br0.Teraz mogę bezpośrednio ssh do tej gościnnej maszyny wirtualnej z innego komputera w mojej sieci.
Mój host
ifconfig
(zwróć uwagę na interfejs vnet0, który pojawia się w mojej sieci, gdy maszyna wirtualna jest uruchomiona):Moja konfiguracja mostu podczas uruchamiania maszyny wirtualnej:
Zauważ, że zarówno interfejs vnet0 maszyny wirtualnej, jak i interfejs eth0 są podłączone do mostka br0.
A MAC na interfejsie br0:
Zauważ, że interfejs br0 łączy mój komputer-host z tym samym mostem, z którego korzysta gość.
Za pomocą możesz sprawdzić, czy jesteś zmostkowany, a nie NAT skierowany do własnej sieci
traceroute 8.8.8.8
. Jeśli pierwszym węzłem jest router sieci, a nie adres IP gościa, sieć powinna działać poprawnie.Zobacz tę dokumentację .
virt-manager
Upewnij się, że zainstalowałeś
virt-manager
ihal
.hal
Pakiet to sugeruje zależność dlavirt-manager
i jest używany do określenia konfiguracji sieciowej systemu podczas tworzenia lub edytowania gości.Mając zdefiniowany powyżej most br0, stworzyłem maszynę wirtualną z virt-managerem w następujący sposób:
Od tego gościa mogłem przejść bezpośrednio do reszty mojej sieci domowej i Internetu. Byłem także w stanie ssh do niego z innego komputera Ubuntu (nie hosta, gościa) w mojej sieci domowej.
Oto bardzo długie
kvm
polecenie uruchamiane przez virt-manager (dla porównania z EApubami lub innymi problemami z tym):Oto część sieciowa opisu maszyny wirtualnej w /etc/libvirt/qemu/quantal.xml
Zgodnie z tym linkiem, dla wydajności i niezawodności, najlepiej ustawić model urządzenia sieciowego
virtio
, możesz to zrobić w przeglądarce virt, naciskając przycisk i , przechodząc do ustawienia karty sieciowej i ustawiając „Model urządzenia „dovirtio
. Możesz również dodać to do powyższego kodu XML, dodając wiersz:W podsumowaniu
Wszystko to zajęło 12.04:
-device e1000,netdev=tunnel -netdev tap,id=tunnel,ifname=vnet0
Lub utwórz maszynę wirtualną z virt-managerem, określając mostek sieciowy br0 w panelu Krok 4> Opcje zaawansowane.Nie trzeba było wprowadzać żadnych dalszych zmian w sieci, możliwościach, szablonach ani konfiguracjach.
Aby udostępnić usługę nowemu gościowi w Internecie, należy:
Pamiętaj, aby przetestować i ponownie włączyć usługę zapory na komputerze-hoście. Może wymagać dowolnego wpisu, aby przekazać ruch gościowi.
Zobacz https://help.ubuntu.com/community/KVM/Installation , https://help.ubuntu.com/community/KVM/Networking i https://help.ubuntu.com/12.04/serverguide/libvirt. HTML .
źródło
ps aux | grep kvm
).brctl show
w swoim pytaniu?) W jakiej wersji Ubuntu używasz? Może to różnica. Jaka wersja virt-manager? (Mój to 0.9.1-1ubuntu5.1).Jeśli widzisz zachowanie, że host może uzyskać dostęp do gościa, a gość może uzyskać dostęp do hosta, ale gość nie może uzyskać dostępu do innych komputerów w sieci lub odwrotnie ... prawdopodobnie zapora hosta blokuje dostęp.
Zobacz: https://bugs.launchpad.net/ubuntu/+source/ufw/+bug/573461
W szczególności ta sekcja: „Ostatnim krokiem jest wyłączenie filtru sieciowego na moście:
źródło
Są to dwa skrypty, których używam do tworzenia mostu
qemu-kvm
.Najpierw pozwól hostowi stać się routerem IP.
Scenariusz
ip-router.sh
:Następnie utwórz
tun-tap
interfejs ibridge
z domyślnym interfejsem (zwykle z połączeniem internetowym).Skrypt
create-qemu-bridged-tuntap.sh
:Używam tych skryptów codziennie, więc powinny działać dobrze również dla Ciebie. Musisz zainstalować jakiś pakiet, aby wszystko działało. Za pomocą:
możesz zobaczyć, który pakiet jest wymagany
COMMAND
. Na przykład, aby zobaczyć, który pakiet jest wymaganybrctl
, po prostu uruchom:i będziesz miał:
Stosując to samo podejście do wszystkich poleceń w tych skryptach, powinieneś (przynajmniej) uruchomić następującą
aptitude
linię poleceń:Wreszcie możesz uruchomić główny skrypt (jako zwykły użytkownik):
Po
ip addr
uruchomieniu powinieneś zobaczyćbr0
interfejs z adresem IP192.168.1.1
określonym wcreate-qemu-bridged-tuntap.sh
skrypcie:Jest to
host address
widziane przezguest
. I odwrotnie, gość będzie miał adres IP192.168.1.95
(ponownie, można to łatwo zmienić w skrypcie głównym).Teraz, używając
virt-manager
, musisz po prostu skonfigurować gościa, aby używał gobr0
jako fizycznego interfejsu.Wewnątrz
guest
musisz tylko podaćeth0
adres IP192.168.1.95
i wszystko powinno działać dobrze.źródło
cat /proc/sys/net/ipv4/ip_forward
podane0
. Włączanie i utrzymywanie go rozwiązało problem, instrukcje w tym poście .