我尝试在这个新的 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
(一些信息被忽略和压制)
我已经尝试了一些链接:
答案1
关于如何在 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"
此行与 Ubuntu 14.04 LTS 中的几乎相同,但有一点不同:在 Ubuntu 14.04 中,有一个附加条件KERNEL=="eth*"
。出于某种原因,这在 Ubuntu 16.04 LTS 中不起作用。如果存在此附加条件,则整行将被忽略,您将恢复默认行为(如 中所述80-net-setup-link.rules
)。
答案2
在 Ubuntu 16.04.1 LTS 上,Linux 笔记本电脑 4.4.0-31-genericx86_64 MATE。 @Geancarlo Abich 回答的第一步,它起作用了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)
答案3
Ubuntu-16.04-服务器-amd64
在/etc/default/grub
变革
GRUB_CMDLINE_LINUX=""
到
GRUB_CMDLINE_LINUX="net.ifnames=0"
然后输入:
sudo update-grub
并重新启动系统
sudo reboot
答案4
我尝试混合一些建议并且找到了解决方案!
步骤1:禁用默认固件继承的名称。
编辑您的/etc/default/grub
更改行
GRUB_CMDLINE_LINUX=""
到
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
最后以 root 身份运行:
$ sudo update-grub
并重新启动系统。
$ sudo reboot
第2步:以root身份创建持久文件/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
这对我有用。