我在虚拟机(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
答案1
这个错误的原因是,在这里,eth0
意味着两个不同的事情:
内核看到的实际接口名称,ip路由2工具,以太网工具,dhclient等确实存在,
或者界面配置在如果向上向下工具,指向实际的接口名称。在这里,如果
eth0
从未在配置中定义过,那么它是未知的通过 ifup: 这是错误信息。重现此错误的简单方法:
# ip link add name veth5 type veth peer name veth6 # ethtool veth5 Settings for veth5: Supported ports: [ ] [...] Link detected: no # ifup veth5 ifup: unknown interface veth5
所以接口并没有丢失。这如果向上向下工具尚未配置为使用它。
对于您的情况,您可以在末尾添加/etc/network/interfaces
(或在单独的文件中添加,例如,/etc/network/interfaces.d/eth0
如果interfaces
文件在其配置中包含interfaces.d
目录)以下两行:
auto eth0
iface eth0 inet dhcp
为了拥有如果向上向下工具,因此该ifup
命令了解它并在启动时使用 DHCP 配置它。我不知道为什么以前没有这样做。
在我之前的假示例中,我添加了同样veth5
的定义(在 Debian 9 上):
# ifup -a
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/veth5/1e:96:59:c3:e4:0c
Sending on LPF/veth5/1e:96:59:c3:e4:0c
Sending on Socket/fallback
DHCPDISCOVER on veth5 to 255.255.255.255 port 67 interval 8
答案2
我通过执行命令解决了这个问题dhclient
Internet 系统联盟 DHCP 客户端 dhclient 提供了一种使用动态主机配置协议、BOOTP 协议配置一个或多个网络接口的方法,或者如果这些协议失败,则通过静态分配地址来配置一个或多个网络接口。
...
dhclient 应尝试配置的网络接口的名称可以在命令行上指定。如果命令行中未指定接口名称dhclient 通常会识别所有网络接口,如果可能的话消除非广播接口,并尝试配置每个接口。