web-dev-qa-db-ja.com

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

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ファイルは自動的に更新されるべきではありませんか?

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

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

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

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

編集さて、別のテストから、新しいUbuntuServerhasネットワークインターフェイスカード/etc/network/interfacesにありますが、XUbuntuにはありません。 network-managerまたは何か他のものを使用している可能性があります。

55
JeffRSon

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

ネットワークインターフェースの次の異なる命名スキームが、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を渡します。
56
kyodake

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"

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

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

39
JonnyTischbein

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

GRUB_CMDLINE_LINUX=""

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

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

# update-grub

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

16
Dênio Robson

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

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

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

HTH

K.C.

5
Keith Clinton

新規インストールの場合

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に変更します。

リブート

3
R J

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

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"
2
Mikael Lepistö