ネットワークインターフェース名の変更Ubuntu 16.04


55

この新しいUbuntu 16.04 LTSバージョンでネットワークインターフェース名を変更しようとしましたが、/etc/udev/rules.d/70-persistent-net.rules

だから、私は使用しようとしました/lib/udev/write_net_rulesが、存在しません。

なぜこの変更が必要なのですか?私はツールを使用してフレックスライセンスを使用する仮想プラットフォームをシミュレートしているため、認証はeth0インターフェイス名に含まれている必要があります。

なにか提案を?

コマンドip linkは以下を返します。

user@laptop:~$ ip link 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp6s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether b8:2a:xx:yy:xx:yy brd ff:ff:ff:ff:ff:ff
3: wlp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether 5c:e0:xx:yy:xx:yy brd ff:ff:ff:ff:ff:ff

user@laptop:~$ ifconfig 
enp6s0    Link encap:Ethernet  HWaddr b8:2a:xx:yy:xx:yy  
lo        Link encap:Local Loopback  
wlp7s0    Link encap:Ethernet  HWaddr 5c:e0:xx:yy:xx:yy  

(一部の情報は無視され、抑制されました)

私はすでにいくつかのリンクを試しました:

回答:


74

Ubuntuの最近のバージョンでは、ネットワーク名を変更する方法について多くの誤解を招く情報があります。一部の情報はsystemd.linkを指していますが、これはUbuntu(16.04以降)がsystemdのこの部分を使用しないために間違っています。

実際、インターフェース名の変更は、以前とほぼ同じように機能しますが、2つの小さな違いがあります。まず、ファイルを/etc/udev/rules.d/70-persistent-net.rules手動で作成する必要があります。これには、このファイルを上書きするスクリプトを心配する必要がなく、必要な行を追加するだけでよいという利点があります(コメントも不要です)。2番目-これは、それを理解するのに多くの時間を費やした変更です-Ubuntu 14.04 LTSと比較して、形式がわずかに変更されました:

MACアドレス「02:01:02:03:04:05」を持つNICのインターフェース名を「eth0」に修正するための行は次のとおりです。

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="02:01:02:03:04:05", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="eth0"

この行は、Ubuntu 14.04 LTSとほとんど同じように見えますが、1つのわずかな違いがあります。Ubuntu14.04では、追加の条件がありましたKERNEL=="eth*"。何らかの理由で、これはUbuntu 16.04 LTSでは機能しません。この追加の条件が存在する場合、行全体が無視され、デフォルトの動作に戻ります(で指定80-net-setup-link.rules)。


2
ビンゴ!USBドッキングステーションのNIC用にenusb01ができました。ありがとう!#USBディスプレイリンクドッキングステーションSUBSYSTEM == "net"、ACTION == "add"、DRIVERS == "?*"、ATTR {address} == "8c:ae:4c:fa:92:bf"、ATTR { dev_id} == "0x0"、ATTR {type} == "1"、NAME = "enusb1"
flickerfly

名前をenp0s1from に設定するにはどうすればよいenp0s17ですか?同じプロセスですか?また、私のような仮想ネットワーク・インタフェースのために何をすべきenp0s1:1か、 enp0s2など?
-soufrk

2
16.04では、これらすべてを実際に指定する必要はありません。SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0"
-kbuilds

4
@kbuilds、Linux From Scratchから:DRIVERS == "?*"-これは、UdevがVLANまたはブリッジサブインターフェースを無視するために存在します(これらのサブインターフェースにはドライバーがないため)。割り当てられる名前が親デバイスと衝突するため、これらのサブインターフェースはスキップされます。
ジョン・ドウ

1
重要:/ etc / network / interfacesを編集して、名前を変更したインターフェースが自動的に開始されるようにする必要があります。それ以外の場合、SSHを使用している場合、そのマシンへのアクセスが失われ、それがなぜ機能しないのかを理解しようとする無駄な時間は言うまでもありません。
user4551

65

Ubuntu 16.04.1 LTSでは、Linux plaptop 4.4.0-31-genericx86_64 MATE。 @Geancarlo Abichの答えのステップ1とそれは働いた。Ubuntuは、再起動後に新しい名前を直接作成しました。

/ etc / default / grubを編集して、次の行を変更します

GRUB_CMDLINE_LINUX=""

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

そして最後に:

$ sudo update-grub

そしてシステムを再起動します:

$ sudo reboot
msa@plaptop:~$ ifconfig 
eth0      Link encap:Ethernet  HWaddr 70:5a:0f:d7:03:38  
          inet addr:10.67.10.43  Bcast:10.67.10.255  Mask:255.255.255.0
          inet6 addr: fe80::8c03:edb5:a3d1:ba21/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:63129 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37788 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:51115719 (51.1 MB)  TX bytes:5006758 (5.0 MB)
          Interrupt:16 Memory:f1200000-f1220000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:255 errors:0 dropped:0 overruns:0 frame:0
          TX packets:255 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:21076 (21.0 KB)  TX bytes:21076 (21.0 KB)

wlan0     Link encap:Ethernet  HWaddr 44:85:00:62:c6:e5  
          inet addr:10.67.14.106  Bcast:10.67.14.255  Mask:255.255.255.0
          inet6 addr: fe80::5844:f9dd:32ff:9b45/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:25 errors:0 dropped:0 overruns:0 frame:0
          TX packets:86 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5320 (5.3 KB)  TX bytes:14611 (14.6 KB)

1
これらの手順を更新した後、私のために働いていません。ifcofigは「lo」カードのみを表示し、ethとensを表示しません:(
vimal prakash

2
これは私のために働いた。@vimalprakashまた、この変更後はifconfigの出力に「lo」しか表示されませんでした。ただし、これは、/ etc / network / interfacesの構成が古い名前であったため、他のインターフェイスがダウンしたためです(すべてのインターフェイスを表示するにはifconfig -aを実行します)。
チッティ

それは私のために働いた。
パウロ

コマンド「net.ifnames = 0」&&「biosdevname = 0」はどうしますか?ここの投稿はとにかく純金です.... 16.04 xubuntuに取り組んだ

2
Ubuntu 18.04でも同様に働いた
Simon Warta

12

Ubuntu-16.04-server-amd64

/etc/default/grub、変更

GRUB_CMDLINE_LINUX=""

GRUB_CMDLINE_LINUX="net.ifnames=0"

次に、次を入力します。

sudo update-grub

そしてシステムを再起動します

sudo reboot

3
ベターですGRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
musbach

8

私はいくつかの提案を混ぜようとしましたが、解決策を見つけました!

ステップ1:デフォルトのファームウェア継承名を無効にします。

/etc/default/grub変更する行を編集します

GRUB_CMDLINE_LINUX=""

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

そして、最終的にルートとして実行します:

$ sudo update-grub

そしてシステムを再起動します。

$ sudo reboot

ステップ2/etc/udev/rules.d/70-persistent-net.rulesルートとして永続ファイルを作成し、それらを入力します。

$ sudo gedit /etc/udev/rules.d/70-persistent-net.rules

例:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device lan Device
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="XX:yy:XX:yy:XX:yy", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="ethX"

# PCI device Wlan Device
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="XX:yy:XX:yy:XX:yy", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="wlanX"

(インターフェイスのMACアドレスを使用して、名前を変更するインターフェイスを参照し、必要に応じて「X」インターフェイス名の値を変更します)

変更を保存して再起動します。

$ sudo reboot

これは私のために動作します。


4
ステップ2は必要ありません。
musbach

1
うん。@musbachが16.04に言ったことを確認できます
メニシケーター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.