15.10への更新後にネットワークインターフェイス名が変更される-udevの変更


55

Ubuntuサーバー15.04を実行している仮想マシンを、リリースされたばかりの新しい安定版15.10に更新しました。

明らかな問題はありませんでしたが、再起動後、マシンはネットワーク接続を失いました。lspci正しいカードを示し、lsmodドライバーがロードされたことを証明しました。

編集または削除に関するヒント/etc/udev/rules.d/70-persistent-net.rulesは成功しませんでした(まだネットワークも新しいファイル/lib/udev/write_net_rulesもありません)。有名なものは存在しませんでした。

私はudevとsystemdに関してあまり手掛かりを持っていないので、ネットワークインターフェース名が変更されたことを/​​ sys / class / netで見つけるのに時間がかかりました。になりens32ましたeth0/etc/network/interfacesネットワーク通信を変更した後、再び有効になりました。

しかし、なぜこれが起こるのでしょうか?そして、それが起こった場合、interfacesファイルは自動的に更新されるべきではありませんか?

仮想ネットワークカードを削除して別の仮想ネットワークカードを作成したので、にeth0なりますがeno16777728、そうではありません。

この動作(少なくともアップグレード手順の動作)をバグとして報告する必要がありますか?

さらに、/etc/udev/rules.d/70-persistent-net.rules現在は廃止されていますか?そして(部分的にしか関連してい/etc/udev/rules.d/70-persistent-cd.rulesませんが)どうですか?)

編集-追加の質問(受け入れられた回答の後)/etc/network/interfaces実際のインターフェース名から の依存関係は私を悩ませました。別の仮想マシンで* ubuntuの新規インストールを試みました。驚いたことに、/etc/network/interfacesループバックデバイスのみへの参照が含まれていました。ただし、元のVMでは、この変更によりネットワークが起動しませんでした。それで、他に何を変える必要がありますか?

編集 、別のテストから、新しいUbuntu サーバー はネットワークインターフェースカードあります/etc/network/interfacesXUbuntuにはないことがわかりました。たぶんそれは使用中network-managerか何かです。


同じバグが17.04に再び現れます。プレリリース段階でのみ希望します。
-avtomaton

回答:


56

Ubuntu 15.10(Wily Werewolf)では、systemd / udevから開始して、すべてのローカルイーサネット、Wlan、およびWwanインターフェイス(ソース)に予測可能な安定したネットワークインターフェイス名を自動的に割り当てます。

ネットワークインターフェースの次の異なる命名スキームが、udevによってネイティブにサポートされるようになりました。

  1. ファームウェア/ BIOSを取り入れた名前は、オンボードデバイス用のインデックス番号を提供(例:eno1
  2. ファームウェア/ BIOS提供PCI Expressのホットプラグスロットのインデックス番号を組み込む名(例:ens1
  3. ハードウェアのコネクタの物理的/地理的位置組み込む名(例:enp2s0
  4. インタフェースのMACアドレス(例:組み込む名enx78e7d1ea46da
  5. クラシックで予測不可能なカーネル固有のethXネーミング(例:eth0)-非推奨

デフォルトでは、systemdはポリシーに従ってインターフェイスに名前を付けます。

  1. ファームウェアからのその情報が適用可能で利用可能な場合は、
  2. ファームウェアからのその情報が適用可能で利用可能な場合は、
  3. 該当する場合、フォールバック
  4. はデフォルトでは使用されませんが、ユーザーが選択した場合に使用可能です。
  5. 他のすべての場合。

これをどのように無効にしますか?

基本的に次のオプションがあります。

  • たとえば、インターフェイスにinternet0またはlan0という名前を付けることにより、独自の手動命名スキームを作成します。そのために、独自のudevルールファイルを作成し、デバイスのnameプロパティを設定します。デフォルトのポリシーファイルの前に、たとえば名前を付けて注文してください/etc/udev/rules.d/70-my-net-names.rules
  • デフォルトのポリシーファイルを変更します。たとえば、デフォルトですべてのインターフェイス名にMACアドレスの名前を付けるなど、別の命名規則を選択します。cp /lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/80-net-setup-link.rules次に、そこでファイルを編集し、必要に応じて行を変更します。
  • net.ifnames=0カーネルコマンドラインで渡します。

6
、これはソース?Ubuntuの公式リリースノートページへのリンクを追加できますか(どこかにあると思いますが、見つけられません!)
Rmano

2
はい、これがソースです。
京岳

4
まったく意味をなさないのは、新規インストールではなくアップグレードを行ったことです。これは、Ubuntuの実際のバグのように聞こえます。これは、アップグレードによってシステムが動作状態のままになるためです。
ウィル

1
@kyodakeなしの/ usr / libに/ udevのフォルダはUbuntuの15.10であり、/ libに/ udevにあり
EDID

1
@EdiD:OK、バグ修正。
京岳

39

ArchWiki Beginnersguideで説明されている簡単な方法があります。

最初にデバイスのMACアドレスを取得する

$ ip link

のような出力ショー

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000     
          link/ether 20:68:9d:xx:xx:xx brd ff:ff:ff:ff:ff:ff

デバイスのMACアドレスは

20:68:9d:xx:xx:xx

ファイルを作成するだけです(テキストエディタでsudo権限で単に開く)

$ nano /etc/udev/rules.d/10-network.rules    

次の行を追加

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net1"

名前を希望の名前に、aa:bb:cc:dd:ee:ffをデバイスのMACアドレスに置き換えます。

コンピューターを再起動するだけで、デバイス名が変更されます。


最も直接的でシンプルなソリューション!大いにありがとう!
3bdalla 16

1
ルールがVLANに適用されないように、ブリッジインターフェースはDRIVERS=="?*",後に追加しACTION=="add",ます。参照してくださいaskubuntu.com/questions/767786/...
Donnリー

16

これを試してください:を 編集します/etc/default/grub。から行を変更

GRUB_CMDLINE_LINUX=""

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

そして、最後に実行します:

# update-grub

ルートとして、システムを再起動します。


これはnetbootでも機能します。私はあるsyslinux.cfgファイルにアペンドステートメントに次を追加し、成功していた: append (...) net.ifnames=0 (...)
carestad

このソリューションはUbuntu 16.04でも完璧に機能します!
ヌルデータ16

上記のGRUBパラメーター(net.ifnames = 0)を追加し、udevの名前変更ルールを削除してVLANを機能させる必要がありましたが、今ではすべて問題ありません。解決策をありがとう。
アルバートヴェリ

ありがとうございました。Ubuntu Server 16.04をヘッドレスサーバーにインストールしていますが、ネットワークインターフェースの名前がわかりませんでした。その結果、サーバーはネットワーク上にありませんでした。これを行い、/ etc / network / interfacesにインターフェイス名として「eth0」が含まれていることを確認し、ドライブをサーバーに戻しました。現在オンラインです。これに関する限り、Acer Aspire H340にUbuntuをインストールする手順は古くなっているので、同じことをしようとする他の人が私ほど時間を無駄にしないことを期待して何かを書きます。
MetalMikester

5

私はこれが少し遅れる可能性があることを知っており、10-network.rulesの追加が助けになったようですが、完全にではありません。名前を変更するには、デバイスのカーネル名を追加する必要がありました。これが/etc/udev/rules.d/10-network.rulesを機能させる方法です...

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC:ADDRESS",KERNEL=="enp4s8", NAME="eth0"

KERNEL == ""を、カーネルが起動時にデバイスに付けている名前に変更します。

HTH

KC


3

新規インストールの場合

apt-get remove biosdevname

それから

update-initramfs -u

udev net ruelsファイルがあるかどうかを確認します。その場合は、削除します。

rm /etc/udev/rules.d/70-persistent-net.rules

/ etc / network / interfacesを編集し、インターフェースの名前をeth0、eth1、... etcに変更します。

リブート


2

私はファイルを作成してこれを機能させました:

root@odroid:~# cat /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth0", NAME="eth0"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.