Tomato Dual VLAN(其中之一是 VPN 隧道)

mat*_*sko 5 vpn tomato wireless-router

我正在努力使用 Tomato 设置我的家庭网络,以使用两个 Wi-Fi SSID。我的路由器是双频 NETGEAR NIGHTHAWK 路由器,到目前为止,Tomato 运行良好,VPN 功能也是如此。唯一的缺点是当 VPN 处于活动状态时(当您选择通过 Tomato 界面启动时),它会将 VPN 隧道应用于我设置的两个 SSID。有没有办法只将 VPN 应用于其中一个 SSID?这样,通过更改我的无线网络,我可以脱离在我的路由器上运行的 VPN 隧道。

这可能吗?

Mat*_*att 6

我最近在我的家庭网络上,在 Tomato (shibby) v138 上实现了这样的东西。这是一个图表: 番茄局域网图

在进入 VPN 设置之前,我最初在同一个 SSID 上同时拥有 2.4GHz 和 5GHz 网络,我们称之为“公共”。内部网络将设备分配到 192.168.1.2-254 范围内的地址。这就是您在图表的上半部分看到的内容。

这些是我为添加通过 VPN 路由的新子网所做的更改:

  1. Basic/Network/LAN 下,我添加了一个名为“br1”的新网桥。我给了它 IP 地址 192.168.2.1、网络掩码 255.255.255.0、启用 DHCP 和 IP 范围 192.168。2 .2-254。
  2. Advanced/Virtual Wireless 下,我分别为 2.4GHz 和 5GHz 接口添加了两个新的虚拟无线接口 wl0.1 和 wl1.1。两者都分配给新网桥“LAN1 (br1)”。我给了两个相同的新 SSID,例如“私有”。如果您愿意,您还可以为他们提供与公共网络不同的密码。
  3. VPN Tunneling/OpenVPN Client/Basic 下,我配置了 VPN 客户端(我的 VPN 提供商是 Private Internet Access,所以我遵循了本指南)。我还启用了“从 WAN 开始”,因此它会自动启动。
  4. VPN Tunneling/OpenVPN Client/Advanced 下,我设置了“忽略重定向网关”选项,因此客户端不会将所有内容路由到 VPN。
  5. VPN Tunneling/OpenVPN Client/Routing Policy 下,我选中了“Redirect through VPN”并添加了一行类型为“From Source IP”和值“192.168.2.0/24”的行,以便新子网上的所有主机都通过 VPN 路由。

那时,我可以启动 VPN 客户端,然后拿起一个无线设备,连接到“私有”网络并确认我的面向互联网的 IP 位于 VPN 后面,然后连接到“公共”并流式传输 Netflix/Amazon Prime视频而不会出现地理限制错误。

现在,您可以根据需要设置每个设备以连接到任一 SSID。在我们的房子里,为电视机提供 Netflix 流的媒体流媒体留在公共网络上。我的手机和笔记本电脑连接到专用网络。在大多数情况下,您应该选择其中之一——您不希望设备任意自动连接到任何一个。

可选的附加功能

接线:如果您希望物理以太网端口通过 VPN 连接,您可以在Advanced/VLAN下添加一个新VLAN并将其分配给新网桥 (br1)。此时,您可以根据需要将路由器上的一个或多个物理以太网端口移动到您的安全 VLAN。我没有,所以只有无线客户端才能加入我的私有子网。

内部路由:执行上述步骤后,您可能会发现公共和专用网络上的客户端无法相互通信。像我上面那样设置 VPN 客户端的路由策略添加了以下规则:

iptables -t mangle -A PREROUTING -s 192.168.2.0/24 -j MARK --set-mark 311
Run Code Online (Sandbox Code Playgroud)

到番茄的防火墙脚本。这标记了源自 192.168.2.0/24 网络的每个数据包,并且所有带有标记 311 的数据都通过 VPN 路由。这意味着“公共”子网 (192.168.1.0/24) 上的任何设备都无法通过内部网络与“私有”子网上的设备通信,因为尽管请求会通过,但响应会被转移到VPN和丢失。就我而言,我希望能够从专用网络上的服务器访问文件共享,因此我决定清除应发送到公共网络的任何内容的标记。我通过添加以下行来做到这一点:

iptables -t mangle -A PREROUTING -s 192.168.2.0/24 -d 192.168.1.0/24 -j MARK --set-mark 0
Run Code Online (Sandbox Code Playgroud)

管理/脚本/防火墙。您可以为要从专用网络转发到路由器的任何端口添加类似的规则。

故障安全:也称为“终止开关”,我在管理/脚本/防火墙中添加了一些额外的规则,旨在防止来自专用网络的任何内容进入未受保护的 WAN (vlan2)。这意味着,如果 VPN 由于某种原因关闭,连接到专用网络的客户端不会意外地通过未受保护的 WAN 接口进行通信。

iptables -I FORWARD -s 192.168.2.0/24 -o vlan2 -m state --state NEW -j REJECT --reject-with icmp-host-prohibited 
iptables -I FORWARD -p tcp -s 192.168.2.0/24 -o vlan2 -m state --state NEW -j REJECT --reject-with tcp-reset
Run Code Online (Sandbox Code Playgroud)