我部署了一个 VMware vCloud 设备,部署前系统要求我输入该设备应使用的 IP 地址和默认网关。该设备默认有 2 个 IP 地址和网卡,它们应该位于同一子网中。
所以我输入的信息是:eth0 为 10.248.2.10/24 eth1 为 10.248.2.20/24 默认网关为 10.248.2.254
现在我遇到了一个奇怪的问题。当我从同一子网中的计算机 ping 两个 IP 地址时,一切都正常。当我从不同子网中的计算机 ping 时,我只收到来自 10.248.2.20 地址 (eth1) 的回复。当我登录到设备时,我可以 ping 同一子网中的计算机以及不同子网中的计算机。
网络人员向我保证没有防火墙阻止此流量。
不确定哪里出了问题。我在想可能是路由表不正确?难道不应该只有一个“默认”目的地吗?但话又说回来,我希望从 eth0 或 eth1 进入的流量也从它到达的同一接口离开,或者这不是一个正确的假设?
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.248.2.254 0.0.0.0 UG 0 0 0 eth1
default 10.248.2.254 0.0.0.0 UG 0 0 0 eth0
10.248.2.0 * 255.255.255.0 U 0 0 0 eth1
10.248.2.0 * 255.255.255.0 U 0 0 0 eth0
有什么线索可寻找吗?
答案1
在同一个子网中,两个 IP 均可访问,无需路由。
从不同的子网,您需要有效的路由才能正常工作。在您的例子中,默认路由通过 eth1。
如果您只想让路由优先考虑 eth0,则可以使用路由表来实现这一点,或者只是为所需接口提供较低的度量。在这两种情况下,您都会获得朝向所需接口的路由。
您还可以添加规则来确定哪个表用于什么用途:
- 创建两个路由表,每个 NIC 一个
- 将每个接口的路由添加到相应的表中
- 添加规则以确定使用哪个表
这应该可以防止流量在内部穿过 NIC,从而允许您保留冗余或将每个 NIC 用于不同的功能。