在我的家庭网络中,我运行了两个 Wifi 路由器,
- 运行 DD-WRT v24-sp2 (07/24/13) std (192.168.1.2) 的 Buffalo WHR-HP-G300N
- 运行 Shibby Tomato 1.28.0000 MIPSR2-121 K26 Max (192.168.1.3) 的 Linksys WRT320N
Buffalo 提供 2.4ghz Wifi 网络,它通过我的 ADSL 线路维持 PPPOE 连接,提供 DHCP 地址分配(192.168.1.*)并且有多个设备连接到它(VoIP 电话等)
Linksys 通过 LAN 连接连接到 Buffalo - WAN 连接被禁用并且 WAN 端口用作 LAN,它提供 5ghz Wifi 网络并且支持 GBit Lan(家庭服务器、NAS)的设备通过 LAN 连接到它,因为 Linksys 也进行 GBit 交换。
我最近订阅了一家名为 Mullvad 的 VPN 提供商,以增强传出连接/地理位置绕过的一般隐私。Shibby Tomato 已配置为建立 VPN 连接,据我所知,连接已启动并正在运行 - 至少日志没有提供任何出错的信息,我在路由表中找到了一个 TUN(tun11)设备等。
我想要实现以下目标:
- Linksys Wifi 网络通过 VPN 连接提供互联网访问
- Buffalo 路由器提供对非 VPN 互联网链接的访问
- 在 Linksys 上,某些 LAN 端口上的某些设备应通过 VPN 路由所有互联网流量
- 在 Linksys 上,一些设备应该通过“正常” DSL 连接路由流量
- 在 Buffalo 上,所有连接到 LAN 端口的设备都可以使用常规 DSL 连接(LAN 端口不需要 VPN)
- 所有设备都应该能够通过内部网络 (192.168.1.*) 相互连接
现在,没有流量通过 VPN 传出,我的假设是,由于 Buffalo 路由器 (192.168.1.2) 通过 DHCP 分配地址,它也宣布自己是默认网关...无论我是否在 Linksys 上也打开 DHCP,任何连接的设备都会获得 192.168.1.2 的默认网关...
Linksys的路由表如下所示:
我对这种复杂网络的了解非常有限,所以我不知道最好的解决方案是什么,也许是使用 VLAN,也许是需要在路由器上手动配置 IPTables,这超出了我的理解范围。或者也许我想做的事情根本无法完成?
编辑-回应Iszi的回答:
我想知道,VLAN 是否不允许这种行为?dd-wrt 和 Shibby 的 Tomato 都允许基于“每个端口”设置 VLAN。我可以为 Buffalo 设置一个私有网络 - 分配 192.168.1.50-100 的 DHCP 地址空间,并将它们 NAT 到 ADSL 连接。该网络的所有流量都可以用 VLAN ID 标记,即 VLAN1
然后我可以在 Linksys 上设置双私有网络,即分配 DHCP 地址空间 192.168.1.10-49,并将应与其连接的所有端口/接口标记为 VLAN1。根据我对 VLAN 用途的有限理解,它们应该完全支持这种分布在不同路由器上的网络用例,根据它们的 VLAN 标记,使它们在同一网络上作为 IF 进行处理。
然后我将设置第二个网络,分配一个 DHCP 地址空间 10.8.0。*,并使用 VLAN2 标记所需端口/接口上的所有流量...
如果我可以设置 VPN 作为 10.8.0.* / VLAN2 网络的网关,并将 PPPOE 连接设置为 192.168.1.* / VLAN1 的网关,那么基本上就可以让我根据端口/接口分配 VPN 访问权限。因此,从理论上讲,我还可以设置路由到 192.168.1.* 网络的主 5ghz Wifi 连接和路由到 10.8.0.* 网络的虚拟无线 AP...
我不明白的是,如何(或者是否)允许从 VLAN1 访问 VLAN2(或者是否不可能)……另一件事是,这只是一个纯粹的理论考虑,因为必要的 iptables 设置目前超出了我的知识范围。如果有人可以概述路由的必要性或告诉我这种 VLAN 的使用是否合理以及如何合理,我将不胜感激。
答案1
我非常怀疑您是否能够获得完全符合您需求的配置,同时让路由器处理 VPN 连接。具体挑战(如果不是完全不可能的话)将是:
- 让 Linksys 上的某些端口使用 VPN,而其他端口则不使用。
- 当 Linksys 连接到 VPN 时,从一个路由器获取任何东西通过 LAN 与另一个路由器上的设备进行通信。
- 让不在 VPN 上的设备与在 VPN 上的设备进行内部通信。
我猜你的 VPN 提供商只允许你一次建立一个连接,这就是为什么你要使用路由器在多个设备上分配对该连接的访问。鉴于此,以下是我能想到的最好的办法:
如下所示连接您的路由器。
[Gateway]---WAN:[Buffalo]:LAN---WAN:[Linksys]
确保两个路由器都配置为作为路由器- 不处于“桥接模式”。两个路由器都应通过 DHCP 获取 WAN IP,并使用 DHCP 为各自的 LAN 提供 IP。确保每个路由器的 LAN 端位于不同的子网(例如:Buffalo LAN 位于 192.168.1.0/24,Linksys LAN 位于 192.168.2.0/24)。
将需要使用 VPN 的所有设备连接到 Linksys 路由器,将其他所有设备连接到 Buffalo 路由器。然后,在 Linksys 上配置 VPN。
有了这种配置,Linksys 后面的所有设备都应该将其流量发送到 VPN 之外,而连接到 Buffalo 的所有设备则不会。根据 VPN 规则(或 Linksys VPN 客户端本身)是否允许拆分隧道,您的设备可能无法进行内部通信。如果支持拆分隧道,Linksys 后面的设备可能能够与连接到 Buffalo 的设备建立出站连接,但您需要为任何入站到 Linksys 的连接配置端口转发(即使这样,VPN 也可能允许或不允许)。
简而言之:
- 子网 1 到 Internet:直接
- 子网 2 到 Internet:VPN
- 子网 2 到子网 1:理论上可行,取决于拆分隧道支持。
- 子网 1 到子网 2:不太可能。将取决于拆分隧道支持,并需要 Linksys 上的端口转发和/或 DMZ 设置。
你应该如果可以的话,您可以按照自己想要的方式进行设置,即为您想要在 VPN 上使用的每台设备设置单独的客户端和连接。这样,无论您如何布置网络基础设施和其他设备,这些设备都将是唯一使用 VPN 的设备,其他设备应该能够自由地相互通信。然后,您可能遇到的唯一本地连接问题将是 VPN 上的少数设备和未使用 VPN 的设备之间的问题。这也将使这些设备能够在本地网络之外使用 VPN。