我有两个系统,每个系统都有一个带有两个以太网端口的网卡。一个系统具有经过验证的 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
在此设置中,eth0
onSystem 1
连接到eth0
on System 2
。并且eth1
onSystem 1
连接到eth1
on 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,因此语法可能有所不同。如果需要,也许有人可以验证并编辑这个答案。)