KVM / VMware / Proxmox / OpenStack などの仮想環境で、
- 仮想NICの種類を変更したら通信できなくなった
- 再起動後にIPが付かない
eth0が消えた/別名になった- NICは見えるのに通信できない
といったトラブルは非常に頻発します。
本記事では、
- 仮想NIC変更で何が変わるのか
- ネットワークが「消えたように見える」典型原因
- 実務での切り分け手順
- 原因別の具体的復旧方法
- 再発防止の設計ポイント
を整理し、その場で復旧できることを目的に解説します。
目次
仮想NICを変更すると何が変わるのか
仮想NIC(e1000 → virtio-net など)を変更すると、
- PCIデバイスID
- MACアドレス
- インターフェース名
が別物として扱われます。
Linuxはこれを「新しいNIC」と認識するため、 既存のネットワーク設定と一致しなくなります。
最も多い原因① インターフェース名の変更
なぜ起きるか
仮想NICを変更すると、predictable network interface により
eth0→ens3ens3→ens5
のように名前が変わることがあります。
その結果、
- 設定ファイルは eth0 のまま
- 実際のNICは ens3
という不整合が起きます。
確認方法
# ip link show
NICは見えるが IP が無い状態になります。
対処方法
実際のNIC名に合わせて設定を修正します。
RHEL/CentOS系:
# nmcli device status
# nmcli con show
# nmcli con mod <connection> connection.interface-name ens3
# nmcli con up <connection>
もしくは設定を作り直します。
原因② MACアドレス変更による設定無効化
なぜ起きるか
仮想NIC変更時、MACアドレスが変わると、
- NetworkManager が別NICと判断
- 既存設定を適用しない
ことがあります。
確認方法
# nmcli device show ens3 | grep HWADDR
設定ファイルに MAC 指定があるか確認:
# grep -i mac /etc/NetworkManager/system-connections/*
対処方法
- MAC指定を削除
- 設定を再作成
原因③ udev による古いNIC情報の残存
なぜ起きるか
古いOSでは、NIC情報が udev ルールとして残ることがあります。
確認・対処
# rm -f /etc/udev/rules.d/70-persistent-net.rules
# reboot
※ 最近のOSではほぼ発生しませんが、古い環境では要注意です。
原因④ cloud-init による上書き
なぜ起きるか
cloud-init が有効な環境では、
- 起動時にNIC定義を自動生成
- 仮想NIC変更後も古い定義を適用
してしまうことがあります。
確認方法
# cloud-init status
対処方法
NICを手動管理する場合:
# touch /etc/cloud/cloud-init.disabled
# reboot
または netplan / ifcfg 側を修正します。
原因⑤ virtio-net ドライバ未対応
仮想NICを virtio-net に変更したが、
- カーネルが古い
- initramfs にドライバが無い
場合、NIC自体が見えません。
切り分けの正しい順序
ip linkでNICが存在するか- インターフェース名が変わっていないか
- NetworkManager / netplan 設定確認
- MACアドレス縛り有無
- cloud-init 介入有無
「NICが見えるか/見えないか」で 問題の層が切り分けられます。
正常と判断できる状態
ip linkに NIC が表示される- 正しいインターフェース名に IP が付与される
ip routeに default route がある- ping が通る
再発防止のベストプラクティス
- 仮想NIC変更前に現在の設定を把握する
- インターフェース名固定前提の設計を避ける
- cloud-init 使用有無を明確にする
- 変更後は必ず
ip linkから確認
まとめ
- 仮想NIC変更=別NIC扱い
- 多くは「名前」「MAC」「設定の不一致」
- NICが見えればOS設定、見えなければドライバ
- 慌ててIP設定を触らず、まず状態確認
仮想NIC変更時のトラブルは構造を理解すれば容易に解決できます。
あわせて読みたい


NICが認識されない時のドライバ確認手順
Linuxサーバーでネットワーク設定を行おうとした際に、 NICが表示されない インターフェース名が存在しない NetworkManagerやsystemd-networkdで制御できない といった…
あわせて読みたい


ethtoolでリンクアップしない原因切り分け
LinuxサーバーでNICが認識されているにも関わらず、 リンクアップしない NO-CARRIER のまま ケーブルを挿しても LOWER_UP にならない といった状況に遭遇したことはあり…
