![如何在两个不同的网络之间创建子网](https://linux22.com/image/1468722/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%A4%E4%B8%AA%E4%B8%8D%E5%90%8C%E7%9A%84%E7%BD%91%E7%BB%9C%E4%B9%8B%E9%97%B4%E5%88%9B%E5%BB%BA%E5%AD%90%E7%BD%91.png)
我需要一些帮助来在两个路由器之间建立我的第一个子网。
我的办公室位于另一个办公室附近,这两个办公室通过网线连接在一起,并且两个办公室都有独立的互联网接入。
每个网络都有自己的网络 IP 范围:
- 网络 A 是
10.35.1.*
- 网络 B 是
10.35.2.*
我想在这两个网络之间设置一个子网,以共享网络资源。
我如何设置我的 DD-WRT 路由器来路由这两个网络?
以下是该网络设计的简要草图:
实际上所有子网掩码都是 255.255.255.0
Network A Network B
PC1 PC2 PC3 PC4
(10.35.1.10) (10.35.1.11) (10.35.2.12) (10.35.2.13)
| | | |
------------------ ------------------
| |
Router A (DD-WRT) -------------------- Router B
(10.35.1.1) (10.35.2.1)
| |
| |
{Internet} {Internet}
编辑:现在我在路由器上添加了一个手动静态路由 10.35.1.1(在图片中以黄色突出显示)但仍然无法从路由器 TelNet 或网络 A 的 PC ping 10.35.1.1
答案1
首先,每个本地网络都是自己的子网(这是“子网”的简写,其中“网络”指的是整个网络;在您的情况下,“网络”很可能是互联网)。您需要做的是在两个子网之间设置路由。它们将保持独立实体,但流量将能够在它们之间流动。
您需要确认的第一件事是 IP 范围不重叠。例如,10.35.1/24 和 10.35.2/24 可以,但 10.35.1.0/16 和 10.35.2.0/16 则不可以(因为在后一种情况下,IP 范围重叠,路由器没有很好的方法知道哪些流量应该流向何处)。
我不知道在 dd-wrt 中配置此功能需要采取什么步骤(如“单击此处,输入此内容...”),但您需要执行的操作是:
- 将路由器 A 物理连接到路由器 B(有线或无线、直接或通过隧道,但它们需要一种相互通信的方式)。
- 配置路由器 A,以将任何旨在流向路由器 B (10.35.2/24) 所服务的网络的流量通过其链路路由到路由器 B。
- 配置路由器 B,以将任何流向路由器 A(10.35.1/24)所服务网络的流量通过其链路路由到路由器 A。
- 在两个路由器上,设置必要的防火墙规则,以允许流量在路由器 A 和路由器 B 所服务的网络之间流动。根据具体情况,这可能是或可能不是严格要求的。
第 2 步和第 3 步(这是让这一切顺利进行的秘诀)通常通过设置静态路由。任何中等能力的 IP 堆栈都提供了一种实现此目的的方法,我无法想象 dd-wrt 会是例外,尽管具体实现方法各不相同。一般的想法是告诉每个路由器“要到达网络 abcd/e”,它需要“通过链路 fghij 转发流量”和/或“将流量传递到下一跳路由器 klmn”;这就是 IP 网络(例如 Internet)上所有路由的工作方式。如果您指定了下一跳路由器,则该路由器必须可通过其他配置的路线。
例如,考虑以下 IPv4 路由表,它应该与您设置的类似:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
这句话的意思是:要到达网络 192.168.1.0 网络掩码 255.255.255.0(对应于 192.168.1/24),请使用网关 0.0.0.0(即,只将流量转储到网络上)通过接口 eth0。要到达网络 0.0.0.0 网络掩码 0.0.0.0(或 0.0.0.0/0,“默认路由”),最好的选择是要求 192.168.1.254 将流量转发到其最终目的地。只有核心网络路由器没有默认路由;这称为DFZ 或无违约区。当您收到“无到主机的路由”错误时,几乎总是因为您遇到了无法将流量传递到目标主机的路由器。
路由始终以最具体匹配获胜的方式考虑,因此,只有在没有其他配置的路由匹配时才会参考默认路由。因此,如果我想通过连接到 eth1 的物理链路将流量路由到 172.16.128.0/23,我最终会得到一个类似于以下的路由表:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0
172.16.128.0 0.0.0.0 255.255.254.0 U 0 0 0 eth1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
通过在另一端进行相应的更改,我可以确保返回流量能够流回原始网络,从而实现专用链路上的双向通信。
一旦您在两端的 dd-wrt 配置中做出了这种更改,两个网络上的主机至少应该能够与链路另一端的路由器通信。(此时,很可能需要配置防火墙以允许适当的流量通过。)
答案2
这其实是一个简单的问题。两个 DD-WRT 可以配置为 OpenVPN 客户端-服务器对,这样就可以合并两个独立的子网。
在桥接配置说明在这个非常清晰的 DD-WRT 维基页面上。这种配置有时被称为站点到站点桥接 VPN。
剩下要做的唯一一件事就是让两个路由器相信这两个子网实际上属于一个更大的网络。您只需使用更宽的子网掩码即可实现这一点。包含现有网络的最小子网掩码是/22
,或 255.255.252.0。这意味着您必须在每个 DD-WRT 路由器的配置 GUI 中更改子网掩码。完成此操作后,更改将需要一些时间(= 租用时间,对于大多数 LAN 为 1 小时)才能传播到您的 DHCP 客户端。
评论:
做不是更改每个路由器分配的 IP 范围。目前,它们不重叠,这才是最重要的。
您将获得一些从一个子网到另一个子网的第 2 层流量。这包括 ARP 流量等。如果您拥有商用快速网络,IE至少 10Mb/s,完全不用担心,你不会浪费宝贵的带宽。相反,你将拥有全部跨部门工作的协议,您可以在另一家办公室的打印机上打印、共享目录和文件等等:不限制,一切都会像两个办公室一样工作。如果你真的想阻止第 2 层流量,上面的参考资料将向你展示如何使用ebtables,但这不值得痛苦。
当发出 DHCP 请求时,尚不清楚哪个路由器将赢得竞争,这意味着您可能在 10.35.1.xx 的 PC 周围有 10.35.2.xx 的 PC。您不必担心这一点:正是因为这两个子网完美集成,所以无论如何系统都会完美运行。但是,如果您对此感到不安,您所要做的就是
iptables
在每个路由器上引入一条规则,阻止 DHCP 回复(而不是使用原始套接字):iptables -A FORWARD -dport 67:68 -sport 67:68 -j DROP
该系统非常强大。七年前,我在我的家和我工作的大学实验室之间建立了这种类型的连接:连接从未出现过故障。
答案3
我最终放弃了,DD-WRT 有太多错误。
Linksys WRT54G 上的 DD-WRT,构建 DD-WRT v24-sp2 (08/07/10) vpn (SVN 修订版 14896)
无线安全不断无缘无故切换到 TKIP,所以我的笔记本电脑和智能手机无法连接。与 DD-WRT 之间的 PPTP VPN 链接路由访问不完整。
还有什么,我现在不知道...
我将采用另一种解决方案。
但感谢大家的意见,我从你们身上学到了很多!
使用子网掩码的解决方案
记录一下...我能够使用不同的子网掩码将两个网络 10.35.1.0/24 和 10.35.2.0/24 连接在一起。在每个路由器和每个 DHCP 服务器上,您需要包含两个 IP 范围,例如 255.255。252.0 (10.35.0.1 - 10.35.3.254)。掩码有点太宽,但实际上对我来说并不重要。我稍后会添加其他子网。