如何知道多个网卡中的哪一个正在使用?

如何知道多个网卡中的哪一个正在使用?

假设我的 PC 连接了多个网卡,我如何知道哪个卡用于通信。例如,如果我使用

ping 192.168.x.xxx

我想知道哪张卡(以及哪个 IP 地址)用于通信。

命令

netstat

将告诉我们有关活动连接的信息。我对活动连接不感兴趣,但我想知道下一个连接将使用哪张卡。也就是说,如果我们使用ping将使用哪张卡(或 IP 地址)?

答案1

尝试一下route print;它会显示操作系统的网络表以及每个网络接口将使用的网络接口,或者当一个网络上有多张卡时,它将使用权重来分配流量。我的这台机器上只有一张卡,所以这没什么意思:

===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 12 34 56 78 9a ...... Intel(R) 82566DM Gigabit Network Connection
===========================================================================
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      123.45.67.1   123.45.67.137       10
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
      234.254.0.0      255.255.0.0    123.45.67.137   123.45.67.137       20
      123.45.67.0    255.255.255.0    123.45.67.137   123.45.67.137       10
    123.45.67.137  255.255.255.255        127.0.0.1       127.0.0.1       10
   123.45.255.255  255.255.255.255    123.45.67.137   123.45.67.137       10
        224.0.0.0        240.0.0.0    123.45.67.137   123.45.67.137       10
  255.255.255.255  255.255.255.255    123.45.67.137   123.45.67.137       1
    Default Gateway:       123.45.67.1
===========================================================================
Persistent Routes:
  None

例如,从第二行到 127.xxx 的流量将使用环回接口,但到多播的流量和其他所有流量都将使用网卡。我不确定如何通过编程方式阅读,不过,很抱歉。

答案2

netstat 会告诉你 - netstat 中列出的本地地址是你正在使用的网卡的 ip 地址

让我们来看看我在 Windows 上 netstat 输出的片段 - 我通过 192.168.1.127 连接到我的局域网,并通过 10.0.0.2 连接到交叉局域网

 Proto  Local Address          Foreign Address        State
  TCP    10.0.0.2:56702         ARTEMIS:ms-wbt-server  ESTABLISHED
  TCP    127.0.0.1:19872        Athena:49172           ESTABLISHED
  TCP    192.168.1.127:2869     192.168.1.254:49565    TIME_WAIT
  TCP    192.168.1.127:56523    stackoverflow:http     ESTABLISHED

10.0.0.2 是本地交叉适配器,连接到运行 RDP 服务器的 ARTEMIS,192.168.1.127 正在与我的路由器(即 192.168.1.254)和 stackoverflow 通信。另请注意,127.0.0.1 上的本地连接已显示。

在 Linux 上你可能需要使用

网络状态-n

我的 Linux 机器上只有一个活动端口,但它看起来像 - 对于 IP 地址 192.168.1.127

   tcp        0     52 192.168.1.127:22        121.7.51.154:56383      ESTABLISHED

答案3

所用的卡由该卡上配置的 IP 地址决定。值得注意的是,将同一子网上的 IP 地址配置到不同的物理接口通常是无效的。(是的,这有例外,但它们通常非常具体,不太可能对您有用)。

操作系统中哪个物理卡与哪个逻辑名称相关联是一个比较棘手的问题。确定这个问题的最简单方法是拔掉所有网线,只留下一条,然后查看哪个 IP 地址仍可以通信。

您使用的是什么操作系统,对于某些操作系统类型,有时有更简单的方法来确定哪张卡已被拔出 - 例如,Windows 通过系统托盘图标提供视觉反馈。

相关内容