我尝试使用以下布局连接两个不同的网络:
在网络 1 上,我有一台 IP 地址为 10.0.0.2/24 的计算机/笔记本电脑,通过 IP 为 10.0.0.1 的 Linux Router1 通过以太网接口 (eth0) 连接。在 Linux Router1 上启用 IP 转发后,我可以将包从 Computer1 转发到 Linux Router2(我可以从 Computer1 ping Router2)。
我还可以使用也转发网络包的 Linux Router2 执行从 Computer2 到 Router1 的反向路由。
但我想要实现的是在该网络中的 Computer1 和 Computer2 之间建立通信。
例如,我想从 Computer1 ping Computer2,反之亦然。
我怎样才能通过使用 Linux 配置(iptables、路由表等)来做到这一点?
答案1
对于您提供的路由来说这是不可能的。 (至少,除非您要包含代理 arp 的所有不必要的复杂性。)
也许路由器地址中有拼写错误,它们实际上共享一个子网,但如图所示,路由器 192.168.0.1/24 和 192.168.1.1/24 之间没有路由。将子网掩码更改为 /23 或将路由器置于同一 /24 子网中,例如 192.168.1.x/24
修复此问题后,10.0.0.x/24 上的所有设备都需要通过 10.0.0.1 路由到 10.0.1.x/24,反之亦然。您的每个路由器都需要通过对面的路由器到达远程 10.* 网络的路由。
答案2
简而言之,router1 很可能不知道,10.0.1.0\24
而 router2 也不知道10.0.0.0\24
。因此,您需要在 router1 和 router2 上放置一条静态路由,告诉它们将数据包发送到它们还不知道的网络的位置。
看起来计算机 1 已经知道将其不知道的所有内容发送到路由器 1,而计算机 2 也会将其不知道的所有内容发送到路由器 2。
您可以使用命令:
ip route add ...
您需要告诉 router1 将所有流量发送10.0.1.0\24
到 router2(图中的 192.168.1.1)。
您需要告诉 router2 将所有流量发送10.0.0.0\24
到 router1 (图中的 192.168.0.1)