背景
- reazon speechのデータセットをhugging faceからDLすると、高確率でネットワークが落ちてしまう
- データ自体は4TBあり、HFの問題かと思っていたが、ローカルのネットワークが切れている問題だった
- WiFiは落ちていないので、単純に自分のLinux PCの問題
事前に入れるコマンド
現状チェック
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 も存在していた。
しかし、
で 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 |
| DHCP | IP取得済み |
| 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のネットワーク周りはバグが多いがしょうがない
参考文献