KVM Bridged Network nie działa

23

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.

THpubs
źródło
Czy mogę zasugerować przekazanie danych wyjściowych z następujących poleceń? Na hoście: ifconfig, brctl show, brctl showmacs br0, i ip route. Na gości: ifconfig, ip route, ping 8.8.8.8, ping <your internet router>, i traceroute 8.8.8.8. Nie mogę powiedzieć, że skonfigurowałem KVM tak jak ty, ale zacząłem mostkować się do pracy za pomocą kvmpolecenia. 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.
John S Gruber,
@JohnSGruber Właśnie dodałem żądane informacje. Ale 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.
THpubs
Czy adres MAC przypisany gościowi znajduje się na brctl showmacs br0powyższej liście?
John S Gruber,
Nie
dodałem Maca
@JohnSGruber Nie Nie widzę tutaj tego MAC!
THpubs

Odpowiedzi:

22

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.Zainstaluj narzędzia mostkowe Zainstaluj qemu-kvmZainstaluj libvirt-bin

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:

Diagramy sieciowe

Możesz zobaczyć, jak zdefiniowana jest domyślna sieć użytkownika za pomocą:

virsh net-dumpxml default

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):

auto lo
iface lo inet loopback
#auto eth0
#iface eth0 inet dhcp
auto eth0
Instrukcja obsługi iface eth0 inet
auto br0
iface br0 inet dhcp
    mosty_portowe eth0
    bridge_stp wyłączony
    bridge_fd 0
    bridge_maxwait 0

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:

 sudo ifconfig eth0 0.0.0.0 up
 sudo brctl addbr br0
 sudo brctl addif br0 eth0
 sudo ifconfig br0 up
 sudo dhclient br0 &

Możesz również podać tutaj statyczny adres IP, a także zdefiniować domyślną trasę i adres DNS. W tym przykładzie dhclientrobi to.

Oto moja tabela tras:

Lista tras $ ip
domyślnie przez 192.168.1.1 dev br0 metric 100 
169.254.0.0/16 dev br0 zakres link metryka 1000 
192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.45 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1

Korzystanie z KVM

Następnie mogę uruchomić zmostkowaną maszynę KVM za pomocą:

 $ sudo kvm -name Quantal -m 1024 -hda foo.qcow2 --soundhw ac97 -device virtio-net,netdev=tunnel -netdev tap,id=tunnel,ifname=vnet0

Ten -netdev tapparametr powoduje, że sudo jest wymagane. Podczas uruchamiania maszyny wirtualnej qemu-kvm uruchamia następujące polecenia:

ifconfig vnet0 0.0.0.0 w górę
brctl addif brctl addif br0 vnet0

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=vnet0parametru 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):

$ ifconfig
br0 Linkowanie: Ethernet HWaddr 00: 1e: 33: 88: 07: e5  
          adres inet: 192.168.1.45 Emisja: 255.255.255.255 Maska: 255.255.255.0
          inet6 addr: fe80 :: 21e: 33ff: fe88: 7e5 / 64 Zakres: Link
          UP BROADCAST RUNNING MULTICAST MTU: 1500 Metryczne: 1
          Pakiety RX: 6526 błędów: 0 odrzuconych: 0 przekroczeń: 0 ramek: 0
          Pakiety TX: 7543 błędy: 0 usunięte: 0 przekroczeń: 0 operator: 0
          kolizje: 0 txqueuelen: 0 
          RX bajtów: 2712940 (2,7 MB) TX bajtów: 1071835 (1,0 MB)

eth0 Link encap: Ethernet HWaddr 00: 1e: 33: 88: 07: e5  
          UP BROADCAST RUNNING MULTICAST MTU: 1500 Metryczne: 1
          Pakiety RX: 7181 błędów: 0 odrzuconych: 0 przekroczeń: 0 ramek: 0
          Pakiety TX: 7740 błędów: 0 odrzuconych: 0 przekroczeń: 0 nośnych: 0
          kolizje: 0 txqueuelen: 1000 
          Bajty RX: 2974585 (2,9 MB) bajty TX: 1096580 (1,0 MB)
          Przerwanie: 43 Adres bazowy: 0x6000 

lo Link encap: Lokalna pętla zwrotna  
          adres inet: 127.0.0.1 Maska: 255.0.0.0
          inet6 addr: :: 1/128 Zakres: Host
          UP UP LOOPBACK RUNNING MTU: 16436 Metryczne: 1
          Pakiety RX: 10 błędów: 0 odrzuconych: 0 przekroczeń: 0 ramek: 0
          Pakiety TX: 10 błędów: 0 odrzuconych: 0 przekroczeń: 0 nośnych: 0
          kolizje: 0 txqueuelen: 0 
          RX bajtów: 664 (664,0 B) TX bajtów: 664 (664,0 B)

vnet0 Link encap: Ethernet HWaddr ca: 0c: 73: c3: bc: 45  
          inet6 addr: fe80 :: c80c: 73ff: fec3: bc45 / 64 Zakres: Link
          UP BROADCAST RUNNING MULTICAST MTU: 1500 Metryczne: 1
          Pakiety RX: 226 błędów: 0 odrzuconych: 0 przekroczeń: 0 ramek: 0
          Pakiety TX: 429 błędów: 0 odrzuconych: 0 przekroczeń: 0 nośnych: 0
          kolizje: 0 txqueuelen: 500 
          Bajty RX: 26919 (26,9 KB) Bajty TX: 58929 (58,9 KB)

virbr0 Link encap: Ethernet HWaddr d6: 18: 22: db: ff: 93  
          adres inet: 192.168.122.1 Transmisja: 192.168.122.255 Maska: 255.255.255.0
          UP BROADCAST MULTICAST MTU: 1500 Metryczne: 1
          Pakiety RX: 0 błędów: 0 odrzuconych: 0 przekroczeń: 0 ramek: 0
          Pakiety TX: 0 błędów: 0 odrzuconych: 0 przekroczeń: 0 nośnych: 0
          kolizje: 0 txqueuelen: 0 
          Bajty RX: 0 (0,0 B) Bajty TX: 0 (0,0 B)

Moja konfiguracja mostu podczas uruchamiania maszyny wirtualnej:

pokaż brctl
nazwa mostu identyfikator mostu Interfejsy włączone STP
br0 8000.001e338807e5 bez eth0
                                                        vnet0
virbr0 8000.000000000000 tak

Zauważ, że zarówno interfejs vnet0 maszyny wirtualnej, jak i interfejs eth0 są podłączone do mostka br0.

A MAC na interfejsie br0:

$ brctl showmacs br0
port żaden adres MAC nie jest lokalny? licznik czasu starzenia
  1 00: 05: 5d: cf: 64: 61 nr 2.54
  1 00: 19: d2: 42: 5d: 3f nr 36,76
  1 00: 19: df: da: af: 7c nr 2.86
  1 00: 1e: 33: 88: 07: e5 tak 0,00
  1 00: 60: 0f: e4: 17: d6 nie 0,79
  2 52: 54: 00: 12: 34: 56 nr 0,80
  1 58: 6d: 8f: 17: 5b: c0 nr 5,91
  1 c8: aa: 21: be: 8d: 16 nr 167,69
  2 ca: 0c: 73: c3: bc: 45 tak 0,00

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-manageri hal. halPakiet to sugeruje zależność dla virt-manageri 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:

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

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 kvmpolecenie uruchamiane przez virt-manager (dla porównania z EApubami lub innymi problemami z tym):

/ usr / bin / kvm -S -M pc-1.0 -enable-kvm -m 1024 -smp 1, gniazda = 1, rdzenie = 1, wątki = 1 -nazwa precyzyjne -uuid f057a729-eda6-4b85-84dc-f100c9ae3789 - nodefconfig -nodefaults -chardev gniazdo, id = charmonitor, ścieżka = / var / lib / libvirt / qemu / precision.monitor, serwer, nowait -mon chardev = charmonitor, id = monitor, tryb = kontrola -rtc base = utc -no- shutdown -drive file = / media / natty / home / gruber / ubuntu-kvm / tmpW8gSGB.qcow2, jeśli = brak, id = drive-ide0-0-0, format = qcow2 -device ide-drive, bus = ide.0 , unit = 0, drive = drive-ide0-0-0, id = ide0-0-0, bootindex = 1 -netdev tap, fd = 18, id = hostnet0-urządzenie rtl8139, netdev = hostnet0, id = net0, mac = 52: 54: 00: 0e: da: 9b, bus = pci.0, addr = 0x3 -chardev pty, id = charserial0 -device isa-serial, chardev = charserial0, id = serial0 -usb -vnc 127.0.0.1: 0 -vga cirrus -device intel-hda, id = sound0, bus = pci.0, addr = 0x4 -device hda-duplex, id = sound0-codec0, bus = sound0.0,cad = 0 - urządzenie virtio-balloon-pci, id = balon0, bus = pci.0, addr = 0x5

Oto część sieciowa opisu maszyny wirtualnej w /etc/libvirt/qemu/quantal.xml

    <interface type='bridge'>
      <mac address='52:54:00:b0:8e:aa'/>
      <source bridge='br0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

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 „do virtio. Możesz również dodać to do powyższego kodu XML, dodając wiersz:

      <model type='virtio'/>

W podsumowaniu

Wszystko to zajęło 12.04:

  1. Instalowanie virt-manager, bridge-utils, qemu-kvm i powiązanych pakietów
  2. Upewnij się, że każdy użytkownik, który chce użyć KVM, należy do grupy libvirtd.
  3. Definiowanie / etc / network / interfaces jak wyżej (które pasują do cytowanego artykułu)
  4. Uruchom ponownie, upewniając się, że Ethernet jest podłączony i bezprzewodowy (jeśli występuje) jest wyłączony.
  5. Uruchom kvm bezpośrednio na obrazie, np. -device e1000,netdev=tunnel -netdev tap,id=tunnel,ifname=vnet0Lub 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:

  1. Przygotuj i skonfiguruj dowolną potrzebną zaporę ogniową.
  2. Przydziel adres statyczny w konfiguracji gościa lub w usłudze DHCP.
  3. Jeśli używasz routera NAT, otwórz port dla wdrażanej usługi i przekieruj go na adres IP gościa.

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 .

John S Gruber
źródło
Cześć, nie mam karty bezprzewodowej na tym komputerze. tylko Ethernet :)
THpubs
Rozumiem, że nie masz łączności bezprzewodowej - ale inni czytający to pytanie mogą. Opublikowałem sekcję virt-manager, ponieważ tego właśnie użyłeś. Czy podczas tworzenia maszyny wirtualnej podałeś Bridged do br0 w kroku 4 Opcje zaawansowane? Czy parametry sieciowe w komendzie kvm uruchomionej przez virt-manager pasują do moich? (Możesz to zobaczyć uruchamiając ps aux | grep kvm).
John S Gruber,
Cześć podczas tworzenia maszyny wirtualnej za pomocą menedżera virt, w zaawansowanych opcjach nie widzę eth0 i br0.
THpubs
To prawdopodobnie problem - to klucz do tego, aby działał pod virt-managerem. Czy pracujesz na komputerze, który będzie go hostował (i z br0 zdefiniowanym brctl showw 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).
John S Gruber,
Korzystam z Ubuntu 12.04 i virt-manager 0.9.1-1ubuntu5.1. Właściwie nie mam zainstalowanego virt-managera na hoście. Mam go na zdalnej maszynie i używam go do łączenia się z hostem. Czy to problem, który mam?
THpubs
6

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:

# cat >> /etc/sysctl.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
EOF
Jeremy Spilman
źródło
3

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:

#!/bin/bash

internetinterface="eth0"

username=`whoami`

if [ "x$username" != "xroot" ] ; then

    echo    
    echo "You must be root in order to run this script..."
    echo    

    exit    

fi  

if [ "x$1" != "x" ] ; then
    internetinterface="$1"
fi  

if [ "x$1" == "xdel" ] || [ "x$2" == "xdel" ] ; then
    disable="1"
else
    disable="0"
fi  

if [ "$disable" == "0" ] ; then
    echo "Enabling IP forward and setting up masquerade NAT on interface $internetinterface"

    echo 1 > /proc/sys/net/ipv4/ip_forward

    iptables -t nat -A POSTROUTING -o $internetinterface -j MASQUERADE
else
    echo "Disable IP forward and setting down masquerade NAT on interface $internetinterface"

    echo 0 > /proc/sys/net/ipv4/ip_forward

    iptables -t nat -D POSTROUTING -o $internetinterface -j MASQUERADE
fi  

Następnie utwórz tun-tap interfejs ibridge z domyślnym interfejsem (zwykle z połączeniem internetowym).

Skrypt create-qemu-bridged-tuntap.sh:

#!/bin/bash

bridgename=br0
tapinterface=tap0
outinterface=eth1

if [ "x$1" != "x" ] ; then
    outinterface="$1"
fi  

ifaces=`awk -F: '{print $1}' /proc/net/dev | tail -n +3`
iffound="0"

for i in $ifaces
do  
    if [ "$outinterface" == "$i" ] ; then
            iffound="1"
    fi  
done

if [ "$iffound" == "0" ] ; then
    echo
    echo "Can't find the output interface."
    echo
    exit 1
fi  

outifaceip=`ifconfig | grep -A1 $outinterface | tail -1 | awk -F: '{print $2}' | awk '{print $1}'`
outifaceiptokens=`echo $outifaceip | awk -F \. '{print NF}'`

if [ "$outifaceiptokens" != "4" ] ;  then
    echo
    echo "The selected output interface $outinterface doesn't seem to have a valid IP address."
    echo
    exit 1
fi  

hostaddress="192.168.1.1"
guestaddress="192.168.1.95"

sudo tunctl -t $tapinterface

sudo brctl addbr $bridgename
sudo brctl addif $bridgename $tapinterface

sudo ip link set $bridgename up
sudo ip addr add $hostaddress/24 dev $bridgename

sudo route add -host $guestaddress dev $bridgename
sudo parprouted eth1 $bridgename

sudo ~/scripts/ip-router.sh $outinterface

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ą:

dlocate `which COMMAND`

możesz zobaczyć, który pakiet jest wymagany COMMAND. Na przykład, aby zobaczyć, który pakiet jest wymagany brctl, po prostu uruchom:

dlocate `which brctl`

i będziesz miał:

bridge-utils: /sbin/brctl

Stosując to samo podejście do wszystkich poleceń w tych skryptach, powinieneś (przynajmniej) uruchomić następującą aptitudelinię poleceń:

sudo aptitude install dlocate iproute parprouted iptables uml-utilities bridge-utils net-tools

Wreszcie możesz uruchomić główny skrypt (jako zwykły użytkownik):

#> create-qemu-bridged-tuntap.sh eth0
Set 'tap0' persistent and owned by uid 0
Enabling IP forward and setting up masquerade NAT on interface eth0

Po ip addruruchomieniu powinieneś zobaczyć br0interfejs z adresem IP 192.168.1.1określonym w create-qemu-bridged-tuntap.shskrypcie:

#> ip addr
8: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 36:76:ee:d6:63:b2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 scope global br0

Jest to host addresswidziane 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ł go br0jako fizycznego interfejsu.

virt-manager-br0-nic

Wewnątrz guestmusisz tylko podać eth0adres IP 192.168.1.95i wszystko powinno działać dobrze.

Slackware13:~> ifconfig 
eth0      Link encap:Ethernet  HWaddr 52:54:00:F7:6A:78  
          inet addr:192.168.1.95  Bcast:192.168.1.255  Mask:255.255.255.0
Avio
źródło
Mimo że używasz do tego mostu, wydaje mi się, że tworzysz funkcję przekazywania NAT. Niemniej jednak, jeśli możesz przekierować niektóre porty hosta, może zrobi to, czego chce EApub. Niezależnie od tego bardzo interesująca i bardzo przydatna odpowiedź.
John S Gruber,
Dziękuję, działa bezbłędnie dla moich celów. Ale tak naprawdę nie potrzebuję zdalnego dostępu do mojej maszyny wirtualnej i pomyślałem, że EApubs po prostu próbuje mieć dostęp do Internetu na swojej maszynie wirtualnej.
Avio
@Avio Nie, mój przyjacielu, potrzebuję zdalnego dostępu do mojego komputera. Jeśli ustawię NAT i utworzę maszynę wirtualną, to zadziała.
THpubs
Jest tutaj wskazówka na problem, który miałem, gdy przekazywanie IP było wyłączone, to jest cat /proc/sys/net/ipv4/ip_forwardpodane 0. Włączanie i utrzymywanie go rozwiązało problem, instrukcje w tym poście .
Jake Cobb