2

I heard that a guest OS and a host OS in KVM can communicate via having network interfaces or IP addresses in the same private network. I also heard that

You can see its IP addresses and network interfaces in the container and VM networks in ifconfig’s output.

I show the outputs of ifconfig in a guest OS and a host OS below. Could you tell me which network interface or IP address in the guest OS corresponds to which in the host OS, and vice versa? Thanks.

In a Debian guest OS via VMM/KVM,

user@debian:~$ /sbin/ifconfig
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAS>  mtu 1500
        inet 192.168.122.202  netmask 255.255.255.0  broadcast 192.168.122.255
        inet6 fe80::5054:ff:fe99:5eee  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:99:5e:ee  txqueuelen 1000  (Ethernet)
        RX packets 5504  bytes 4872073 (4.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4199  bytes 559987 (546.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 20044

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 488  bytes 39360 (38.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 488  bytes 39360 (38.4 KiB)
        TX errors 0  dropped 0 overruns 0  carries 0  collisions 0

In Lubuntu host OS:

$ ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:a6:79:a6:bc  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s25: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether   txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 20  memory 0xfc400000-fc420000  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 3102389  bytes 174723039 (174.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3102389  bytes 174723039 (174.7 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:b1:aa:1f  txqueuelen 1000  (Ethernet)
        RX packets 708  bytes 68468 (68.4 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 316  bytes 51806 (51.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::fc54:ff:fe99:5eee  prefixlen 64  scopeid 0x20<link>
        ether fe:54:00:99:5e:ee  txqueuelen 1000  (Ethernet)
        RX packets 257  bytes 28494 (28.4 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 23514  bytes 1240204 (1.2 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlx8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.97  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6   prefixlen 64  scopeid 0x20<link>
        ether 80:1f:02:b5:c3:89  txqueuelen 1000  (Ethernet)
        RX packets 1269625  bytes 1045069752 (1.0 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 646600  bytes 101897054 (101.8 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • Are you doing nat rules? How the ip will correspond to the guest? – Luciano Andress Martini Mar 25 at 15:39
  • I guess I'm missing the point of your question. This appears to be very basic networking, on the surface. Debian guest, ens3 is assigned 192.168.122.202. Lubuntu host, virbr0 is assigned 192.168.122.1. If you check the ip route and related settings on Debian, you will see the gateway address for Debian is 192.168.122.1. This is normal and more-or-less default behavior for libvirt/KVM/QEMU on Debian and Enterprise Linux based distros, in my experience. – 0xSheepdog Mar 25 at 15:45
  • How do you "check the ip route and related settings on Debian, you will see the gateway address for Debian is 192.168.122.1 "? @0xSheepdog – Tim Mar 25 at 15:47
  • I would try the basic command line utility to check the network settings... ip route From the fine man page: linux.die.net/man/8/ip – 0xSheepdog Mar 25 at 15:49
  • where in the output of ip route shows the gateway address for Debian? @0xSheepdog – Tim Mar 25 at 15:51
3

Your guest has one non-loopback interface, ens3; that’s the interface it uses to communicate with the host. On the host, the matching interface is the interface in the same network, which is virbr0 here. If you want to list the interfaces which are part of the bridge, run

brctl show virbr0

on the host.

You can also match the routes in the guest to the host: the guest’s gateway will be the host. To see the routes, run

ip route list

The default gateway is given on the “default” line, something like

default via 192.168.122.1 dev ens3 proto static metric 100
  • Thanks. brctl run virbr0 doesn't work – Tim Mar 28 at 23:27
  • Sorry, that should be brctl show virbr0. – Stephen Kitt Mar 29 at 10:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.