有两个 LAN,每个 LAN 都有自己的网关、DHCP 和互联网连接
- LAN 1 - IP:192.168。0.0-255,掩码:255.255。254.0,网关:192.168.0.1
- LAN 2 - IP:192.168。1.1-255,掩码:255.255。254.0,网关:192.168.1.1
将它们连接到具有两个 NIC 的 Linux 计算机,每个 LAN 一个。连接到 LAN 1 的 NIC 接受发送到 192.168.1/24(LAN2 的 ips)的所有数据包,并使用另一个 NIC 发送它们,反之亦然。它被视为所有其他计算机。
这可能吗?我应该在 Linux 框中输入哪个命令来设置此“路由”。目标是每个 LAN 都保留其 DHCP、当前网关和互联网连接,但能够访问另一个 LAN 的计算机。
请不要告诉我这不是学术上的方法。问题在于猜测这种设置是否可行,并指出什么会阻止它工作。我知道这不是通常的做法,它不太好,我应该在网关上设置路由……但我想要千兆吞吐量,而路由器太弱了。
问题关闭后进行编辑:
尽管这个问题引起了非常强烈的反对,但我还是设法找到了答案。我所描述的被称为伪桥。我使用双端口 NAS(Synology ds1812+)连接子网。一个端口连接到每个网络并启用 ip_forwarding 和 proxy_arp。
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
千兆速度下运行顺畅,而且免费。感谢 mfinni 在评论中说出答案(问题已关闭)。
更多信息http://www.cisco.com/en/US/tech/tk648/tk361/technologies_tech_note09186a0080094adb.shtml,http://en.wikipedia.org/wiki/Proxy_ARP还有http://www.sjdjweis.com/linux/proxyarp/
答案1
你做错了。如果你有一个如你所描述的 /23,那么你不需要在两者之间路由。如果它们位于物理上独立的子网上,并且你有两个具有相同 IP 空间的 /23,那么你刚刚创建了 IP 地址空间重叠,这将是一场噩梦。在这里坚持使用 /24(或其他不重叠的子网)。
如果你真的想在两台路由器之间使用 Linux 机器来执行此操作,请启用 IP 转发并使用适当的接口在两台路由器之间创建路由。它可能看起来像这样
Subnet1 Router <-----> |eth0 (on subnet 1) LinuxRouter eth1(on subnet 2)| <-----> Subnet2 Router
不要尝试按照你现在的方式去做。使用 /24s(或其他不重叠的空间)并让路由器中其他子网的路由指向该子网的 Linux 路由器接口。
编辑:实际上,要回答您这个有点疯狂的问题,不,这不会按照您的要求工作。如果一台计算机是 192.168.0.2/23 并且它想要与 192.168.1.2/23 通信,它会假定这是本地子网上的计算机(因为您已经告诉它它是本地子网中的计算机),并且它不会将该流量发送到要路由的网关,无论该网关是您的路由器还是正在执行路由的服务器。再次强调,不要这样做。
答案2
除了上述所有您可能不应该这样做的原因之外,您还可以使其工作。但您需要向子网上的每个主机添加路由。
您还必须将子网掩码更改为 /24,而不是当前正在使用的 /23,否则它可能无法工作,因为主机计算机将不会做出路由决策,因为其他 IPS 将显示为本地。
因此,假设您将掩码更改为 /24,并假设您的 Linux 机器的接口为 192.168.0.2 和 192.168.1.2,并且在它们之间启用了路由。
然后在 192.168.0/24 子网中的每个主机上
将 192.168.1.0/24 路由到 192.168.0.2
以及 192.168.1/24 子网中的每个主机
将 192.198.0.0/24 路由到 192.168.1.2
现在,当主机做出路由选择时,它会将其发送到您指定的GW,而不是使用默认值。