Le réseau ponté KVM ne fonctionne pas

23

Je viens d'installer KVM sur mon serveur Ubuntu selon ce guide: https://help.ubuntu.com/community/KVM/Installation

Puis préparé un réseau ponté comme indiqué ici: https://help.ubuntu.com/community/KVM/Networking

Ensuite, j'ai créé une machine virtuelle avec virt-manager. J'ai essayé plusieurs fois mais l'invité ne parvient pas à se connecter au réseau! De l'aide?

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)

spectacle brctl:

 bridge name    bridge id      STP enabled    interfaces
 br0       8000.d02788b0e438   no        eth0
 virbr0         8000.000000000000   yes  

showmacs brctl 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

route 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

* Dans l'invité * Je n'ai pas pu copier-coller les informations de l'invité car je ne peux pas y accéder. Il n'a obtenu aucune IP de DHCP. Ne fonctionnera pas même après l'avoir configuré manuellement.

THpubs
la source
Puis-je vous suggérer de fournir la sortie des commandes suivantes? Sur l'hôte: ifconfig, brctl show, brctl showmacs br0et ip route. Sur l'invité: ifconfig, ip route, ping 8.8.8.8, ping <your internet router>et traceroute 8.8.8.8. Je ne peux pas dire que j'ai configuré kvm comme vous l'avez fait, mais j'ai obtenu un pontage pour travailler en utilisant la kvmcommande. J'ai dû déconnecter le sans fil pour que mon hôte se connecte à Internet et, comme le disent les instructions que vous avez citées, vous devez vous connecter à Internet avec Ethernet.
John S Gruber
@JohnSGruber Vous venez d'ajouter les informations que vous avez demandées. Mais je n'ai pas pu copier coller les informations de l'invité car je ne peux pas y accéder. Il n'a obtenu aucune IP de DHCP. Ne fonctionnera pas même après l'avoir configuré manuellement.
THpubs
L'adresse MAC que vous avez attribuée à l'invité figure-t-elle dans la brctl showmacs br0liste ci-dessus?
John S Gruber
Je n'ai pas ajouté le mac manuellement .. mais permettez-moi de vérifier le mac qu'il a obtenu ..
THpubs
@JohnSGruber Non, je ne vois pas ce MAC ici!
THpubs

Réponses:

22

Préliminaires

Cette suite a fonctionné pour moi pour Ubuntu 12.04. Vous devez désactiver le pare-feu de votre ordinateur pendant que vous testez cela afin qu'il n'interfère pas.

Le fichier / etc / default / qemu-kvm doit être tel qu'initialement installé.

Vous aurez besoin d'avoir bridge-utils qemu-kvm et libvirt-binInstaller des passerelles Installer qemu-kvmInstallez libvirt-bin installé . Tous les utilisateurs utilisant des machines virtuelles doivent être ajoutés au groupe libvirtd.

Il ne semble plus être nécessaire d'ajouter la capacité CAP_NET_ADMIN.

Configuration du réseau

Le mode réseau par défaut est le mode utilisateur, également appelé SLIRP. Il utilise un pont virbr0 prédéfini qui est routé NAT vers l'ordinateur invité. Le routage NAT utilise la fonction ip_forwarding du noyau et iptables . Le mode pont utilise un pont virtuel dans l'invité auquel l'interface Ethernet (non numérotée) se connecte, et sur lequel l'hôte et l'invité ont leurs interfaces réseau.

Les diagrammes suivants peuvent rendre les différences plus claires:

Diagrammes de réseau

Vous pouvez voir comment le réseau d'utilisateurs par défaut est défini avec:

virsh net-dumpxml default

Je peux configurer le mode ponté avec les approches suivantes:

Dans / etc / network / interfaces (à partir de la partie passerelle du message que vous mentionnez dans votre question):

auto lo
iface lo inet loopback
#auto eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet manuel
auto br0
iface br0 inet dhcp
    bridge_ports eth0
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

Redémarrer; et assurez-vous que la mise en réseau sans fil n'est pas active. Vérifiez la route IP par défaut avec ip route. Il doit utiliser l'interface br0.

NB Si votre Ethernet n'est pas connecté lorsque cette modification est effectuée, vous devez avoir votre câble Ethernet branché et obtenir un transporteur ou le démarrage se bloquera pendant deux minutes et vous n'aurez pas de capacité réseau C'est parce que l'interface eth0, par étant dans ce fichier, doit apparaître avant que le démarrage puisse continuer normalement.

NB Généralement, vous ne pouvez pas utiliser un réseau sans fil au lieu de eth0 en raison de leur incapacité à utiliser plusieurs adresses MAC (j'en déduis qu'ils ont besoin d'une seconde pour le pont).

Comme alternative, vous pouvez désactiver l'utilisation d'Ethernet et vous assurer qu'il n'a pas d'adresse IP et qu'il n'y a pas de route par défaut configurée avec ip route. Ensuite:

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

Vous pouvez également fournir une adresse IP statique ici, ainsi que définir la route et l'adresse DNS par défaut. Pour cet exemple dhclientfait cela.

Voici ma table de route:

$ ip route list
par défaut via 192.168.1.1 dev br0 métrique 100 
169.254.0.0/16 dev br0 scope link metric 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

Utilisation de kvm

Je peux ensuite démarrer une machine kvm pontée avec:

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

Le -netdev tapparamètre fait de sudo une exigence. Au démarrage de la machine virtuelle, qemu-kvm exécute les commandes suivantes:

ifconfig vnet0 0.0.0.0 up
brctl addif brctl addif br0 vnet0

Cela se fait par / etc / qemu-ifup

L'interface vnet0 de la machine virtuelle est ajoutée au pont br0 car la route par défaut ci-dessus utilise cette interface de pont. Si ce n'était pas le cas, l'interface tap à la place serait ajoutée à l'interface virbr0. Comme ce n'est pas connecté à Internet, NAT serait utilisé pour connecter l'invité à l'hôte et à Internet, dans mes expériences. Vous pouvez diriger le vnet0 vers un pont particulier dans / etc / default / qemu-kvm. En utilisant virt-manager ci-dessous, vous pouvez explicitement indiquer à quel pont se connecter.

En raison des commandes ci-dessus émises par qemu-kvm et du -netdev tap,id=tunnel,ifname=vnet0paramètre, la machine virtuelle vm est connectée au tunnel vnet0 et le tunnel est connecté au pont br0.

Je peux maintenant directement ssh dans cette machine virtuelle invitée à partir d'un autre ordinateur de mon réseau.

Mon hôte ifconfig(notez l'interface vnet0 qui apparaît sur mon réseau lorsque la machine virtuelle est en cours d'exécution):

$ ifconfig
br0 Lien encap: Ethernet HWaddr 00: 1e: 33: 88: 07: e5  
          inet addr: 192.168.1.45 Bcast: 255.255.255.255 Masque: 255.255.255.0
          inet6 addr: fe80 :: 21e: 33ff: fe88: 7e5 / 64 Portée: Lien
          UP BROADCAST RUNNING MULTICAST MTU: 1500 Métrique: 1
          Paquets RX: 6526 erreurs: 0 abandonnées: 0 dépassements: 0 trame: 0
          Paquets TX: 7543 erreurs: 0 abandonnées: 0 dépassements: 0 porteuse: 0
          collisions: 0 txqueuelen: 0 
          Octets RX: 2712940 (2,7 Mo) Octets TX: 1071835 (1,0 Mo)

eth0 Link encap: Ethernet HWaddr 00: 1e: 33: 88: 07: e5  
          UP BROADCAST RUNNING MULTICAST MTU: 1500 Métrique: 1
          Paquets RX: 7181 erreurs: 0 abandonnées: 0 dépassements: 0 trame: 0
          Paquets TX: 7740 erreurs: 0 abandonnées: 0 dépassements: 0 porteuse: 0
          collisions: 0 txqueuelen: 1000 
          Octets RX: 2974585 (2,9 Mo) Octets TX: 1096580 (1,0 Mo)
          Interruption: 43 Adresse de base: 0x6000 

lo Link encap: boucle locale  
          inet addr: 127.0.0.1 Mask: 255.0.0.0
          inet6 addr: :: 1/128 Champ d'application: hôte
          UP LOOPBACK RUNNING MTU: 16436 Métrique: 1
          Paquets RX: 10 erreurs: 0 abandonnées: 0 dépassements: 0 trame: 0
          Paquets TX: 10 erreurs: 0 abandonnées: 0 dépassements: 0 porteuse: 0
          collisions: 0 txqueuelen: 0 
          Octets RX: 664 (664,0 B) Octets TX: 664 (664,0 B)

vnet0 Link encap: Ethernet HWaddr ca: 0c: 73: c3: bc: 45  
          inet6 addr: fe80 :: c80c: 73ff: fec3: bc45 / 64 Portée: Lien
          UP BROADCAST RUNNING MULTICAST MTU: 1500 Métrique: 1
          Paquets RX: 226 erreurs: 0 abandonné: 0 dépassements: 0 trame: 0
          Paquets TX: 429 erreurs: 0 abandonnées: 0 dépassements: 0 porteuse: 0
          collisions: 0 txqueuelen: 500 
          Octets RX: 26919 (26,9 Ko) Octets TX: 58929 (58,9 Ko)

virbr0 Link encap: Ethernet HWaddr d6: 18: 22: db: ff: 93  
          inet addr: 192.168.122.1 Bcast: 192.168.122.255 Masque: 255.255.255.0
          UP BROADCAST MULTICAST MTU: 1500 Métrique: 1
          Paquets RX: 0 erreurs: 0 abandonnées: 0 dépassements: 0 trame: 0
          Paquets TX: 0 erreurs: 0 abandonnées: 0 dépassements: 0 porteuse: 0
          collisions: 0 txqueuelen: 0 
          Octets RX: 0 (0,0 B) Octets TX: 0 (0,0 B)

Ma configuration de pont lors de l'exécution de la machine virtuelle:

$ brctl show
nom de pont id de pont interfaces compatibles STP
br0 8000.001e338807e5 pas eth0
                                                        vnet0
virbr0 8000.000000000000 oui

Notez que l'interface vnet0 de la machine virtuelle et l'interface eth0 sont connectées au pont br0.

Et les MAC sur l'interface br0:

$ brctl showmacs br0
port aucun addr mac est local? minuterie de vieillissement
  1 00: 05: 5d: cf: 64: 61 non 2.54
  1 00: 19: d2: 42: 5d: 3f non 36.76
  1 00: 19: df: da: af: 7c no 2.86
  1 00: 1e: 33: 88: 07: e5 oui 0,00
  1 00: 60: 0f: e4: 17: d6 non 0,79
  2 52: 54: 00: 12: 34: 56 non 0,80
  1 58: 6d: 8f: 17: 5b: c0 non 5,91
  1 c8: aa: 21: be: 8d: 16 non 167.69
  2 ca: 0c: 73: c3: bc: 45 oui 0,00

Notez que l'interface br0 connecte mon ordinateur hôte au même pont utilisé par l'invité.

Vous pouvez vérifier que vous êtes ponté plutôt que NAT routé vers votre propre réseau en utilisant traceroute 8.8.8.8. Si le premier nœud est le routeur de votre réseau plutôt que l'adresse IP de l'invité, votre réseau devrait fonctionner correctement.

Consultez cette documentation .

virt-manager

Assurez-vous que vous avez installé virt-manageret hal. Le halpackage est une dépendance suggérée pour virt-manageret est utilisé pour déterminer la configuration réseau de votre système lors de la création ou de la modification d'invités.

Tout en ayant le pont br0 défini comme ci-dessus, j'ai créé une machine virtuelle avec virt-manager comme suit:

entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici

J'ai pu accéder directement au reste de mon réseau domestique et à Internet à partir de cet invité. J'ai également pu y accéder depuis l'autre ordinateur Ubuntu (non hôte, non invité) sur mon réseau domestique.

Voici la très longue kvmcommande exécutée par virt-manager (pour comparaison avec EApubs ou toute autre personne ayant des problèmes avec cela):

/ usr / bin / kvm -S -M pc-1.0 -enable-kvm -m 1024 -smp 1, sockets = 1, cores = 1, threads = 1 -name precise -uuid f057a729-eda6-4b85-84dc-f100c9ae3789 - nodefconfig -nodefaults -chardev socket, id = charmonitor, path = / var / lib / libvirt / qemu / precise.monitor, server, nowait -mon chardev = charmonitor, id = monitor, mode = control -rtc base = utc -no- shutdown -drive file = / media / natty / home / gruber / ubuntu-kvm / tmpW8gSGB.qcow2, if = none, 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 -device 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 -device virtio-balloon-pci, id = balloon0, bus = pci.0, addr = 0x5

Voici la partie réseau de la description de la machine virtuelle dans /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>

Selon ce lien, pour des performances et une fiabilité, il peut être préférable de définir le modèle de périphérique réseau sur virtio, vous pouvez le faire en utilisant virt-viewer en appuyant sur le bouton i , en allant au paramètre NIC et en définissant le "Modèle de périphérique "à virtio. Vous pouvez également ajouter ceci au XML ci-dessus en ajoutant la ligne:

      <model type='virtio'/>

En résumé

Tout cela a pris le 12.04 était:

  1. Installation de virt-manager, bridge-utils, qemu-kvm et des packages associés
  2. Assurez-vous que chaque utilisateur souhaitant utiliser kvm se trouve dans le groupe libvirtd.
  3. Définir / etc / network / interfaces comme ci-dessus (qui correspond à l'article cité)
  4. Redémarrez, en vous assurant qu'Ethernet est branché et que la connexion sans fil (le cas échéant) est désactivée.
  5. Exécutez kvm sur une image directement avec, par exemple -device e1000,netdev=tunnel -netdev tap,id=tunnel,ifname=vnet0, ou créez une machine virtuelle avec virt-manager, en spécifiant le pont réseau br0 sous le panneau Étape 4-> Options avancées.

Aucune autre modification n'a été nécessaire pour la mise en réseau, les capacités, les modèles ou les configurations.

Pour exposer un service de votre nouvel invité à Internet, vous devez:

  1. Préparez et configurez tout service de pare-feu dont vous aurez besoin.
  2. Attribuez une adresse statique dans votre configuration d'invité ou dans votre service DHCP.
  3. Si vous utilisez un routeur NAT, ouvrez un port pour le service que vous implémentez en le dirigeant vers l'adresse IP de l'invité.

N'oubliez pas de tester et de réactiver le service de pare-feu pour votre ordinateur hôte. Il peut avoir besoin de n'importe quelle entrée pour transmettre le trafic à l'invité.

Voir https://help.ubuntu.com/community/KVM/Installation , https://help.ubuntu.com/community/KVM/Networking et https://help.ubuntu.com/12.04/serverguide/libvirt. html .

John S Gruber
la source
Salut, je n'ai pas de carte sans fil sur cette machine. uniquement Ethernet :)
THpubs
Je comprends que vous n'avez pas de réseau sans fil - mais d'autres pourraient lire cette question. J'ai posté une section virt-manager puisque c'est ce que vous avez utilisé. Avez-vous spécifié Bridged to br0 à l'étape 4 Options avancées lors de la création de la machine virtuelle? Les paramètres de mise en réseau de la commande kvm lancée par virt-manager correspondent-ils aux miens? (Vous pouvez le voir en exécutant ps aux | grep kvm).
John S Gruber
Salut lors de la création d'une machine virtuelle à l'aide du gestionnaire virt, dans les options avancées, je ne vois pas eth0 et br0.
THpubs
Eh bien, c'est probablement le problème - c'est la clé pour le faire fonctionner sous virt-manager. Utilisez-vous la machine qui l'hébergera (et avec br0 défini brctl showcomme vous l'avez dans votre question?) Quelle version d'Ubuntu utilisez-vous? C'est peut-être la différence. Quelle version de virt-manager? (Le mien est 0.9.1-1ubuntu5.1).
John S Gruber
Im exécutant Ubuntu 12.04 et virt-manager 0.9.1-1ubuntu5.1. En fait, je n'ai pas virt-manager installé sur l'hôte. Je l'ai dans une machine distante et je l'utilise pour me connecter à l'hôte. Est-ce le problème que j'ai?
THpubs
6

Si le comportement que vous voyez est l'hôte peut accéder à l'invité, et l'invité peut accéder à l'hôte, mais l'invité ne peut pas accéder à d'autres machines sur le réseau ou vice versa ... probablement le pare-feu de l'hôte bloque l'accès.

Voir: https://bugs.launchpad.net/ubuntu/+source/ufw/+bug/573461

Plus précisément, cette section: "La dernière étape consiste à désactiver netfilter sur le pont:

# 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
la source
3

Ce sont les deux scripts que j'utilise pour créer un pont pour qemu-kvm .

Tout d'abord, laissez l'hôte devenir un routeur IP.

Script 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  

Ensuite, créez l' tun-tapinterface etbridge celle ci avec votre interface par défaut (généralement celle avec une connexion Internet).

Script 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

J'utilise ces scripts quotidiennement, donc ils devraient aussi bien fonctionner pour vous. Vous devrez installer un paquet pour que tout cela fonctionne. En utilisant:

dlocate `which COMMAND`

vous pouvez voir quel package doit avoir COMMAND. Par exemple, pour voir quel package doit avoir brctl, exécutez simplement:

dlocate `which brctl`

et vous aurez:

bridge-utils: /sbin/brctl

En utilisant la même approche pour toutes les commandes de ces scripts, vous devez (au moins) exécuter cette aptitudeligne de commande:

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

Enfin, vous pouvez lancer le script principal (en tant qu'utilisateur normal):

#> 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

En cours d'exécution, ip addrvous devriez voir une br0interface avec une adresse IP 192.168.1.1, comme spécifié dans le create-qemu-bridged-tuntap.shscript:

#> 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

C'est host addresscomme vu par le guest. A l'inverse, l'invité aura comme adresse IP192.168.1.95 (encore une fois, cela peut être facilement modifié à l'intérieur du script principal).

Maintenant, en utilisant virt-manager, il vous suffit de configurer votre nic invité pour l'utiliser br0comme interface physique.

virt-manager-br0-nic

À l'intérieur du guest, il vous suffit de donner eth0une adresse IP à 192.168.1.95et tout devrait bien se passer.

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
la source
Bien que vous utilisiez un pont pour le faire, il me semble que vous créez une fonction de transfert NAT. Néanmoins, si vous pouvez transférer certains ports hôtes, il fera peut-être ce que veut EApubs. Réponse très intéressante et très utile sans égard.
John S Gruber
Merci, cela fonctionne parfaitement pour mes besoins. Mais, en fait, je n'ai pas besoin d'un accès à distance à ma VM et je pensais que EApubs essayait simplement d'avoir un accès Internet sur sa VM.
Avio
@Avio Non mon ami, j'ai besoin d'un accès à distance à ma machine. Si je définis NAT et crée la VM, cela fonctionne.
THpubs
Il y a un indice ici à un problème que j'ai eu où le transfert IP était désactivé, qui est cat /proc/sys/net/ipv4/ip_forwarddonné 0. L'activer et le persister a résolu le problème pour moi, les instructions de ce post .
Jake Cobb