Tengo una computadora de escritorio (llamada "D") y una computadora portátil ("L") conectadas por Ethernet a un enrutador ("Wormhole"). Este router sólo sirve para conectar estos dos ordenadores. Además, tengo un enrutador wifi ("WiFi") en otro lugar y ambas computadoras también se conectan a él. La topología se expande a partir de ahí, pero los detalles no son importantes. La conexión Wormhole existe para acelerar las transferencias de datos entre estas dos máquinas. (Nota: me han informado que estoy usando la palabra "enrutador" incorrectamente aquí. Lo que quiero decir es el lado de conmutación del dispositivo que se denomina colectivamente enrutador).
WiFi maneja 192.168.4.1/24 y direcciones externas; Wormhole solo maneja 192.168.8.1/24. Además, WiFi usa DHCP, pero los clientes de Wormhole tienen IP estáticas. La dirección del agujero de gusano de D es 192.168.8.8 y L es 192.168.8.6. La conexión Wifi de D es a través de wlan0 y Wormhole a través de eth0 como era de esperar.
Algunas veces esto funciona bien.y el tráfico entre 192.168.8.8 y 192.168.8.6 es rápido. Pero, aparentemente al azar después de que D arranca,a veces D no puede llegar al agujero de gusanohasta que volvamos a tirar los dados en el siguiente reinicio. Como solución alternativa, D y L aún pueden hablar sin problemas a través de sus conexiones WiFi.
ping -c4 192.168.8.1
:
PING 192.168.8.1 (192.168.8.1) 56(84) bytes of data.
From 192.168.8.8 icmp_seq=1 Destination Host Unreachable
From 192.168.8.8 icmp_seq=2 Destination Host Unreachable
From 192.168.8.8 icmp_seq=3 Destination Host Unreachable
From 192.168.8.8 icmp_seq=4 Destination Host Unreachable
--- 192.168.8.1 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3035ms
A veces, reiniciar D soluciona este problema, pero otras no. Estoy seguro de que el problema no está en el enrutador ni en el cable, ya que puedo cambiar D por otros sistemas y todo vuelve a funcionar. Nunca parece tener un problema.
D ejecuta Ubuntu 21.10 (en realidad, Kubuntu). Inicialmente, sospeché que las rutas estaban siendo influenciadas por una condición de carrera durante la inicialización o algo así, pero en realidad solo pensé eso porque estoy fuera de mi alcance. He grabado la salida de route
, ip route
, ip route show to match 192.168.8.1
, ip a
y nmcli device show
, todo cuando la conexión funciona y cuando no funciona. El resultado es idéntico, lo cual me parece impactante y por eso escribo esta declaración. Las únicas partes que son diferentes ip a
son las que cabría esperar, como la dirección DHCPv6 de wlan0 y las estadísticas LFT.
route
:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default WiFi 0.0.0.0 UG 600 0 0 wlan0
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.4.0 0.0.0.0 255.255.255.0 U 600 0 0 wlan0
192.168.8.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
192.168.8.0 192.168.8.1 255.255.255.0 UG 100 0 0 eth0
ip route
:
default via 192.168.4.1 dev wlan0 proto dhcp metric 600
169.254.0.0/16 dev eth0 scope link metric 1000
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.4.0/24 dev wlan0 proto kernel scope link src 192.168.4.102 metric 600
192.168.8.0/24 dev eth0 proto kernel scope link src 192.168.8.8 metric 100
192.168.8.0/24 via 192.168.8.1 dev eth0 proto static metric 100
ip route show to match 192.168.8.1
:
default via 192.168.4.1 dev wlan0 proto dhcp metric 600
192.168.8.0/24 dev eth0 proto kernel scope link src 192.168.8.8 metric 100
192.168.8.0/24 via 192.168.8.1 dev eth0 proto static metric 100
ip address show dev eth0
:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether e0:3f:49:a5:03:d6 brd ff:ff:ff:ff:ff:ff
altname enp0s25
inet 192.168.8.8/24 brd 192.168.8.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::3a41:15c1:b87a:5f63/64 scope link noprefixroute
valid_lft forever preferred_lft forever
nmcli device show eth0
:
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
GENERAL.HWADDR: E0:3F:49:A5:03:D6
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: Wired connection 1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.8.8/24
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.8.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1000
IP4.ROUTE[3]: dst = 192.168.8.0/24, nh = 192.168.8.1, mt = 100
IP6.ADDRESS[1]: fe80::3a41:15c1:b87a:5f63/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 100
Intenté jugar con netplan y /etc/network/interfaces, pero solo estoy apuñalando en la oscuridad. La última vez que configuré la red en Linux fue antes de que systemd tomara el control, y la configuración era muy diferente en aquel entonces. En primer lugar, no es que sepa mucho sobre solución de problemas de red. ¿Algunas ideas?