具有一个 IP 地址的双接口 PC

具有一个 IP 地址的双接口 PC

我想要按照以下设置来设置一台具有 2 个网络接口的机器:

LAN1 <---> PC <---> LAN2

棘手的部分是,PC 应该能够从 LAN1 和 LAN2 以相同的 IP 地址访问,并且 LAN1 和 LAN2 应该不是连接。到目前为止,我尝试过:

1)在两个接口上建立网桥;但是网桥通常设计用于转发流量,而我不希望出现这种行为。

2) 设置具有模式 3 的绑定接口。此方法可行,但会通过两个接口发送来自 PC 的任何答复。

你们知道还有其他选择吗?

谢谢,

桑德

答案1

我想你的意思是这样的:

  • eth0连接到一个具有 192.168.0.0/24 的网络
  • eth1连接到另一个也有 192.168.0.0/24 的网络
  • 一侧的网络与另一侧的网络属于不同的广播域
  • 您的 PC 在两个网络中具有相同的 IP 地址(例如:192.168.0.1/24)

是对的吗?

这不是设置网络的正确方法。系统只能有一个接口来连接给定的子网。

假设您的系统 (192.168.0.1) 想要联系另一个系统 (192.168.0.2)。它应该使用哪个接口?没有办法说清楚。如果该目标 IP 存在于两个子网中,那么应该联系哪个正确的目标系统?没有办法说清楚。

您需要对每个接口进行不同的编号,如下所示:

  • eth0- 192.168.0.1/24
  • eth1- 192.168.1.1/24

然后在接口上执行 SNAT 和 DNAT eth1,这样你的系统它正在与不同的网络通信,但 iptables 实际上在进出过程中使用不同的源/目标 IP 重写数据包。

答案2

我自己在这里找到了一个巧妙的解决方案,并与有类似问题的人分享。

毕竟我需要的是桥接器;您可以使用 ebtables 轻松操纵其行为。为了确保桥接器不会转发数据包,我只需将 ebtables 的“转发”策略更改为“丢弃”。这样,从 eth0 进入的数据包永远不会从 eth1 发出,同时您的机器上仍具有桥接器的良好功能(从两侧均可访问 1 个 IP)。

现在,PC 在两个接口上监听同一个 IP,并根据 ARP 解析选择在哪个接口上发送数据包。

代码:

ebtables -P FORWARD DROP
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1

相关内容