为什么我的网络接口名为 enp0s25 而不是 eth0?

Mik*_*ike 126 networking

安装 Ubuntu 15.10 后,我的许多脚本停止工作,而且我很难记住这个新名称,因为我已经习惯了 ethx 和 wlanx 多年。这种变化有原因吗?我是否必须习惯这一点,或者我可以重命名它并回到旧的 eth0 吗?

$ ifconfig

enp0s25   Link encap:Ethernet  HWaddr 77:5a:5e:a6:86:d5  
      inet addr:192.168.31.239  Bcast:192.168.31.255  Mask:255.255.255.0
      inet6 addr: fe80::725a:b6ff:fea6:86d7/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:4833 errors:1332 dropped:0 overruns:0 frame:666
      TX packets:5589 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:3266446 (3.2 MB)  TX bytes:1046654 (1.0 MB)
      Interrupt:20 Memory:d3500000-d3520000
Run Code Online (Sandbox Code Playgroud)

Ser*_*nyy 127

这被称为可预测的网络接口命名,是systemd 的一部分,Ubuntu 从 15.04 版开始过渡到它。

基本思想是,与以前的 *nix 命名方案不同,硬件探测没有特定顺序发生并且可能会在重新启动之间发生变化,这里接口名称取决于硬件的物理位置,可以通过查看lspcilshw输出来预测/猜测。相反,我们可以猜测它在 pci 系统中的物理位置信息。在您的情况下,将是 pci 总线 0,插槽 2。根据freedesktop.org 文章,实际上有 3 种分配接口名称的方式:基于板载卡的 BIOS/固件、基于 PCI 信息和基于 MAC接口地址。有关其他示例,请参阅此处

根据freedesktop.org 页面,切换到可预测命名的原因之一是,在启动时添加和删除设备时,经典命名约定可能会导致多接口系统中的软件安全风险。另外,根据该意见萨姆·哈内斯,“在与众多以太网端口一个很大的服务器是非常宝贵的:你可以立即知道哪个接口进入的端口,然后添加或删除硬件不改变其它端口的名字。”

如果您决定恢复到其他版本的命名,请参阅如何在 15.10重命名网络接口

  • 我在“可预测”这个词中看到一点讽刺意味:),谢谢您的指点。 (44认同)
  • 可预测命名在只有一个界面的桌面系统上不是特别有用,在这种情况下它有点令人讨厌。在具有许多以太网端口的大型服务器上,它是无价的:您可以立即知道哪个接口通向哪个端口,并且添加或删除硬件不会更改其他端口的名称。这就是它的设计目的。 (26认同)
  • 我猜失败是可以预见的;) (16认同)
  • “可预测”,是的,当然。升级到 15.10(全新安装,旧 /home)后,我的以太网断开连接。为什么要打破 API 和约定?现在我必须弄清楚是什么失败了。我对此感到非常沮丧:( (12认同)
  • 呃,告诉 `systemd` 开发人员,伙计们。 (6认同)
  • 到目前为止,我没有从这个变化中得到任何好处。 (3认同)
  • 哇,这真的破坏了很多软件。不错的举动systemd。你结交了很多新朋友! (3认同)
  • 当您插入新的 PCI/PCIE 网络适配器时,实际上可预测的命名会时不时地在现代系统上中断。在我的其中一块主板(X58 Extreme IIRC)上,这导致所有 NIC 名称都发生了变化。 (2认同)
  • @lurscher 见 https://serverfault.com/a/741212/363611 (2认同)
  • Pilot6,交换 PCIE 卡确实会影响带有内置以太网控制器的桌面系统的用户。每当添加或移除 PCIE 卡(USB 控制器、GPU 等)时,主板会将内置以太网控制器“移动”到另一个 PCIE 插槽,enpsXX 启动名称会相应更改,而 /etc/network/interfaces 名称不会。因此,机器启动到非工作连接状态。要修复它,用户必须手动编辑 /etc/network/interfaces 文件以反映更改。我可以确认问题存在于 AMD 970 芯片组主板上。 (2认同)