我的 ISP 路由器 (R1) 的 IP 地址为 192.168.0.1,它为第二个路由器 (R2) 分配了 IP 地址 192.168.0.2,并连接了 LAN 到 WAN 端口。R2
是 archer c20,网络为 192.168.5.0/24,位于 192.168.5.1。
我可以从 R2 访问 R1 LAN,但不能从 R1 访问 R2 LAN。我在这里查看了几个问题,但我不清楚为什么这是不可能的,或者是否有解决方法。
我认为如果我这样做的sudo ip route add 192.168.5.0/24 via 192.168.0.2
话,ping 192.168.5.1
它会起作用,因为路由器 2 知道他的网络,但它不起作用。
有没有办法从第一个子网进入第二个子网?
更新:
有三个目标:隔离两个网络,第一个网络上只有一个服务(vpn)可以访问第二个网络(执行唤醒局域网),并创建一个子网以避开 vpn 上的重叠子网,而无需接触 isp R1 LAN。
但是第一个网络仍然可以从第二个网络访问,因为它是主网关,所以它不能像我预期的那样保护我的家庭网络,我可能正在将路由器模式切换到 AP,并将 vpn 限制为仅供某些设备使用。
结论和经验教训:
最后,可以从 R1 上的 LAN 访问 R2 网络,问题出在防火墙上正如@user1686指出的那样,我没有看到路由器在安全性方面有“启用 SPI 防火墙”选项,禁用它可以解决问题,这就是我选择该答案的原因。
从那里你需要添加静态路由在路由器中,或者在这种情况下仅在所需设备sudo ip route add 192.168.5.0/24 via 192.168.0.2
(如 dev wlan0,如果需要)中,确保一切正常,route -n
或ip route get 192.168.5.12
执行 ping。然后,您可以在文件 /etc/dhcpcd.exit-hook 中使其持久化。
添加了静态路由,我可以 ping 到内部 LAN ip,我无法在其 WAN 或本地 ip 上 ping R2,但这是路由器的默认选项限制。但我无法从浏览器进入 192.168.5.1 上的管理员,有点奇怪。
双自然
但正如@harrymc 指出的那样,这是一个过度的设置,@davidgo 引导我对此案例进行了研究。这是一个双重 NAT 的情况,对于大多数用户来说,它不会引人注目,但在某些游戏机上或为了公开服务,它会增加开销:
例如,如果我在内部路由器中有一个页面,则有 3 个选项:打开端口 80 两次(PAT)、将 R2 设为 DMZ 或在那里添加静态路由(如果 R1 有选项)。
隔离主家庭网络的主要目标是不可能的(仍然可以从 R2 访问),并且路由管理很复杂。
因此,使用双重 nat 作为防火墙不是一个好的解决方案(查看双自然和双自然论坛)而安全性仍然取决于哪些端口被暴露,使用哪些服务和密码。
解决方案
因此,如果您要进行双重 natting,请不要这样做。
- 将 R2 作为接入点,禁用其 dhcp,并保留 R1 来管理 ips。(建议使用 LAN 到 LAN,或 AP 模式下的 LAN 到 WAN)(如果需要 vpn,请检查网络设置以解决重叠问题)。
- 如果您想要完全管理,则选项二将 ISP R1 置于桥接模式,并将 R2 设为主路由器。
谢谢大家
答案1
您的路线似乎是正确的;很可能正如 TomYan 提到的,问题出在路由器的防火墙配置。
几乎每个“家庭无线路由器”都是假设 WAN 接口实际上会连接互联网并使用默认防火墙规则集阻止全部来自那个方向的连接。
(即使 WAN 端口不是在您当前的布局中连接到互联网时,路由器实际上无法区分 - 私有 IP 地址并不是一个足够好的提示。就它“知道的”而言,它可能连接到恰好使用 CGNAT 的 WAN 连接,或连接到大学校园网络,或类似的东西。因此没有自动检测,WAN 接口始终不受信任。)
因此,如果您想从 Network1 访问 Network2,您还需要在 Router2 的防火墙中特别允许这些连接。(没有确切的说明,因为每个路由器的防火墙设置看起来都不同。)
同样,每当您想要阻止从一个网络到另一个网络的某些特定访问(无论方向如何)时,都可以通过防火墙规则来实现。例如,编写一条允许从 Network2 到任何地址的流量的规则应该很容易除了Network1,让前者仍然可以访问互联网,同时将其与“外部”网络隔离。
总体而言,我的印象是大多数“无线路由器”都不太适合内部路由(尽管有些比其他的更好)。如果您正在寻找灵活性,可能需要 OpenWRT 或类似产品;到目前为止,唯一剩下的“开箱即用”替代方案似乎是 Mikrotik 的基于 RouterOS 的设备。有时,从运行 Debian 或 OpnSense 的通用 PC 设置自己的路由器实际上更容易。
答案2
问题存在多种可能性:
最有可能的是,路由器 2 正在将 NAT 应用于通过 WAN 接口转发的所有内容 - 因此当路由器 1 在路由器 2 的 LAN 侧 ping 一个 IP 时,响应正在进行 NAT 处理,因此永远不会从目标 IP 收到响应。
可能性较小的是某个地方的网络掩码不正确。如果链中的任何设备有 /16 网络掩码,它将直接将流量转储到该接口上,而不是路由它。
在不了解您的硬件的情况下,我无法准确建议如何诊断它,但我使用路由器/设备上的 tcpdump 来查看数据包进入和离开网络上的各个点以诊断问题 - 当然这不是一种选择。
如果您这样做是为了隔离从路由器 2 到路由器 1 的客户端的流量,那么除非您在路由器 2 上添加防火墙,否则它将不起作用。
如果您还没有这样做,并且这些是典型的家庭/小型企业路由器,请在路由器 1 上研究更强大的固件,如 dd-wrt 或 tomato。这些可以让您将 LAN 端口变成第二个 WAN 端口,这将允许您进行所需的网络隔离 - 否则将路由器 2 变成 AP 是一个好主意 - 它的管理要简单得多。
答案3
您的目标是实现一个复杂的设置,它将需要大多数计算机中的路由规则,但这也很脆弱并且容易出错。
我宁愿选择一种不需要大量网络知识的简单解决方案。
在我看来,由于这是一个相当小的网络,试图通过辅助子网络隐藏一些计算机,同时仍允许单向访问,这是有点过头了。还有更简单的解决方案。
你可以简单地将整个网络整合到一个网络中,只需保密你的登录密码即可。这与 VPN 非常相似,因为它也需要密码。
你可以只使用一个路由器来连接整个网络,或者如果需要两个路由器,请参阅帖子中的 LAN 到 LAN 扩大无线覆盖范围:连接两个无线路由器时,LAN 到 LAN 和 LAN 到 WAN 有何区别?
我想到另一个解决方案是使用一个支持 VLAN 的路由器,使用访问规则将两个子网分别隔离在单独的 VLAN 中。