在 Virtual Box 中,如何从 Linux 命令行知道哪个网卡是哪个?

Vol*_*eve 5 networking linux virtualbox network-adapter virtual-machine

我已经遇到过几次问题,我在虚拟机中安装linux,并且我的所有界面看起来都像“enp0s3”或“enp0s8”等。

在一项测试中,我运行了一个带有 4 个虚拟网卡的虚拟机,不知何故,它们在 Linux 中显示为:

enp0s3 enp0s8 enp0s9 enp0s17

仅编号方案就让我感到困惑,但我主要不确定如何确定哪个指向哪个网卡。

如果我执行 lspci,它会向我显示系统中的所有设备,但不会显示它们如何连接到接口列表......如果我执行“ip link show”,它会向我显示所有接口,但不会显示它们所在的 NIC附于. 我该怎么办?

编辑:

需要澄清的是,我并没有尝试对硬件物理层做任何事情。当我试图查看“哪个网卡是哪个”时,我试图找出最佳方法来确定哪个接口 (enp0sX) 指向 Virtual Box 的 4 个虚拟网卡中的哪一个。显然,如果您有一个网卡,这就可以解释清楚,但如果您使用所有 4 个虚拟网卡,并且它们都使用相同的驱动程序,则很难区分哪个是哪个。

Dre*_*pin 3

有几种方法可以解决这个问题,但这里有两种最可靠的方法(在我看来)......

方法#1(最可靠)

drew@debian:~$ /sbin/ifconfig -a | grep HWaddr
eth0      Link encap:Ethernet  HWaddr 08:00:27:f7:28:18  
eth1      Link encap:Ethernet  HWaddr 08:00:27:52:8b:6e  
eth2      Link encap:Ethernet  HWaddr 08:00:27:81:d7:5c  
eth3      Link encap:Ethernet  HWaddr 08:00:27:d5:22:e8 
Run Code Online (Sandbox Code Playgroud)

将 MAC 地址与机器网络设置(来自主机)中显示的地址相匹配。也就是说,右键单击虚拟机,转到“设置”,然后转到“网络”,查看每个适配器的 MAC 地址字段。

其他列出 MAC 地址的命令包括ip addr, ip link show, lshw -C network。我认为我发布的命令会产生最干净的输出。

方法#2

drew@debian:~$ ls -l /sys/class/net
total 0
lrwxrwxrwx 1 root root 0 May 13 21:59 eth0 -> ../../devices/pci0000:00/0000:00:03.0/net/eth0
lrwxrwxrwx 1 root root 0 May 13 21:59 eth1 -> ../../devices/pci0000:00/0000:00:08.0/net/eth1
lrwxrwxrwx 1 root root 0 May 13 21:59 eth2 -> ../../devices/pci0000:00/0000:00:09.0/net/eth2
lrwxrwxrwx 1 root root 0 May 13 21:59 eth3 -> ../../devices/pci0000:00/0000:00:0a.0/net/eth3
lrwxrwxrwx 1 root root 0 May 13 21:59 lo -> ../../devices/virtual/net/lo
Run Code Online (Sandbox Code Playgroud)

PCI 总线编号将按顺序... 3、8、9、a (10)。因此,这将转换为 3 = NIC 1、8 = NIC2 等...请注意,如果您的 NIC 名称看起来像enp0s3或 那么eno1它们也应该按顺序排列(尽管不一定是连续的),在您的情况下enp0s3将是 NIC 1,enp0s8将是 NIC 2 等...