Ubuntu 12.10における幾つかのメモ(ネットワークインターフェース名関係)

Last modified: 2021-09-09

ネットワークインターフェースの名前が変わった?

手元の環境では、OSのバージョンが上がったときにKVMを使用して実ディスク(仮想でない実際のディスク)にOSをインストールしているのだが、インストール後、KVMの中でOSを起動すると問題なく通信ができるのだが、実ディスクから起動すると、ネットワークインターフェースが見つからず、起動にも時間がかかってしまうという状況になった。

dmesgなどの出力を見るとネットワークインターフェースのドライバは正常に読み込まれていることが確認できたが、/sys/class/net/以下を見ると

$ ls /sys/class/net/
lo  p10p1

見慣れない名前があり、試しにこれまでeth0だったものをp10p1として手動でネットワーク設定(詳細は略)を行ったところ通信が正常に行えることを確認できたため、Debian系ディストリのネットワークインターフェースの設定ファイル/etc/network/interfacesの中の

[引用]ファイル名:/etc/network/interfacesより
auto eth0
iface eth0 inet dhcp

eth0の部分をp10p1に置き換えて

[一部]ファイル名:/etc/network/interfaces
auto p10p1
iface p10p1 inet dhcp

という内容にして再起動したところ、(上記ファイルを用いた自動ネットワーク設定で)正常に動作するようになった。

IPアドレスを固定にする場合は上の部分の代わりに下のように記述する。

[一部]ファイル名:/etc/network/interfaces
auto p10p1
iface p10p1 inet static
address [IPアドレス]
netmask [ネットマスク]
gateway [ゲートウェイのIPアドレス]
dns-nameservers [DNSサーバのIPアドレス...]

ハードウェア環境によってはp10p1の代わりにp3p1などの名前になる(数字部分の値が異なる)場合もあるようだ。

関連:ネットワークインターフェース名の付け方を従来の形にする

このような名前は “biosdevname” というソフトウェアによって自動的に付けられているが、カーネルの起動時の引数にbiosdevname=0を指定することでこれを無効化して(eth0などの)従来の名前の付け方にすることができる。

Ubuntuでは

gksudo xdg-open /etc/default/grub

などで/etc/default/grubを管理者権限で開き

GRUB_CMDLINE_LINUX="[追加の引数]"

の行の"で囲まれた部分にbiosdevname=0を追加(既に何かを記述している場合は半角スペースで区切って付け加える)して上書き保存してからエディタを終了し

gksudo update-grub

を実行すると、次回起動時から従来の名前の付け方になる。その場合、/etc/network/interfacesp10p1のような形ではなくeth0のような形の名前で記述することになる。

gksuのパッケージはその後廃止されており、2021年時点のディストリにおいてGUI環境で管理者権限でコマンドを実行するには、gksudoの代わりにpkexecを使用する。

Ubuntuのネットワーク設定はその後netplanの設定ファイル群(/etc/netplan/以下)を用いる形に変わっている。

関連:biosdevnameについて

biosdevnameは、ネットワークインターフェースの物理的な位置に関する情報をBIOSから取得してGNU/Linux上のネットワークインターフェース名として割り当てるプログラムで、特に複数のネットワークインターフェースが存在する場合にそのインターフェース名をカードごとに固有なものにしたい(eth0eth1などの名前が入れ替わったりするのを防ぎたい)場合には非常に有用なものとなるが、突然名前の付け方が大きく変わって、更にその名前がハードウェア環境に依存するという部分には注意が必要かもしれない。