[PR] 本記事にはプロモーションが含まれています。

【AlmaLinux 9】SSD を新しい PC に移したら LAN がつながらない|ブリッジの部下が、前の口の名前と MAC を名指ししていた

サーバーの LAN の口と、つながっていないケーブルのイメージ 自宅サーバー構築
➔ 自宅サーバー構築メモの目次はこちら

【2026年11月7日時点の情報です】

自宅サーバー(AlmaLinux 9 の KVM のホスト)を、NVMe の SSD ごと新しい PC に差し替えました(前の記事)。AlmaLinux は起きてログインの画面まで来ましたが、ブログ(仮想マシンの WordPress)も NAS も、外とつながりませんでした。

原因は、KVM のブリッジ(br0)の部下になる LAN の口の設定が、前の PC の口の名前と MAC アドレスの両方を名指ししていたことでした。この記事では、それを見つけて直すまでと、同じときに見つけた「時計が9時間進んでいた」件を書きます。ブリッジを作ったときの話はこちらの記事です。

登場するユーザー名、ホスト名、IP アドレスなどは、セキュリティのため実際とは異なる架空のものに置き換えています。MAC アドレスは伏せています。

場面1:口が2つあった

ログインして、LAN の口と、NetworkManager の設定の一覧を見ました。

Bash
ip -br link
nmcli -f NAME,DEVICE,TYPE connection show
  • ip -br link:
    この機械の LAN の口の一覧。-br は1行ずつの短い形
  • nmcli -f NAME,DEVICE,TYPE connection show:
    NetworkManager の設定の一覧と、どの口に付いているか。-f は出す欄を選ぶ
Plaintext
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
enp2s0           DOWN           xx:xx:xx:xx:xx:xx <NO-CARRIER,BROADCAST,MULTICAST,UP>
enp3s0           UP             xx:xx:xx:xx:xx:xx <BROADCAST,MULTICAST,UP,LOWER_UP>
br0              UP             xx:xx:xx:xx:xx:xx <BROADCAST,MULTICAST,UP,LOWER_UP>
virbr0           DOWN           xx:xx:xx:xx:xx:xx <NO-CARRIER,BROADCAST,MULTICAST,UP>
vnet0            UNKNOWN        xx:xx:xx:xx:xx:xx <BROADCAST,MULTICAST,UP,LOWER_UP>
NAME                 DEVICE  TYPE
有線接続 2           enp3s0  ethernet
br0                  br0     bridge
lo                   lo      loopback
virbr0               virbr0  bridge
vnet0                vnet0   tun
bridge-slave-enp1s0  --      ethernet
enp1s0               --      ethernet
有線接続 1           --      ethernet

読み取れたことは次の3つです。

No.見えたこと意味
1口が enp2s0(ケーブルなし)と enp3s0(ケーブルあり)の2つ前の PC の口は enp1s0 だった。新しい PC では名前が変わった
2br0 の部下の設定 enp1s0 の DEVICE が --どの口にも付いていない。br0 は外とつながっておらず、仮想マシンも外に出られない
3有線接続 2 が enp3s0 に付いているNetworkManager が新しい口を見つけて自動で作った設定。DHCP で別の IP をもらっていた

口の名前の enp3s0 は「PCI の3番のバスにつながった有線の口」という意味で、つながっている場所から決まります。組み込みで言えば、デバイスのアドレスがボードごとに変わるのと同じで、PC を替えると名前も変わります。

2つの口が何の部品かは、lspci で見ました。

Bash
lspci -nn | grep -i ether
  • lspci -nn:
    PCI につながった部品の一覧。-nn はメーカーと部品の番号も出す
  • grep -i ether:
    LAN の部品(Ethernet controller)の行だけを出す
Plaintext
02:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)
03:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller [10ec:8125] (rev 05)

enp2s0 は本体の 1G の口、enp3s0 は 2.5G の LAN カードでした。届いた PC に買って取り付けた 2.5G の LAN カードです。家のハブは 2.5G にしてある(こちらの記事)ので、ケーブルを挿していた enp3s0 をそのまま br0 の部下にすることにしました。

場面2:口の名前を付け替えたら断られた

br0 の部下の設定 enp1s0 が名指ししている口の名前を、enp3s0 に変えました。自動で作られた 有線接続 2 は、次に起動したときにぶつからないよう、自動でつながらないようにしました(消さずに残す)。変える前に、NetworkManager の設定のフォルダを丸ごと控えています。

Bash
sudo cp -a /etc/NetworkManager/system-connections /root/nm-connections.20261107
sudo nmcli connection modify enp1s0 connection.interface-name enp3s0
sudo nmcli connection modify "有線接続 2" connection.autoconnect no
sudo nmcli connection up enp1s0
ip -br addr show br0
  • sudo cp -a … /root/nm-connections.20261107:
    設定のフォルダの控え。-a は中身と日付・権限をそのまま写す。戻すときは、これを元の場所に戻して sudo nmcli connection reload
  • nmcli connection modify enp1s0 connection.interface-name enp3s0:
    設定 enp1s0(br0 の部下)が名指しする口を enp3s0 に変える。設定の名前は enp1s0 のまま残る(名前と口は別のもの)
  • nmcli connection modify “有線接続 2” connection.autoconnect no:
    自動で作られた設定を、起動のときに自動でつながらないようにする
  • nmcli connection up enp1s0:
    設定を今つなぐ
  • ip -br addr show br0:
    br0 の IP アドレス
Plaintext
エラー: 接続のアクティベーションに失敗: No suitable device found for this connection (device enp2s0 not available because profile is not compatible with device (mismatching interface name)).
br0              UP             192.168.0.20/24 fe80::xxxx:xxxx:xxxx:xxxx/64

「この設定に合う口がない(口の名前が合わない)」と断られました。名前は enp3s0 に変えたのに、合わないと言われます。br0 には IP アドレスが付いていますが、部下の口がないので、外とはつながっていません。

場面3:MAC も名指ししていた

設定 enp1s0 の中の、照合に使う項目を出してみました。

Bash
nmcli -f connection.interface-name,802-3-ethernet.mac-address,connection.master,connection.slave-type connection show enp1s0
nmcli -f connection.autoconnect,ipv4.method connection show "有線接続 2"
  • nmcli -f … connection show enp1s0:
    設定 enp1s0 の中の、名指ししている口の名前・MAC アドレス・部下の先・部下の種類だけを出す
  • nmcli -f … connection show “有線接続 2”:
    自動で作られた設定が、自動でつながらない(いいえ)になったかと、IP のもらい方(auto は DHCP)
Plaintext
connection.interface-name:              enp3s0
802-3-ethernet.mac-address:             xx:xx:xx:xx:xx:xx
connection.master:                      br0
connection.slave-type:                  bridge
connection.autoconnect:                 いいえ
ipv4.method:                            auto

802-3-ethernet.mac-address に、前の PC の口の MAC アドレスが入っていました。NetworkManager は口の名前と MAC の両方で照合するので、名前を変えても、MAC がちがう新しい口は「合わない」と断られていたのです。組み込みで言えば、ドライバの設定がデバイスの番号に加えて製造番号でも照合していて、同じ番号の別の基板を弾いたような状態です。

MAC の欄を空にして、口の名前だけで照合するようにしました。

Bash
sudo nmcli connection modify enp1s0 802-3-ethernet.mac-address ""
sudo nmcli connection up enp1s0
  • nmcli connection modify enp1s0 802-3-ethernet.mac-address “”:
    MAC の名指しを空にする
  • nmcli connection up enp1s0:
    直した設定で、enp3s0 を br0 の部下としてつなぐ

SSH が切れた

この2行は、ほかの PC から SSH で入って実行しました。connection up のところで画面が止まり、何も返ってこなくなりました。

今の SSH は、有線接続 2 が DHCP でもらった IP アドレスを通っていました。enp3s0 が br0 の部下になった時点で、その道がなくなったのです。組み込みで言えば、デバッグ用の UART をつないだまま、そのピンを別の機能に割り当て直したような状態で、命令は実行されたが、結果を返す線がなくなりました。

SSH の窓を閉じ、1分ほど待ってから、br0 の IP アドレス(192.168.0.20)に入り直しました。入れた時点で、br0 が外とつながったことになります。

場面4:つながった

入り直したところで、br0 の部下と、口の速さ、NAS まで届くかを見ました。

Bash
nmcli -f NAME,DEVICE connection show --active
bridge link
ethtool enp3s0 | grep -E 'Speed|Link detected'
ping -c 3 192.168.0.30
  • nmcli -f NAME,DEVICE connection show –active:
    今つながっている設定だけの一覧
  • bridge link:
    ブリッジの部下の一覧。master br0 の行が部下
  • ethtool enp3s0 | grep -E ‘Speed|Link detected’:
    口の速さと、つながっているか
  • ping -c 3 192.168.0.30:
    NAS に3回届くか
Plaintext
NAME    DEVICE
br0     br0
enp1s0  enp3s0
lo      lo
virbr0  virbr0
vnet0   vnet0
3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 100
6: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 100
netlink error: Operation not permitted
        Speed: 2500Mb/s
        Link detected: yes
--- 192.168.0.30 ping 統計 ---
送信パケット数 3, 受信パケット数 3, 0% packet loss, time 2030ms
No.見えたこと意味
1設定 enp1s0 が enp3s0 に付いたbr0 の部下になった
2bridge link に enp3s0 と vnet0実際の口と、仮想マシンの口の2つが br0 につながり、通している(forwarding)
3Speed: 2500Mb/s自宅サーバーも 2.5G でつながった
4ping が3回とも届いたbr0 から外に出られる

netlink error: Operation not permitted は、ethtool を sudo なしで動かしたので、root だけが読める項目(Wake-on-LAN の設定など)を読めなかった、というだけです。速さとつながりは読めています。

ブラウザでブログも開きました。仮想マシンは何も変えていないので、br0 がつながれば、そのまま外に出られます。

場面5:時計が9時間進んでいた

つながったあと、起きてから出たエラーを見たところ、時刻がおかしいことに気づきました。昼すぎに起こしたのに、記録の時刻が 23:44 になっています。

Bash
sudo journalctl -b -p err --no-pager | tail -n 15
  • sudo journalctl -b -p err –no-pager:
    今回の起動(-b)のうち、エラー以上(-p err)の記録
  • tail -n 15:
    最後の15行だけ
Plaintext
11月 07 23:44:07 kvmhost kernel: x86/cpu: SGX disabled or unsupported by BIOS.
11月 07 23:44:13 kvmhost kernel: Warning: Deprecated Driver is detected: nft_compat will not be maintained in a future major release and may be disabled

エラーの中身は、どちらも心配のないものでした(SGX は使わない CPU の機能、nft_compat はファイアウォールの古い形の部品の予告)。問題は時刻のほうです。

見立て:BIOS の時計が日本の時刻だった

この自宅サーバーは「BIOS の時計は UTC(世界の標準の時刻)」として使っています。新しい PC の BIOS の時計は、前の Windows の使い方のまま日本の時刻になっていたと見ています。Linux はそれを UTC と読んで、日本の時刻に直すために9時間足したので、9時間進みました。LAN がつながると、NTP(chrony)で正しい時刻に戻ります。

Bash
timedatectl
chronyc tracking | grep -E 'Reference|System time|Leap'
[ "$(timedatectl show -p NTPSynchronized --value)" = yes ] && sudo hwclock --systohc --utc && echo "BIOS の時計を UTC で書き直した"
sudo hwclock --show
sudo journalctl -b --no-pager -t backup.sh -t tripwire-filter -t CROND -t anacron | head -n 20
  • timedatectl:
    今の時刻、NTP で合っているか(System clock synchronized)、BIOS の時計を日本の時刻として扱っているか(RTC in local TZ)
  • chronyc tracking | grep …:
    どこの時計に合わせているかと、ずれの大きさ
  • [ “$(timedatectl show -p NTPSynchronized –value)” = yes ] && …:
    NTP で合っているときだけ、次へ進む書き方(C の if (synced) { … } と同じ)
  • sudo hwclock –systohc –utc:
    今の正しい時刻を、UTC で BIOS の時計に書く
  • sudo hwclock –show:
    BIOS の時計を読む(日本の時刻に直して出る)
  • sudo journalctl -b … -t backup.sh -t tripwire-filter -t CROND -t anacron:
    時計が進んでいたあいだに、夜の仕事(控え・改ざんの検査・cron)が動いてしまっていないか
Plaintext
Local time      : 土 2026-11-07 14:51:59 JST
           Universal time: 土 2026-11-07 05:51:59 UTC
                 RTC time: 土 2026-11-07 05:51:59
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
Reference ID    : xxxxxxxx (xx.xx.xx.xx)
System time     : 0.000007624 seconds fast of NTP time
Leap status     : Normal
BIOS の時計を UTC で書き直した
2026-11-07 14:52:00.507846+09:00
-- No entries --

見たときには、NTP で時刻が合い、BIOS の時計(RTC time)も正しい UTC になっていました。念のため UTC で書き直し、読み直しても合っていました。時計が進んでいたあいだに、夜の仕事は動いていませんでした(-- No entries --)。

新しい PC に移したときは、LAN だけでなく、BIOS の時計が日本の時刻か UTC かも見ておくと安心です。

まとめ

SSD をそのまま新しい PC に移すと、KVM のブリッジの部下の設定が、前の PC の口を名前と MAC の2つで名指ししたままになっていて、外とつながりませんでした。両方を直すと、2.5G でつながりました。

No.直したところ前後コマンド
1部下の設定が名指しする口の名前enp1s0(前の PC の口)enp3s0(新しい PC の 2.5G の口)nmcli connection modify enp1s0 connection.interface-name enp3s0
2部下の設定が名指しする MAC前の PC の口の MAC空(名前だけで照合)nmcli connection modify enp1s0 802-3-ethernet.mac-address ""
3自動で作られた 有線接続 2起動のとき自動でつながるつながらない(消さずに残す)nmcli connection modify "有線接続 2" connection.autoconnect no
4BIOS の時計日本の時刻(と見ている)UTChwclock --systohc --utc

SSH で入って nmcli connection up を動かすと、今の SSH が通っている道が付け替わって切れることがあります。切れても設定は進むので、少し待って、ブリッジの IP アドレスに入り直せば大丈夫です。心配なら、画面とキーボードをつないだ本体の前で作業すると確実です。

移す前に、万一に備えて SSD を USB の HDD に丸ごと控えました。その控えから起こしたときにつまずいた話は、③の記事に書きます。

コメント