允许设备跨 2 个网络子网进行通信

允许设备跨 2 个网络子网进行通信

我有 2 个家用路由器,想允许(某些)设备跨子网通信。

  • ROUTER#1(ASUS RT-AC87U),子网 192.168.1.0/24,作为连接 ISP 的主路由器
  • 路由器#2(NETGEAR WGR614 v7),子网 192.168.2.0/24,将其 WAN 端口连接到路由器#1 LAN 端口

[INTERNET] -> [WAN] ROUTER#1 [LAN] -> [WAN] ROUTER#2 [LAN] -> PC#2

如何允许直接连接到 ROUTER#1 的设备与 ROUTER#2 上的设备通信(通过 ROUTER#2 子网上的 IP),但反之则不行?

例如,假设 PC#1 (192.168.1.217) 连接到 ROUTER#1 LAN,则访问 PC#2 (192.168.2.10) 连接到 ROUTER#2 的 LAN 端口。作为测试,我尝试通过以下方式访问托管在 PC#2 端口 80 上的虚拟 Web 服务器http://192.168.2.10/index.html或 ping 192.168.2.10。

如果我在 ROUTER#2 的端口 80 上配置端口转发以转发到 PC#2(192.168.2.10),并通过 ROUTER#1 子网(192.168.1.5)上的 ROUTER#2 IP 访问它,它可以按预期工作,但这不是目标。

ROUTER#1 需要保留与 ISP 连接的主路由器。此外,ROUTER#2 需要提供自己的子网和 DHCP。

ROUTER#1 允许我配置静态路由、防火墙 (iptable)。ROUTER#2 的配置限制更多,允许我启用/禁用 SPI 防火墙并配置静态路由。我搜索过,但找不到 ROUTER#2 上对 NAT 的任何控制。

仅供参考:我是网络方面的新手,但我正在努力在过程中学习。

设置摘要

路由器#1(华硕 RT-AC87U)

  • WAN 端口连接到 ISP 调制解调器
  • 路由器#2(192.168.1.5)连接到LAN端口
  • PC#1(192.168.1.217)连接到 LAN 端口
  • 为路由器#2保留IP(192.168.1.5)
  • 通过 192.168.1.5 接口 br0 转发 192.168.2.0/24 的静态路由条目
  • 如果 br0,iptables FORWARD 链上的条目将接受 src 192.168.1.0/24 dst 192.168.2.0/24

路由器#2(NETGEAR WGR614 v7)

  • WAN 口连接到 ROUTER#1 LAN 口
  • PC#2(IP:192.168.2.10)连接到路由器#2 LAN 端口(在端口 80 上运行虚拟 Web 服务器)
  • 端口转发绑定 80:80 dst 192.168.2.10
  • SPI 防火墙已禁用
  • 启用互联网端口上的 ping 响应

从 PC#1

  • 可以 ping 通 192.168.1.5 上的路由器#2
  • 无法 ping 通 192.168.2.1 上的路由器#2
  • 无法 ping 192.168.2.10 上的 PC#2
  • 无法访问 192.168.2.10:80 上的 Web 服务器

设置详情

路由器 #1 (华硕 RT-AC87U)

广域网

  • (PPPoE 至 ISP)

局域网

  • IP地址:192.168.1.1
  • 子网掩码:255.255.255.0
  • DNS 服务器:1.1.1.1

DHCP 服务器

  • IP 池起始:192.168.1.200
  • IP 池结束:192.168.1.254
  • 手动分配:192.168.1.5 至路由器 #2

LAN 路由 - 静态路由

  • 网络/主机 IP:192.168.2.0
  • 网络掩码:255.255.255.0
  • 网关:192.168.1.5
  • 度量:1
  • 接口:LAN(br0)

路由表

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
(...)
169.254.39.0    0.0.0.0         255.255.255.0   U     0      0        0 br0
192.168.2.0     192.168.1.5     255.255.255.0   UG    1      0        0 br0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 br0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
(...)

iptables 转发

Chain FORWARD (policy ACCEPT)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     all  --  tun21  *       0.0.0.0/0            0.0.0.0/0
2     6558  363K TCPMSS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcpflags: 0x06/0x02 TCPMSS clamp to PMTU
3       60  3120 ACCEPT     all  --  br0    br0     192.168.1.0/24       192.168.2.0/24
4        0     0 SECURITY   all  --  ppp0   *       0.0.0.0/0            0.0.0.0/0

路由器 #2 (NETGEAR WGR614 v7)

广域网 (静态 IP)

  • IP地址:192.168.1.5
  • IP 子网掩码:255.255.255.0
  • 网关 IP 地址:192.168.1.1

局域网

  • IP地址:192.168.2.1
  • 子网掩码:255.255.255.0
  • DNS 服务器:192.168.1.1

DHCP 服务器

  • IP 池起始:192.168.2.10
  • IP 池结束:192.168.2.20

答案1

如何允许直接连接到 ROUTER#1 的设备与 ROUTER#2 上的设备通信(通过 ROUTER#2 子网上的 IP),但反之则不行?

在这种情况下,您不需要 – ROUTER#2 的功能不足以实现这一点。您需要能够配置“SPI防火墙”根据您的描述允许和阻止数据包。

(“SPI” 基本上只是意味着它有一条--state established -j ACCEPT规则,因此它允许回复数据包进入,但不允许新连接进入。不幸的是,在您的情况下,它与您要求的方向相反。)

路由配置在这里不会有帮助,因为路由器#2 已经有到路由器#1 网络的路由(因为它的 WAN 接口实际上是该网络的一部分),并且你有点需要该路由,以便路由器#2 能够将回复数据包传送到路由器#1 网络上的授权 PC;如果它有回复路由,那么它也有一个“新”数据包的路由。

我搜索过,但未能找到对 ROUTER#2 上的 NAT 的任何控制。

理论上这不是问题;这样的控制只会禁用方向 #2→#1 的 NAT(并且你不希望任何数据包朝那个方向走反正)。 那里默认情况下,#1→#2 没有 NAT(只有“端口转发”规则);很可能是防火墙丢弃了入站数据包。

相关内容