我的家庭网络设置如下:
有一个 ISP 提供的网关为 提供 DHCP 192.168.29.0/24
。我将两个路由器作为客户端连接到此网关(R1 和 R2,分别具有 IP 192.168.29.2
、192.168.29.3
)。
路由器在192.168.0.0/24
和下执行 DHCP 192.168.1.0/24
。
作为 R2 上的客户端 ( 192.168.1.3
),我希望访问 R1 上的客户端(打印机192.168.0.2
)。我在 R2 中设置了一条静态路由,让它将192.168.0.x
请求转发到192.168.29.2
,即 R1:
但是,R1 似乎不接受该请求。我猜它看起来像是从 WAN 到 R1 的请求(它有点像),而且我不知道要查找什么设置才能让它接受它。而且,接受什么?我要尝试接受什么——“从外部到内部的数据包”?我甚至不知道如何描述这一点。
对 R1 客户端运行跟踪路由显示它正在到达 R1。然后什么也没发生,这是超时。
joseph@MBA : ~
[130] % traceroute 192.168.0.5
traceroute to 192.168.0.5 (192.168.0.5), 64 hops max, 52 byte packets
1 r2 (192.168.1.1) 4.888 ms 4.537 ms 3.970 ms
2 192.168.29.2 (192.168.29.2) 5.185 ms 5.291 ms 7.068 ms
我接下来要去哪里?
答案1
对您来说,最简单的选择是将所有设备放在 192.168.29.0/24 子网中。不要使用 R1 或 R2 上的 WAN 端口,并将所有电缆连接到 LAN 端口。
您还需要禁用 DHCP 服务器,R1
以便R2
只有 GW 通过 DHCP 提供 IP 地址。
这样您根本就不需要考虑路由。
原始答案:
我假设您没有在 R1 或 R2 中启用 NAT,一定是这种情况。
为了使不同网络中的两个客户端之间的路由能够正常工作,两端都必须设置正确的路由表条目:
R2 必须具有以下条目:
通过 192.168.29.2 路由网络 192.168.0.0/24
R1 必须有条目
通过 192.168.29.3 路由网络 192.168.1.0/24
您需要双向拥有这些条目,因为 IP 数据包以无状态方式转发 - 每个路由器仅查看 IP 数据包目标地址并查阅该地址的路由条目。
因此,如果另一个路由器没有正确的条目,它将把回复数据包转发到错误的路由器,在本例中是 GW,这是路由器中分配的默认路由。
答案2
您没有提到路由器的品牌和型号,所以答案只是一般性的......
正如您在前一个端口的评论中提到的那样,而在原始请求中没有提到,存在 NAT,这是问题中相当重要的部分...
R1
route 192.169.1.0/24 via 192.168.29.3
R2
route 192.168.0.0/24 via 192.168.29.2
NAT
一般来说,所有“跨网络”流量都会和其他(比如说互联网)流量进入同一个接口,所以对于你问题的最后一部分,它将进入“下一个”路由器外部接口。物理上它将使用转变设备在原始帖子的架构中说明 - 请求。最有可能的是,您必须允许此流量不被阻止。
防火墙/NAT 必须改变才能反映您的期望...
您可以保留传出流量的 NAT 而不做任何更改,这样来自 192.169.1.0/24 的所有流量都将被 sNAT 到 192.168.29.3(包括目的地为 192.168.0.0/24 的流量)。您将无法区分 R2 后面的源设备。要允许传入流量,您需要允许源 IP 192.168.29.3 @R1。
您可以排除目标为 192.168.0.0/24 的流量在 R2 上进行 sNAT,这样在 R1(以及 192.168.0.0/24 上的设备上)上,您将看到流量的原始源 IP。要允许传入流量,您需要允许源 IP 192.168.1.0/24 @R1,如果您想允许源自 R2 的流量,您还需要允许源 IP 192.168.29.3 @R1。
另一个选项可能是在 R1 和 R2 之间创建隧道(例如 ipsec),在这种情况下,您可以使用虚拟接口路由或使用加密映射(如果是 ipsec)来绕过此 NAT/防火墙“问题”。如果是此选项,您甚至可以通过加密映射处理静态路由。但在这里,指出“正确”的关键词以搜索更多信息或提供具体提示会更针对品牌。