Tengo una interfaz cableada (enp59s0u2u1i5) e inalámbrica conectada a Internet y, además, uso una VPN (wg-mullvad).
¿Cómo puedo ver cuál de estas interfaces (cableada o inalámbrica) utiliza la interfaz VPN para enrutar el tráfico?
Esta es la salida de ip link
:
2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
4: enp59s0u2u1i5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
6: wg-mullvad: <POINTOPOINT,UP,LOWER_UP> mtu 1380 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/none
Salida de netstat -r
:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default _gateway 0.0.0.0 UG 0 0 0 enp59s0u2u1i5
default _gateway 0.0.0.0 UG 0 0 0 wlan0
10.64.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 wg-mullvad
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 enp59s0u2u1i5
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
Respuesta1
Úselo ip route get
con los parámetros exactos, es decir, la dirección IP remota del punto final del túnel y, lo que es más importante, la marca de fábrica que usa wg-mullvad si el wg
comando muestra alguna.
# wg show wg-foo
interface: wg-foo
fwmark: 0x52
peer:
endpoint: 1.2.3.4
# ip r get 1.2.3.4 mark 0x52
1.2.3.4 via 192.168.10.1 dev rtl0 table 82 mark 0x52
(Puede agregar fibmatch
para ver directamente la entrada de ruta real que se utiliza).
En general, utilícelo ip route
para enumerar tablas de enrutamiento en Linux, ya que podría haber más de una; la marca de paquete establecida por WireGuard se usa para ip rule
seleccionar una tabla alternativa para el tráfico cifrado. Podrías resolverlo manualmente, pero algunos clientes VPN generan reglas un poco complejas y son más fáciles de usar ip r get
y permiten que el kernel proporcione la respuesta.
# ip rule
501: from all fwmark 0x52 lookup 82 proto static
# ip r ls table 82
default via 192.168.10.1 dev rtl0 proto dhcp
(Pero incluso solo para la tabla principal, generalmente la evitaría netstat -r
en Linux, porque no sabe cómo mostrar más allá de las entradas de ruta más simples).
No olvide que tcpdump
puede mostrarle literalmente los paquetes que se envían a través de cada interfaz.