
tl;dr Host se conecta a través de VPN a Internet y una VM en este host no pasa por esta VPN (pero debería hacerlo). Creo que la configuración de la red no es del todo correcta.
El anfitrión
El host (arch Linux) se conecta a una red VPN usando openvpn y un archivo de configuración, por lo que hay un dispositivo TUN ( tun0
) creado por openvpn. El dispositivo físico se llama eno1
.
Busqué mucho en Internet y escribí un script para crear una red puente a la que se pueda conectar la VM. Este script crea un puente br0
y un dispositivo TAP tap0
. También edita la tabla de enrutamiento, para que tenga acceso normal a Internet en el host a través de mi VPN. La tabla se ve así:
~# 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
Las direcciones y la configuración se ven así:
~# 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
la máquina virtual
Como se mencionó anteriormente, es una máquina virtual centos 7 que ejecuto usando virt-manager y /usr/bin/qemu-system-x86_64
como emulador. En la configuración de red utilizo un dispositivo compartido ( br0
) virtio
como modelo de dispositivo.
En el lado de las máquinas virtuales, parece mucho más simple. La tabla de enrutamiento:
~# 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
Y las direcciones:
~# 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
Mi problema:
La VM no parece enviar el tráfico a través de mi VPN (la VM tiene tiempos de ping a Google más rápidos que el host y mtr
también es diferente). En lugar de eso, directamente a Internet. Creo que tengo que editar las tablas de enrutamiento, pero no sé cómo.
Me cansé de cambiar la IP de la ruta predeterminada a 192.168.178.120
( br0
IP) y también a 192.168.178.29
( eno1
IP), pero no funcionó. También creé una IP para tap0
y la configuré como ruta predeterminada en la VM, pero tampoco funcionó.