Featured image of post Linuxでネットが落ちる問題

Linuxでネットが落ちる問題

目次

背景

  • reazon speechのデータセットをhugging faceからDLすると、高確率でネットワークが落ちてしまう
  • データ自体は4TBあり、HFの問題かと思っていたが、ローカルのネットワークが切れている問題だった
  • WiFiは落ちていないので、単純に自分のLinux PCの問題

事前に入れるコマンド

1
sudo apt install iw

現状チェック

1
2
ping google.com
...
1
2
3
4
5
6
7
8
ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
From 192.168.3.8 icmp_seq=1 Destination Host Unreachable
From 192.168.3.8 icmp_seq=2 Destination Host Unreachable
From 192.168.3.8 icmp_seq=3 Destination Host Unreachable
From 192.168.3.8 icmp_seq=4 Destination Host Unreachable
From 192.168.3.8 icmp_seq=5 Destination Host Unreachable
From 192.168.3.8 icmp_seq=6 Destination Host Unreachable
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
ip -4 a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
3: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    altname wlp0s20f3
    inet 192.168.3.8/24 metric 600 brd 192.168.3.255 scope global dynamic wlo1
       valid_lft 18793sec preferred_lft 18793sec
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
5: br-xxxxx: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    inet 172.18.0.1/16 brd 172.18.255.255 scope global br-xxxx
       valid_lft forever preferred_lft forever
1
2
3
4
5
6
7
ip route

default via 192.168.3.1 dev wlo1 proto dhcp src 192.168.3.8 metric 600 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.18.0.0/16 dev br-d3b6513508a9 proto kernel scope link src 172.18.0.1 linkdown 
192.168.3.0/24 dev wlo1 proto kernel scope link src 192.168.3.8 metric 600 
192.168.3.1 dev wlo1 proto dhcp scope link src 192.168.3.8 metric 600 
1
2
ip route | awk '/default/ {print $3; exit}'
192.168.3.1
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
set GW 192.168.3.1

echo $GW
192.168.3.1

ping -c 5 $GW
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
From 192.168.3.8 icmp_seq=1 Destination Host Unreachable
From 192.168.3.8 icmp_seq=2 Destination Host Unreachable
From 192.168.3.8 icmp_seq=3 Destination Host Unreachable
From 192.168.3.8 icmp_seq=4 Destination Host Unreachable
From 192.168.3.8 icmp_seq=5 Destination Host Unreachable

--- 192.168.3.1 ping statistics ---
5 packets transmitted, 0 received, +5 errors, 100% packet loss, time 4078ms
pipe 4
1
2
3
4
5
6
7
ip route 

default via 192.168.3.1 dev wlo1 proto dhcp src 192.168.3.8 metric 600 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.18.0.0/16 dev br-d3b6513508a9 proto kernel scope link src 172.18.0.1 linkdown 
192.168.3.0/24 dev wlo1 proto kernel scope link src 192.168.3.8 metric 600 
192.168.3.1 dev wlo1 proto dhcp scope link src 192.168.3.8 metric 600 
1
2
3
4
5
ip neigh show dev wlo1 

192.168.3.1 INCOMPLETE 
fe80::da0f:99ff:fed9:ac8d lladdr d8:0f:99:d9:ac:8d router STALE 
2400:2412:3360:4d00:1111:1111:1111:1111 router FAILED 
1
2
3
4
5
6
7
8
nmcli dev status

DEVICE           TYPE      STATE      CONNECTION 
br-d3b6513508a9  bridge    unmanaged  --         
docker0          bridge    unmanaged  --         
enp2s0           ethernet  unmanaged  --         
lo               loopback  unmanaged  --         
wlo1             wifi      unmanaged  --         

復旧方法

復旧(ネットワークマネージャーの再起動だと復旧しなかった)

1
2
3
sudo systemctl restart NetworkManager
nmcli radio wifi off
nmcli radio wifi on

考察

追加で確認したこと

wlo1 にIPアドレスは付与されており、default route も存在していた。

しかし、

1
ping 192.168.3.1

Destination Host Unreachable になっていたため、DNS や Hugging Face 側ではなく、PC とルーター間のL2通信が壊れている状態だった。

特に以下が重要だった。

1
2
ip neigh show dev wlo1
192.168.3.1 INCOMPLETE

INCOMPLETE は ARP 解決に失敗している状態で、ルーターの MAC アドレスを取得できていない。

つまり、

  • WiFi 接続自体は見えている
  • IPアドレスもある
  • route もある
  • しかし ARP が失敗して通信できない

という状態。

切り分け

今回確認した内容を整理すると、以下になった。

確認項目状態
WiFi 接続OK
DHCPIP取得済み
default route正常
DNS関係なし
インターネット到達不可
ルーター疎通不可
ARP失敗

そのため問題箇所は下の区間となるだろう。

1
Linux PC ←→ WiFi AP / ルーター

次発生したら試すコマンド

WiFi省電力を無効化

1
2
iw dev wlo1 get power_save
sudo iw dev wlo1 set power_save off

永続化する場合:

1
2
sudo mkdir -p /etc/NetworkManager/conf.d
sudo vim /etc/NetworkManager/conf.d/wifi-powersave.conf
1
2
[connection]
wifi.powersave = 2

反映:

1
sudo systemctl restart NetworkManager

ドライバ確認

1
lspci -nnk | grep -A4 -i network

Intel 系なら iwlwifi の既知問題の可能性もある。

ログ確認

切断時に以下を見る。

1
journalctl -u NetworkManager -b
1
dmesg | grep -iE 'wifi|wlan|iwlwifi'

まとめ

  • この前もWiFiの問題に、Linuxの省力化バグに遭遇したことがある
  • linuxのネットワーク周りはバグが多いがしょうがない

参考文献

Built with Hugo
テーマ StackJimmy によって設計されています。