背景 -
插图 -https://i.stack.imgur.com/DFSMh.png
我们有一个嵌入式设备(前面称为 PC2),它在 C 类网络(上图中的网络 2)中托管 UI/网页。由于我们无法访问网络 1 设置,因此我们需要添加自己的 WiFi 路由器并创建网络 2,这有助于我们保持设备的 IP 静态。在这种情况下,我们需要从网络 1 中的 PC1 访问网络 2 中的 PC2 上托管的网页。
需满足的条件 -
- 我们必须能够为 PC2/嵌入式设备配置静态 IP,最好仅使用 WiFi 路由器 B。
- 位于网络 2 中的 PC2 必须可供 PC1 访问,以便 PC1 可以看到 PC2 上托管的网页。
迭代执行 -
迭代 1 -
- 连接 - CAT5 从路由器 A 的 LAN 端口到路由器 B 的 WAN 端口。
- 路由器 A 和路由器 B 均在 WiFi 路由器/NAT 模式下运行。
- 观察结果 -
i. 我无法从 PC1(192.168.0.100) 访问 PC2(192.168.1.100),但当我反过来尝试时,PC2 可以访问 PC1(这一定是因为 NAT)。ii
. PC2 可以访问互联网
迭代 2 -
- 连接 - CAT5 从路由器 A 的 LAN 端口到路由器 B 的 WAN 端口。
- 路由器 A 和路由器 B 均在 WiFi 路由器/NAT 模式下运行。
- 观察结果 -
i. 我无法从 PC1(192.168.0.100) 访问 PC2(192.168.1.100),但当我反过来尝试时,PC2 可以访问 PC1(这一定是因为 NAT)。ii
. PC2 可以访问互联网 - 我尝试在路由器 A 中配置以下路由表,如下所示 -
ID | 目的网络 | 子网掩码 | 网关 | 界面 |
---|---|---|---|---|
1 | 192.168.1.1 | 255.255.255.255 | 0.0.0.0 | 局域网和广域网 |
2 | 192.168.1.0 | 255.255.255.0 | 192.168.1.1 | 局域网和广域网 |
3 | 192.168.0.0 | 255.255.255.0 | 0.0.0.0 | 局域网和广域网 |
- 迭代 3 -
- 连接 - CAT5 从路由器 A 的 LAN 端口到路由器 B 的 LAN 端口。
- 路由器 A 和路由器 B 均在 WiFi 路由器/NAT 模式下运行。
- 观察 - i. 我能够从 PC1(192.168.0.100) 访问 PC2(192.168.1.100),即,PC2 上托管的网页将可见,但 PC2 无法访问互联网。
- 我已在两个路由器中配置了以下路由表 -
i. 路由器 A - 与上文相同(即迭代 2)
ii. 路由器 B - \
ID | 目的网络 | 子网掩码 | 网关 | 界面 |
---|---|---|---|---|
1 | 192.168.0.1 | 255.255.255.255 | 0.0.0.0 | 局域网和广域网 |
2 | 192.168.1.0 | 255.255.255.0 | 0.0.0.0 | 局域网和广域网 |
3 | 192.168.0.0 | 255.255.255.0 | 192.168.1.1 | 局域网和广域网 |
- 迭代 4(路由器 B 作为接入点)-
- 路由器 A(网络 -->192.168.0.0,路由器 IP --> 192.168.0.1)和路由器 B(网络 -->192.168.0.0,路由器 IP --> 192.168.0.100)
- RJ45 以太网电缆将路由器 A 的 LAN 端口连接到路由器 B 的 WAN 端口。
- 路由器 A 处于 WiFi 路由器/NAT 模式,路由器 B 处于接入点模式
- 观察结果 -
i. 我能够从 PC2(连接到路由器 B)访问 PC1(连接到路由器 A),反之亦然,两个设备都可以访问互联网。ii
. 无法在负责分配 IP 地址的路由器 A 的客户端列表中看到 PC2,因为路由器 B 处于接入点模式。这使我无法从路由器 A 或 B 将 PC2 的 IP 设为静态。
问题 -
- 我的第三次迭代中的路由表是否正确?如果正确,那么它不能正常工作的原因是什么?
- 当路由器 B 配置为接入点时,迭代 4 中的行为是否可取?在路由器 A 的客户端列表中看不到连接到路由器 B 的设备是否正确?
- 鉴于我们正在寻找一种成本效益高且不需要添加昂贵的支持 VLAN 的路由器等的解决方案,是否有其他/更好的方法来解决这个问题?
答案1
是的,在 #1 和 #2 中,尽管路由尚未完全配置,但 PC2 仍可以访问 PC1,因为路由器 B 仍然启用了 NAT。
您的路由可能不起作用,因为“网关”地址(192.168.1.1)是在错误的一边。当您添加至路由器 A 的路由时,“网关”同样应该是“面向”路由器 A 的地址。
请记住路由器 B 有二IP 地址 – LAN 接口上的 192.168.1.1和192.168.0.??? 在 WAN 接口上,通过 DHCP 从路由器 A 接收。
所以你只需要这一条路线路由器 A:
目的地 | 网络掩码 | 网关 | 界面 |
---|---|---|---|
192.168.1.0 | 255.255.255.0 | 192.168。0.??? | 局域网 |
对于受限访问(例如,仅在端口 80 上使用 HTTP),另一种方法是在路由器 B 中使用“端口转发”——也就是说,利用它本来就有的 NAT 支持。现在,在网络内部使用 NAT 确实有些不好看,但在创建“独立”单元的特定情况下,这是可以原谅的(毕竟,Docker 的运行方式大致相同)。
在 #3 中,我一般不推荐这种连接方式——直接连接 LAN 端口会创建一个大的物理子网,而这个子网恰好有两个 IP 子网在运行,虽然这技术上虽然完全有效,但由于广播数据包自由通过链路,因此可能会引起一些麻烦。例如,无法控制两个 DHCP 服务器中的哪一个将处理哪些设备 - 路由器 A 的 LAN 端口上的 PC 可以从路由器 B 获得租约,等等。
话虽如此,应该确实有效。
在#4中,结果确实正确。当路由器 B 处于“接入点”模式时,不是路由器– 它是一座桥梁,盲目地将所有内容(包括 DHCP 租约请求)中继到路由器 A。
在大多数路由器中,“连接设备”列表实际上主要由 DHCP 租约表构建,因此如果路由器 B 不再发出地址租约,则它将不会在此列表中显示任何设备。
(并且类似地,在也使用路由器的 ARP 缓存来扩充此列表的模型中,“接入点”也不会在其 ARP 缓存中有任何条目,因为它在 MAC 层而不是 IP 层转发所有内容。)
一般而言,以太网中没有强制的“问候”或“握手”来允许建立设备列表。(有很多选修的协议 – DHCP、LLDP、CDP、mDNS、MNDP……但您的嵌入式设备如果愿意的话可以保持完全安静。)
鉴于我们正在寻找一种成本效益高且不需要添加昂贵的支持 VLAN 的路由器等的解决方案,是否有其他/更好的方法来解决这个问题?
市面上有很多便宜的支持 VLAN 的路由器。其中一些在“专业消费者”/“家庭实验室”市场非常受欢迎(例如 ER-X 或 RB951G 或 RB750G),售价约为 50 美元,没有千兆以太网的旧型号可能价格更低。
话虽如此,你不需要需要VLAN,但这些路由器通常还有另一个优点,即没有严格的“WAN 和 LAN”配置,而是允许您创建例如三网络。
最后,您可以使用几乎任何可以运行 Linux(或 FreeBSD)并具有足够以太网端口的设备构建自己的路由器。例如,运行 Raspbian 的 Raspberry Pi(用胶带将 USB 以太网加密狗粘在上面)或运行 pfSense/OpnSense 的二手 NUC 可以很好地处理有线以太网之间的路由。