更改网络接口名称 Ubuntu 16.04

Gea*_*ich 64 networking interface ethernet

我试图在这个新的 Ubuntu 16.04 LTS 版本上更改网络接口名称,但没有/etc/udev/rules.d/70-persistent-net.rules.

所以,我尝试使用/lib/udev/write_net_rules但它不存在。

为什么我需要这个修改?因为我正在使用一个工具来模拟使用 flex 许可的虚拟平台,并且身份验证需要在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  
Run Code Online (Sandbox Code Playgroud)

(一些信息被忽略和压制)

我已经尝试了一些链接:

小智 79

在最新版本的 Ubuntu 中,有很多关于如何更改网络名称的误导性信息。一些信息指向 systemd.link,这是错误的,因为 Ubuntu(从 16.04 开始)不使用 systemd 的这部分。

实际上,更改接口名称的工作方式与以前几乎一样,但有两个小区别:首先,/etc/udev/rules.d/70-persistent-net.rules现在必须手动创建文件。这样做的好处是您不必担心任何脚本会覆盖此文件,只需添加您需要的行(您也不需要任何注释)。其次——这是我花了很多时间才弄明白的变化——与 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"
Run Code Online (Sandbox Code Playgroud)

这一行看起来与 Ubuntu 14.04 LTS 中的几乎相同,但有一点不同:在 Ubuntu 14.04 中,有一个附加条件KERNEL=="eth*"。出于某种原因,这在 Ubuntu 16.04 LTS 中不起作用。如果存在此附加条件,则整行将被忽略,您将返回到默认行为(如 中指定的80-net-setup-link.rules)。

  • @kbuilds,根据 [Linux From Scratch](http://www.linuxfromscratch.org/lfs/view/development/chapter07/symlinks.html):DRIVERS=="?*" - 存在这样 Udev 将忽略 VLAN 或桥接子接口(因为这些子接口没有驱动程序)。这些子接口被跳过,因为分配的名称会与其父设备发生冲突。 (4认同)
  • 答对了!现在我的 USB 扩展坞的 NIC 有了 enusb01。谢谢!# USB Display Link Docking Station SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="8c:ae:4c:fa:92:bf", ATTR{ dev_id}=="0x0", ATTR{type}=="1", NAME="enusb1" (2认同)
  • 你真的不需要在 16.04 中指定所有这些。我能够摆脱`SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0"` (2认同)

小智 75

在 Ubuntu 16.04.1 LTS 上,Linux 笔记本电脑 4.4.0-31-genericx86_64 MATE。 @Geancarlo Abich 回答的第一步,它奏效了。Ubuntu 在重启后直接创建了一个新名称:

编辑您的 /etc/default/grub 更改行

GRUB_CMDLINE_LINUX=""
Run Code Online (Sandbox Code Playgroud)

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
Run Code Online (Sandbox Code Playgroud)

最后:

$ sudo update-grub
Run Code Online (Sandbox Code Playgroud)

并重新启动系统:

$ sudo reboot
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用。@vimalprakash 在此更改后,我在 ifconfig 输出中也只显示了“lo”。但是,这是因为其他接口已关闭(执行 ifconfig -a 以查看所有接口),因为我的 /etc/network/interfaces 中的配置是旧名称。 (2认同)
  • 也适用于 Ubuntu 18.04 (2认同)

小智 12

Ubuntu-16.04-server-amd64

/etc/default/grub,改变

GRUB_CMDLINE_LINUX=""
Run Code Online (Sandbox Code Playgroud)

GRUB_CMDLINE_LINUX="net.ifnames=0"
Run Code Online (Sandbox Code Playgroud)

然后,输入:

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

并重新启动您的系统

sudo reboot
Run Code Online (Sandbox Code Playgroud)

  • 更好的是`GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"` (3认同)

Gea*_*ich 10

我试图混合一些建议,我找到了解决方案!

步骤 1:禁用默认的固件继承名称。

编辑您的/etc/default/grub更改行

GRUB_CMDLINE_LINUX=""
Run Code Online (Sandbox Code Playgroud)

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
Run Code Online (Sandbox Code Playgroud)

并且,最后以 root 身份运行:

$ sudo update-grub
Run Code Online (Sandbox Code Playgroud)

并重新启动您的系统。

$ sudo reboot
Run Code Online (Sandbox Code Playgroud)

第 2 步/etc/udev/rules.d/70-persistent-net.rules以 root 身份创建持久文件并填充它们。

$ sudo gedit /etc/udev/rules.d/70-persistent-net.rules
Run Code Online (Sandbox Code Playgroud)

例子:

# 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"
Run Code Online (Sandbox Code Playgroud)

(使用接口 MAC 地址来指代要重命名的接口,并根据需要更改“X”接口名称值)

保存更改并重新启动。

$ sudo reboot
Run Code Online (Sandbox Code Playgroud)

这对我有用。

  • 第二步不是必须的。 (5认同)