Old*_*ool 8 networking systemd ubuntu-16.04
我正在尝试重命名 Ubuntu 16.04 VPS 上的网络接口,但我无法这样做。Systemd 将我的主要网络接口命名为 enp0s3。我想将此接口重命名为 eth0。
根据systemd.link 文档,我创建了一个/etc/systemd/network/10-eth0.link
包含以下内容的文件:
[Match]
MACAddress=08:00:27:f7:57:e5
[Link]
Name=eth0
Run Code Online (Sandbox Code Playgroud)
MAC 地址与ip a
接口输出中给出的地址相匹配。我还将/etc/network/interfaces
文件中的 enp0s3 条目重命名为 eth0 。虽然,当我重新启动机器时,界面仍然命名为 enp0s3。
dmesg
输出中的以下条目对我来说很有趣:
e1000 0000:00:03.0 eth0: (PCI:33MHz:32-bit) 08:00:27:f7:57:e5
e1000 0000:00:03.0 eth0: Intel(R) PRO/1000 网络连接
e1000 0 :57:e5 03.0 enp0s3:从 eth0 重命名
很明显,它以 eth0 开始,但随后又被重命名为 enp0s3。我不知道为什么?
当我尝试调试链接文件时,我得到以下输出:
$ sudo udevadm test-builtin net_setup_link /etc/systemd/network/10-eth0.link
calling: test-builtin
=== trie on-disk ===
tool version: 229
file size: 6841778 bytes
header size 80 bytes
strings 1755242 bytes
nodes 5086456 bytes
Load module index
timestamp of 'etc/systemd/network' changed
Parsed configuration file /lib/systemd/network/99-default.link
Parsed configuration file /etc/systemd/network/10-eth0.link
Created link configuration context.
unable to open device '/sys/etc/systemd/network/10-eth0.link'
Unload module index
Unloaded link configuration context.
Run Code Online (Sandbox Code Playgroud)
关于它无法打开设备的线路似乎很奇怪。我不确定它为什么要这样做,/sys 下根本没有 etc 目录,我应该创建它吗?
任何关于为什么我的界面名称不坚持的见解都非常受欢迎。
根据https://www.freedesktop.org/software/systemd/man/systemd.link.html,默认命名策略是:
# /usr/lib/systemd/network/99-default.link
[Link]
NamePolicy=kernel database onboard slot path
MACAddressPolicy=persistent
Run Code Online (Sandbox Code Playgroud)
所以我怀疑你可能想将以下行添加到你的 eth0.link 中:
NamePolicy=mac
Run Code Online (Sandbox Code Playgroud)
我没有测试过这个,所以我不确定,但我怀疑问题是你在 MAC 上匹配,但没有命名策略来实现这一点。
每个策略都可能失败,并使用第一个成功的策略。名称不是直接设置的,而是作为属性“ID_NET_NAME”导出到 udev,默认情况下,udev 规则使用它来设置“NAME”。如果名称已经由用户空间设置,则不执行重命名
这只是一个猜测。
您还应该能够禁用 default.link,至少根据https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
在我运行的一些 openSUSE 系统上,我遇到了类似的问题,通过在 /etc/udev/rules.d 下创建两个文件(参见https ://unix.stackexchange.com/questions/118272/80-net-setup-link-no-longer-functions-when-i-downgraded-systemd , https://wiki.archlinux.org/index.php/Network_configuration #Device_names和https://wiki.gentoo.org/wiki/Udev/Upgrade_Guide):
sudo touch /etc/udev/rules.d/80-net-setup-link.rules
(或者只是确保该名称的空文件在该位置)
和
我创建了/etc/udev/rules.d/10-persistent-network.rules:
ACTION=="add", SUBSYSTEM=="net", KERNEL=="eth*", ATTR{tx_queue_len}="1000"
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您实际上可以使用该文件来设置您想要的名称:
ACTION=="add", SUBSYSTEM=="net",ATTR{address}=="08:00:27:f7:57:e5",NAME="eth0"
Run Code Online (Sandbox Code Playgroud)