У меня есть настольный компьютер (с именем «D») и ноутбук («L»), подключенные по Ethernet к маршрутизатору («Wormhole»). Этот маршрутизатор служит только для соединения этих двух компьютеров. Кроме того, у меня есть маршрутизатор Wi-Fi («WiFi») в другом месте, и оба компьютера также подключаются к нему. Топология расширяется оттуда, но детали не важны. Соединение Wormhole существует для ускорения передачи данных между этими двумя машинами. (Примечание: мне сообщили, что я неправильно использую здесь слово «маршрутизатор». Я имею в виду коммутационную сторону устройства, которая в совокупности называется маршрутизатором.)
WiFi обрабатывает 192.168.4.1/24 и внешние адреса; Wormhole обрабатывает только 192.168.8.1/24. Кроме того, WiFi использует DHCP, но клиенты Wormhole имеют статические IP-адреса. Адрес Wormhole D — 192.168.8.8, а L — 192.168.8.6. Подключение Wi-Fi D осуществляется через wlan0, а Wormhole — через eth0, как и ожидалось.
Иногда это работает нормально.и трафик между 192.168.8.8 и 192.168.8.6 быстрый. Но, по-видимому, случайно после загрузки D,иногда D не может достичь Wormholeпока мы не бросим кости снова при следующей перезагрузке. В качестве обходного пути D и L могут по-прежнему разговаривать без проблем через свои соединения 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
Иногда перезагрузка D устраняет эту проблему, но иногда нет. Я уверен, что проблема не в маршрутизаторе или кабеле, так как я могу заменить D на другие системы, и все снова заработает. У L, похоже, никогда не возникает проблем.
D работает под управлением Ubuntu 21.10 (на самом деле, Kubuntu). Сначала я подозревал, что на маршруты влияет состояние гонки во время инициализации или что-то в этом роде, но на самом деле я так думал только потому, что не в своей тарелке. Я записал вывод route
, ip route
, ip route show to match 192.168.8.1
, ip a
, и nmcli device show
, когда соединение работает и когда оно не работает. Вывод идентичен, что я нахожу шокирующим, и поэтому я пишу это заявление. Единственное, что отличается, ip a
это то, чего вы ожидаете, например, адрес DHCPv6 wlan0 и статистика 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
Я пробовал играть с netplan и /etc/network/interfaces, но я просто бью в темноте. Последний раз я настраивал сеть в Linux до того, как systemd взял верх, и тогда конфигурация была совсем другой. Не то чтобы я вообще много знал об устранении неполадок в сети. Есть идеи?