Ubuntuが急にインターネット接続できなくなった【備忘録】
結論
Ubuntu 24.0.2 LTSを使用していて突然ネットワークに接続できなくなりました。
ネットワークドライバーが消えていたため、カーネルのバージョンダウンで対応しました。
環境
- OS: Ubuntu 24.0.2 LTS
- ネットワークアダプタ: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller
- 問題発生前のカーネルバージョン: 6.14.0-24-generic
- 問題が発生したカーネルバージョン: 6.14.0-27-generic
症状
- 突然ネットワークに接続できなくなった
-
ip link show
コマンドでネットワークインターフェース(eno1、eth0など)が表示されない - 前日まで正常に動作していた
原因の切り分け
1. 物理的な問題かPCの問題かを特定
まず問題がPC側にあるのかネットワーク機器側かを切り分け。
# ルーターの状態確認 → 正常
# LANケーブルを別のPCへ指す → 正常
結論: 問題はPC
2. Ubuntu内での詳細な切り分け
Ubuntuで何が起きているのか全く心当たりがないのでとりあえず情報を集めます。
ネットワークインターフェースの確認
ip link show
# または ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether d6:61:63:95:01:7e brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
3: br-d5148ac3a05e: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether aa:05:fd:96:25:d7 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.1/16 brd 172.18.255.255 scope global br-d5148ac3a05e
valid_lft forever preferred_lft forever
ネットは有線接続なのですが eno1
やeth0
のネットワークインターフェースが表示されないですね。
この時点でドライバーが怪しそうですが情報収集継続。
ハードウェアの状況確認
# dmesgでイーサネット関連のログを確認
sudo dmesg | grep -i ethernet
# → 情報なし
# PCIデバイスの確認
lspci | grep -i ethernet
# → 08:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller (rev 15)
結果: Realtekのハードウェア自体は認識されている -> ドライバー説濃厚
ドライバーの確認
このハードウェアのドライバ名をググったところ, r8169
, r8168
が使用されているとのこと。
lsmod | grep r81
# -> 結果なし!
結果: ドライバーがロードされていない!
原因の特定
調査の結果、以下のことが判明しました:
- ハードウェアは正常に認識されている
- ドライバー(r8169)がロードされていない
- 昨日バックでカーネル更新がかかっていた? ( この調査中にシステムアップデートの通知が表示された )
推測される原因: カーネルアップデート時に、ドライバーの削除は行われたが、新しいバージョンのインストールに失敗したのでは
解決方法
ドライバーをインストールすれば一発解決なのですが、そのためのネットワークがない状態で...
USBで移してもいいんですが面倒くさかったので、「昨日まで動いていた」を頼りにカーネルをダウングレードして対処します。
1. 以前のカーネルバージョンを特定
dpkg --list | grep linux-image
正常に動作していた6.14.0-24-generic
が利用可能であることを確認しました。
2. 古いカーネルバージョンで起動
- PC起動時にGRUBメニューを表示(Lenovoの場合、起動画面が消えた後に
Shift
. BIOSではなくUbuntuのGRUBメニューなので注意) - "Advanced options for Ubuntu"を選択
-
Linux 6.14.0-24-generic
を選択して起動
3. 復旧確認
# ネットワークインターフェースの確認
ip link show
# → eno1, wlp3s0が復活
# ドライバーの確認
lsmod | grep r8169
# → r8169ドライバーがロードされていることを確認
ネットもつながっているので大丈夫そうです。
4. カーネル更新の挙動を変えておく
また別日に起動したところ再度同じ症状が出ていたので、カーネルダウングレード後更新の設定を変えました。
コンソールからアップデートを手動に変更後、以下で問題のカーネルバージョンを削除します。
sudo apt remove --purge linux-image-6.14.0-27-generic linux-modules-6.14.0-27-generic linux-headers-6.14.0-27-generic
( このままバージョン据え置きも良くないので、自己責任で良きタイミングでカーネルを再度上げていきましょう )
まとめ
今回の問題は、カーネルアップデート時のドライバー更新に関連した問題でした。根本的な解決には至っていませんが、以下の対処法で正常に動作するようになりました:
- 問題の切り分け: 物理的な問題かソフトウェアの問題かを明確にする
-
ドライバーの確認:
lsmod
コマンドでドライバーのロード状況を確認 - カーネルのダウングレード: 問題のあるバージョンから安定版に戻す
- 問題のあるカーネルの削除: 今後の自動アップデートを防ぐ
同様の問題に遭遇した方の参考になれば幸いです。
Discussion