Leiten Sie den QEMU-VM-Verkehr über das VPN des Hosts weiter

Leiten Sie den QEMU-VM-Verkehr über das VPN des Hosts weiter

tl;dr Der Host verbindet sich über VPN mit dem Internet und eine VM auf diesem Host läuft nicht über dieses VPN (sollte es aber). Ich glaube, die Netzwerkkonfiguration ist nicht ganz korrekt.

Der Gastgeber

Der Host (Arch Linux) stellt über OpenVPN und eine Konfigurationsdatei eine Verbindung zu einem VPN-Netzwerk her. Daher wird tun0von OpenVPN ein TUN-Gerät ( ) erstellt. Das physische Gerät heißt eno1.

Ich habe viel im Internet gesucht und ein Skript geschrieben, um ein überbrücktes Netzwerk zu erstellen, mit dem sich die VM verbinden kann. Dieses Skript erstellt eine Brücke br0und ein TAP-Gerät tap0. Es bearbeitet auch die Routing-Tabelle, sodass ich über mein VPN normalen Internetzugang auf dem Host habe. Die Tabelle sieht folgendermaßen aus:

~# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.1.102.1      128.0.0.0       UG        0 0          0 tun0
10.1.102.0      0.0.0.0         255.255.255.0   U         0 0          0 tun0
81.95.5.34      192.168.178.1   255.255.255.255 UGH       0 0          0 br0
128.0.0.0       10.1.102.1      128.0.0.0       UG        0 0          0 tun0
192.168.178.0   0.0.0.0         255.255.255.0   U         0 0          0 br0

Die Adressen und die Konfiguration sehen wie folgt aus:

~# ip addr
2: eno1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether e0:3f:49:48:eb:6e brd ff:ff:ff:ff:ff:ff
    inet 192.168.178.29/24 brd 192.168.178.255 scope global eno1
       valid_lft forever preferred_lft forever
95: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none 
    inet 10.1.102.248/24 brd 10.1.102.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fdbf:1d37:bbe0:0:22:6:0:1248/112 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::5ee5:c367:ab47:5928/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
96: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel master br0 state DOWN group default qlen 1000
    link/ether 7a:22:5d:99:01:06 brd ff:ff:ff:ff:ff:ff
97: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 7a:22:5d:99:01:06 brd ff:ff:ff:ff:ff:ff
    inet 192.168.178.120/24 brd 192.168.178.255 scope global noprefixroute br0
       valid_lft forever preferred_lft forever
    inet6 fe80::d731:e2c8:a4f8:224e/64 scope link 
       valid_lft forever preferred_lft forever
    inet6 fe80::7822:5dff:fe99:106/64 scope link 
       valid_lft forever preferred_lft forever
98: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UNKNOWN group default qlen 1000
    link/ether fe:54:00:10:76:e0 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::790c:464b:74f6:6754/64 scope link 
       valid_lft forever preferred_lft forever
    inet6 fe80::fc54:ff:fe10:76e0/64 scope link 
       valid_lft forever preferred_lft forever

Die VM

Wie oben erwähnt, handelt es sich um eine CentOS 7-VM, die ich mit dem Virt-Manager und /usr/bin/qemu-system-x86_64als Emulator ausführe. In den Netzwerkeinstellungen verwende ich ein freigegebenes Gerät ( br0) mit virtioals Gerätemodell.

Auf der VM-Seite sieht es viel einfacher aus. Die Routing-Tabelle:

~# netstat -rn
Kernel IP Routentabelle
Ziel            Router          Genmask         Flags   MSS Fenster irtt Iface
0.0.0.0         192.168.178.1   0.0.0.0         UG        0 0          0 eth0
192.168.178.0   0.0.0.0         255.255.255.0   U         0 0          0 eth0

Und die Adressen:

~# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:10:76:e0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.178.105/24 brd 192.168.178.255 scope global noprefixroute dynamic eth0
       valid_lft 860890sec preferred_lft 860890sec
    inet6 fe80::47ed:5e58:2c27:6b50/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Mein Problem:

Die VM scheint den Datenverkehr nicht über mein VPN zu senden (die VM hat schnellere Ping-Zeiten zu Google als der Host und mtrist auch anders). Stattdessen direkt ins Internet. Ich glaube, ich muss die Routing-Tabellen bearbeiten, aber ich weiß nicht wie.

Ich habe versucht, die IP der Standardroute in 192.168.178.120( br0IP) und auch in 192.168.178.29( eno1IP) zu ändern, aber das hat nicht funktioniert. Ich habe auch eine IP für die erstellt tap0und sie als Standardroute in der VM festgelegt, aber das hat auch nicht funktioniert.

verwandte Informationen