我在虚拟机 (VM) 上运行 kali linux。今天启动机器,发现eth0接口不见了。
所以我尝试ifup eth0
启动它,但得到了输出:unknown interface eth0
.
但是如果我执行ethtool eth0
然后我得到这个输出:
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: Unknown (auto)
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: no
这个错误的原因是,在这里,
eth0
意味着两个不同的东西:实际的接口名称,如内核、iproute2工具、ethtool、dhclient等确实存在的,
或者ifupdown工具中的接口配置,指向实际的接口名称。在这里,如果从未在配置中定义,则ifup不知道:这是错误消息。
eth0
重现此错误的简单方法:
所以接口没有丢失。ifupdown工具尚未配置为使用它。
对于您的情况,您可以在末尾添加
/etc/network/interfaces
(或在单独的文件中,例如/etc/network/interfaces.d/eth0
,如果interfaces
文件在其配置中包含interfaces.d
目录)这两行:让ifupdown工具等
ifup
命令知道它并在启动时使用 DHCP 对其进行配置。我不知道为什么以前没有这样做。在我之前的假示例中,我添加了 likewise
veth5
的定义(在 Debian 9 上):我通过执行命令解决了它
dhclient
dhclient - 动态主机配置协议客户端
Internet Systems Consortium DHCP 客户端 dhclient 提供了一种使用动态主机配置协议 BOOTP 协议配置一个或多个网络接口的方法,或者如果这些协议失败,则通过静态分配地址来配置一个或多个网络接口。
...
dhclient 应该尝试配置的网络接口的名称可以在命令行中指定。如果在命令行中没有指定接口名称, dhclient 通常会识别所有网络接口,如果可能,消除非广播接口,并尝试配置每个接口。