在 NIC 上的多个接口上使用 ping

在 NIC 上的多个接口上使用 ping

我有两个系统,每个系统都有一个带有两个以太网端口的网卡。一个系统具有经过验证的 NIC 卡,但另一个系统具有必须经过验证的 NIC。

我用来ping验证网卡上的接口是否正常工作。

为什么每个接口必须位于不同的子网上才能ping工作?

例如:

System 1:  eth0 (10.0.0.1), eth1 (10.0.1.1) -->This NIC is tested good
                  ^                ^
                  |                |
                  V                V
System 2:  eth0 (10.0.0.2), eth1 (10.0.1.2) -->This NIC is being tested

在此设置中,eth0onSystem 1连接到eth0on System 2。并且eth1onSystem 1连接到eth1on System 2。我正在使用 的 submet 掩码255.255.255.0

所以System 2,我会做以下事情:

$ ping -I eth0 -c 100 -qA 10.0.0.1
$ ping -I eth1 -c 100 -qA 10.0.1.1

为什么我不能进行此设置?

System 1:  eth0 (10.0.0.1), eth1 (10.0.0.2) -->This NIC is tested good
                  ^                ^
                  |                |
                  V                V
System 2:  eth0 (10.0.0.3), eth1 (10.0.0.4) -->This NIC is being tested

然后执行以下操作:

$ ping -I eth0 -c 100 -qA 10.0.0.1
$ ping -I eth1 -c 100 -qA 10.0.0.2

拥有多个接口的主机意味着什么?

$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 eth1
10.0.1.0        0.0.0.0         255.255.255.0   U         0 0          0 eth2
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
192.168.0.0     0.0.0.0         255.255.252.0   U         0 0          0 eth0

答案1

如果您在系统 1 和 2 上为 eth1 配置了不同的网络,则默认情况下,该网络的任何数据包都将使用这些接口,而不是 eth0。但是,当它们都位于同一网络上时,它们将通过默认路由发送,除非系统 2 上指定了特定路由,表示通过 10.0.0.4 将数据包发送到 10.0.0.2。

要查看系统 2 上的路由表,请运行

netstat -rn

如果没有为此网络设置特定路由,则将使用默认路由。

要更改该行为,您可以在系统 2 上运行类似于以下内容的命令:

route add -host 10.0.0.2 10.0.0.4

(抱歉,我不使用 Ubuntu,因此语法可能有所不同。如果需要,也许有人可以验证并编辑这个答案。)

相关内容