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

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

我现在已经遇到了几次问题,我在虚拟机中安装 Linux,我的所有接口看起来都像“enp0s3”或“enp0s8”等。

在一次测试中,我运行了一台具有 4 个虚拟 NIC 的虚拟机,它们在 Linux 中显示为:

enp0s3 enp0s8 enp0s9 enp0s17

单是编号方案就让我感到困惑,但我大多不确定如何确定哪一个指向哪个 NIC。

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

编辑:

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

答案1

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

方法 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 

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

其他列出 MAC 地址的命令包括ip addr、、ip link showlshw -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

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

答案2

enp0s3或者enp0s8

  • 以太网网络外围设备
  • #
  • 串行端口
  • #

运行下列操作之一应该会有所帮助(特别是当您知道哪些 HOST 连接在 Vbox 中被标记为什么时):

ip addr
ip -a
lspci  /  lsusb                 (均显示型号;lspci通常更能说明问题)

相关内容