发布于 

软路由双OpenWrt配置VLAN实现多WiFi分流

# 需求描述

主要需求为实现以下网络功能:

  1. 公司网络划分与互通
  • 实现两个或多个不同小组连接至独立的网络网段。
  • 各独立网络之间需保持互通性。
  1. 差异化海外策略分流
  • 针对不同的小组网络,实施独立的海外流量分流策略。
  1. 接入简化与自动化
  • 自动接入:设备插入交换机特定端口或默认状态下,自动获取小组 A 的网段 IP。
  • 手动指定:小组 B 的设备接入交换机后,可通过手动指定配置的方式连接至网段 B。
  1. 多 WiFi SSID 分流
  • 支持创建多个 WiFi 接入点(SSID)。
  • 每个 SSID 对应不同的海外出口网络策略。
  1. 扩展性需求
  • 预留后期支持上网行为管理功能的空间。

# 解决方案

综合考虑后,决定采用 软路由 + AP 的组网方案,且两者均刷写 OpenWrt 系统。策略代理方面,选用 Mihomo (Clash) 方案。

# 方案优势

  1. 支持多 WiFi 分流:能够满足不同 SSID 走不同出口策略的需求。
  2. 网络配置灵活:OpenWrt 提供了完善的多网口配置功能,支持新建虚拟交换机(Bridge)、配置 VLAN 等高级网络功能。
  3. 分流规则强大:支持安装 Mihomo 插件,可便捷、精细地配置分流规则。
  4. 扩展性强:后期可通过购买支持 VLAN 的 AP 并配置 Trunk 口,轻松实现 WiFi 信号的覆盖扩展。

# 方案劣势

  • 配置繁琐:每新增一个 WiFi 接入点,都需要在软路由和 AP 上分别创建对应的 VLAN 和接口配置。
  • 稳定性风险:DIY 方案的稳定性相较于商用成品方案可能存在一定的不确定性。

# 设备采购

关于设备的选购,软路由方面我选择了支持六网口的 n100 工控机。然后工控机裸刷 istoreos。
ap 方面,公司之前用的是中国联通的一款路由,型号是 CMCC RAX3000M。支持刷写 openwrt。

# n100 工控机

# 商品详情

硬盘选择了默认的 8+128G,完全够用。详细的参数可以看下表。

项目 详细参数
CPU 集成 Intel® Celeron N100 0.8GHz 四核处理器,TDP 6W;可兼容 Intel® Alder Lake-N / Twin Lake-N 全系列 CPU
内存 1* SODIMM 插槽,单通道 3200MHz DDR4 内存,最大支持 16GB
存储功能 1* 7pin SATA 3.0 硬盘接口,传输速率达 6Gbps
1* M.2 Key-M 2280/2242 自适应 PCIE/SATA SSD 插槽
显示 集成 Intel® UHD Graphics 超核心显卡
1* HDMI 1 接口 (4K 60Hz)、1* DP 接口 (4K 60Hz),支持 HDMI、DP 同步 / 异步显示
网络功能 6* Intel i225 或 i226 2.5G 网卡,支持网络唤醒 / PXE
前置 I/O 接口 2* USB 3.0 接口、2* USB 2.0 接口
1* Console 接口、1* SIM 卡槽
1* DP+HDMI 双层显示接口(全部支持 4K 60Hz)
1* 硬盘指示灯、1* 清 COMS 按键开关
1* 来电启动拨码开关、1* 带电源灯开关按钮
后置 I/O 接口 6* Intel i225V 或 i226 2.5G 网络接口
1* 12V DC 电源输入接口
内置 I/O 接口 2* USB 2.0 (25pin 插针接口,可扩展 3 个 USB 2.0)
2
COM 插针
1* 硬盘供电接口
1* 前面板开关按钮和指示灯接口 2*5Pin
电源 采用 DC 12V 电源供电
工作温度 -10°C ~ 60°C
工作湿度 5% - 95% 相对湿度,无冷凝
尺寸 120mm x 120mm
风扇接口 背贴 CPU 无风扇散热设计,预留 1* 4pin CPU 风扇接口

# 评价与选择理由

这款 N100 工控机在性能与功耗之间取得了极佳的平衡,作为公司主路由具有显著优势:

  1. 性能强劲且冗余充足:N100 处理器的性能对于单纯跑 OpenWrt 来说绰绰有余,甚至可以说是 “性能过剩”。但这正是我们需要的,它保证了在高负载流量处理、复杂分流规则运算时依然流畅稳定,同时也为未来可能增加的 Docker 容器服务(如轻量级 NAS、DNS 服务等)预留了充足的算力空间。
  2. 接口丰富:6 个 2.5G 网口的设计非常适合作为核心路由,无需额外购买交换机即可满足多网段物理隔离或链路聚合的需求。
  3. 被动散热:无风扇设计意味着零噪音和更少的积灰维护,对于长期运行的网络设备来说,极大地提升了硬件寿命和可靠性。

# ap 路由

这里就不详细说了,总之就是一个拥有 4 网口的家用路由器,支持刷写 openwrt。

# 系统选择

看到上面我选择直接装 istoreos 这个时候有人又会说了

你这是浪费,你这是暴殄天物,纯纯浪费 n100 的性能!

因为是公司的网络,稳定性一定是第一位的,而且后面如果有需要,还能给软路由装 docker 来实现更多的功能,完全没有需求装一个 esxi 或者 pve 然后再装一个爱快和 openwrt 搞 all in boom。

我自己也有一台 j4125, 就安装了 esxi,这玩意的配置复杂性实在是不敢恭维。

至于为什么没有直接跑爱快而是选择跑 istoreos 的主要原因有两个:

  1. 公司网络需求要实现流量分流,如果安装爱快的话想要走 clash 分流还得搞虚拟机很麻烦。
  2. 爱快安装虚拟机的功能需要绑定账号,我担心一些已知的问题。

# 安装部署

# 需要工具

  1. 你的软路由
  2. 一个任意大小的 u 盘
  3. 一个显示器
  4. 一把键盘
  5. 一条 hdmi 线
  6. 网线若干。

然后等待所有设备都到了就可以开始部署设备了。

# 软路由刷机

软路由发货前商家已经给安装好了爱快软路由系统,咱们直接给他覆盖安装。

  1. 首先打开 istoreos 的官网,选择下载 x86 版本的到本地。
  1. 下载最新的 rufus releases 版本,将系统写入到 u 盘内。
  1. u 盘插入到软路由上的 usb 接口,然后接上显示器和键盘,插上电源线。
  2. 疯狂的敲击键盘上的 f2 键,然后在 bios 内更换第一个启动项为你的 u 盘。f11 保存并重启。
  3. 根据 istore 官网的教程安装 istoreos 到硬盘上
  4. 然后重启。
  5. 继续进入 bios,修改启动项为自己的硬盘。f11 保存重启。

istore 官网给了详细的安装教程:
x86 物理机

刷写完成后默认 eth0 口为 wan 口,其余口全部被划分为了 lan 口。

正常情况下将网线从光猫的 lan 口接入到 wan 口,然后配置一下 wan 口就可以正常上网了。

# 硬路由刷机

受限于篇幅可以具体查看我上一篇文章或者这篇知乎文章:
CMCC RAX3000M 算力版 EMMC 刷机 OpenWrt 教程&玩机报告

# 安装所需工具

# 安装 openclash

打开 openclash 的 github 页面,下载最新的 releases。咱们直接选这个带 all 标签的。

上面的描述内有详细的安装步骤,我这里大概说一下吧。
  1. 首先把下载好的包通过任意方式传入软路由的 /tmp 目录内。

可以使用 scp,或者系统里的上传文件,使用上传文件功能会传到 /tmp/upload/ 目录内,都一样。

  1. 使用 ssh 连接到路由器,或者使用 istoreos 提供的终端功能。
    执行下面命令:
1
2
3
4
5
6
7
#iptables
# 更新软件包
opkg update
# 安装依赖
opkg install bash iptables dnsmasq-full curl ca-bundle ipset ip-full iptables-mod-tproxy iptables-mod-extra ruby ruby-yaml kmod-tun kmod-inet-diag unzip luci-compat luci luci-base
# 安装插件,注意需要修改文件名。
opkg install /tmp/openclash.ipk
  1. 完成。

# 配置软路由和 ap

到这里就可以开始配置网络了。

# 配置软路由

首先将网线连接到软路由的 lan 口,另一头连接你的电脑或者笔记本。

# 0. 设置配置口,给自己留后路(重要!必做!)

软路由和 AP 路由在这一步的配置逻辑基本一致,以下以软路由为例进行说明。

  1. 分离物理端口
    进入软路由后台,导航至 网络 -> 接口 -> 设备 选项卡。找到并编辑 br-lan 设备。在 “网桥端口” 列表中,取消勾选最后一个物理网口(例如我这里是 eth5 ),将其从网桥中移除。其他设置保持不变,点击 “保存”。
  1. 新建管理接口
    返回 接口 选项卡,点击左下角的 “新建接口”。
  • 名称:建议命名为 configbackup
  • 协议:选择 静态地址
  • 设备:选择刚才分离出来的物理接口(例如 eth5 )。
    点击 “创建接口”。
  1. 配置 IP 地址
    进入新接口的配置页面,在 “常规设置” 中填写:
  • IPv4 地址:设置一个不常用的网段 IP,例如 192.168.210.1
  • 子网掩码255.255.255.0
  • 网关:留空即可。
  1. 配置防火墙
    切换到 “防火墙设置” 标签页,将 “创建 / 分配防火墙区域” 选择为 lan (或者你可以新建一个区域,但分配给 lan 最省事,能直接访问后台)。
  1. 启用 DHCP
    在 “DHCP 服务器” 标签页下,点击 “配置 DHCP 服务器” 按钮,确保启用 DHCP 功能,这样电脑插上就能自动获取 IP。

  2. 应用更改
    检查配置无误后,点击页面右下角的 “保存并应用”。

  3. 验证连接
    将电脑网线插入到刚才配置的 eth5 接口。检查电脑是否自动获取到了 192.168.210.x 网段的 IP 地址。尝试在浏览器访问 192.168.210.1 ,如果能正常进入 OpenWrt 后台,说明配置口设置成功。

# 1. 设置软路由的内网地址

因为我目前采用的拓扑结构是有一个主路由负责拨号,软路由负责策略设置。主路由的网段为 192.168.1.1/24 , 所以这里设置软路由的内网地址为 192.168.2.1/24 .

进入到软路由内,打开 网络-接口-接口 ,编辑 lan 接口的配置,将 ipv4 地址设置为 192.168.2.1/24 , 子网掩码不变。网关设置为 wan 口地址 192.168.1.2 ,然后保存配置。

这一步至关重要! 接下来配置 VLAN 很容易导致网络中断,一旦主 LAN 口配置错误无法连接,这个 config 口就是你的救命稻草,无需重置路由器即可恢复配置。

# 2. 设置虚拟交换机 Trunk 口

接下来就是配置 Trunk 口了,这里要格外注意。

进入到软路由内,打开 网络-接口-设备 ,编辑 br-lan ,进入 网桥VLAN过滤 标签页,勾选 启用VLAN过滤

如果你配置过交换机的话相信这里你已经会自己配置了,所以你可以跳过这一节。

我这里已经添加好了我自己的 lan 配置,你可以根据你自己的需求,添加 vlan。

这里会显示这个虚拟交换机内的所有接口。其中每一行代表一个 vlan,每一列代表这个接口在当前 vlan 的状态。第一行和第二行指示了这个虚拟交换机的所有接口以及接口的连接状态。

现在的操作是你需要指定一个 eth 口作为 Trunk 口,Trunk 口的意思是其只用于交换设备和交换设备之间的互联,这个口将用来连接 ap。

其余的口指定为 Access 口,意思为接入口,这个口用于接入计算机等终端设备。

接下来我将介绍每个接口的四种状态。

状态分为四种,分别是非成员(-),未打标签(U),已打标签(T),和是主 VLAN(*)。
每种状态的解释如下:

  • 非成员:是指当前接口不属于这个 VLAN,数据包不会从此接口转发。
  • 未打标签 (Untagged):即 Access 模式。数据包从此接口发出时会剥离 VLAN 标签(变成普通数据包);从该接口进入的数据包会被打上该 VLAN 的标签。通常用于连接电脑、手机等终端设备。
  • 已打标签 (Tagged):即 Trunk 模式。数据包从此接口发出时会保留 VLAN 标签;从该接口进入的数据包必须带有 VLAN 标签(除非匹配了 PVID)。通常用于连接支持 VLAN 的交换机或 AP。
  • 是主 VLAN (PVID):Port VLAN ID。当一个没有标签的数据包进入该接口时,会被默认归类到这个 VLAN ID。对于 Access 口,PVID 必须设置为其所属的那个 VLAN ID。

如图,这里我将 eth1 口指定为 Trunk 口。根据上面的规则,Trunk 口需要传输带标签的数据包,所以我们在这个端口下给需要透传的 VLAN 都设置为 “已打标签 (T)”。

文档中建议将 VLAN 1 作为管理 VLAN 或保留 VLAN。通常做法是:

  • Trunk 口 (eth1):在 VLAN 1 设置为 “未打标签 (U)” 并勾选 “主 VLAN (*)”,这样未打标签的管理流量也能通过;在其他业务 VLAN (如 VLAN 3, 4...) 设置为 “已打标签 (T)”。
  • Access 口 (其余口):在 VLAN 1 设置为 “非成员”;在它们所属的业务 VLAN (如 VLAN 2) 设置为 “未打标签 (U)” 并勾选 “主 VLAN (*)”。

我们这边将 VLAN 2 作为主办公网络的 VLAN。

我打算将软路由的剩余口全部都分给主 VLAN (VLAN 2),也就是公司内的所有设备接入到软路由的这些接口都会直接接入到这个 VLAN,其余设备通过 AP 来接入其他的 VLAN。

所以剩下的接口在 VLAN 2 这一行都选择 “未打标签 (U)”,并且勾选 “主 VLAN (*)”。

剩下的 VLAN 你可以根据你们公司的情况和需要自行添加。

修改完后点击保存,这个时候先别保存并应用配置。

不过就算你保存了问题也不大,我就大概说一下你保存了以后会发生的情况:

  • 保存应用完成后上面会弹出读秒,如果没问题的情况下读秒很快就会消失。但是如果当前机器连不上的话会一直在读秒,直到结束。等待结束后就会弹窗提示你是否还原配置,如果你之前没有设置配置口的话,这个时候一定得给他还原,还原后就又可以连上了。其实不小心点错了问题也不大,因为我们之前已经设置过备份口了,所以我们可以直接通过备份口来访问路由。

为什么会发生这种情况(端口无法上网)呢?

因为当你设置完 VLAN 之后,原有的 lan 接口可能还在监听 br-lan (默认是 VLAN 1),而你把物理口划到了 VLAN 2,导致逻辑接口和物理链路不匹配,或者还没有为新的 VLAN 接口配置 IP 地址。

所以正常的操作应该是:

# 3. 配置主 vlan 实现自动获取 ip 地址

第一部配置备份口时已经有类似的截图,这里我就不放了。

保存完成后 -> 切换到接口选项卡 -> 新建一个接口:

  1. 为这个接口取一个名字,例如 LAN_Office
  2. 协议选择为静态地址,设备选择刚才配置好的 VLAN 接口,也就是 br-lan.2 (代表 br-lan 上的 VLAN 2)。
  3. 然后为这个接口指定 IP 地址,指定子网掩码。切换到高级设置,使用自定义的 DNS 服务器输入刚才指定的 ip 地址。
  1. 指定防火墙区域(通常是 lan)和配置 DHCP 服务器。
  2. 配置完这些内容后,连接到这些 Access 口的设备就可以正常获取到 IP 了。

到此已经配置好了 VLAN,后期如果有需求的话还可以再回来添加 VLAN。

# 配置 AP 路由器

接下来开始配置 AP 路由器。

拔下连接到软路由的网线,插入 AP 路由的 LAN 口。

因为需要用到多 WiFi 的功能,所以需要支持 OpenWrt 的路由,具体我已经在设备选购里面说过了。

在配置前强烈建议您首先为 AP 划分一个配置口,因为 AP 的配置非常容易出问题。

这个路由器有四个接口:一个 WAN 口,三个 LAN 口。我这里将最后一个 LAN 口划分为配置口 (配置方法参考上面软路由的配置口设置)。

# 1. 修改防火墙

首先我们需要修改 AP 的防火墙设置,进入 网络 -> 防火墙

这张图已经包含了全部需要修改的地方:

  1. 关闭 启用 SYN-Flood 防御
  2. 入站数据出站数据转发 全部设置为 接受
  3. 在下面的 区域 => 转发 中,同样将所有都设置为接受。
  4. 最后保存并应用。

# 2. 设置 AP 模式

我目前刷写的 OpenWrt 系统不支持端口桥接设置,因此只能舍弃 WAN 口。

进入 网络 -> 接口 -> 接口 ,删除 WANWAN6 两个接口,保存并应用。

编辑 br-lan 接口:

  • 将其 IP 地址修改为和软路由同一个网段。因为软路由设置为 192.168.2.1 , 所以这里设置为 192.168.2.5 , 避开软路由。
  • 切换到 DHCP 服务器 标签页,勾选 忽略此接口 ,不在这个接口内提供 DHCP 服务。

保存并应用。

# 3. 设置 VLAN

进入 网络 -> 接口 -> 设备 ,和软路由一样,修改 br-lan 设备的配置,启用 VLAN 过滤。

我这里尝试过将 WAN 口 (eth0) 分配给 br-lan, 但一直显示插入网线状态,因此默认舍弃这个口。

和软路由一样,新建相同数量的 VLAN, 并且 VLAN ID 要和软路由的对应。我这里将第一个 LAN 口设置为 Trunk 口:

  • VLAN 1 保留,设置为 U*
  • 其余业务 VLAN 都设置为 T

将第二个 LAN 口划分到主 VLAN (VLAN 2), 设置为 U*

然后保存。

和软路由一样,还需要为新 VLAN 添加接口。注意两点:

  1. IPv4 地址要区分开软路由相同 VLAN 的 IPv4。比如软路由设置为 192.168.3.1 , 那么这里就设置为 192.168.3.2
  2. 高级设置中的 使用自定义的 DNS 服务器 设置为软路由该 VLAN 的 IP, 如 192.168.3.1
  3. 不要开启 DHCP 服务器,因为软路由已经提供了 DHCP 服务。

配置完成后,使用一根网线将软路由的 eth1 口 (Trunk 口) 连接到 AP 的 LAN1 口 (Trunk 口)。

# 4. 设置无线信号

切换到 网络 -> 无线 ,添加一个 5GHz 信号。

常规设置

  • 模式保持默认
  • ESSID 为无线网络的名字
  • 网络选择刚才创建的 VLAN 2 接口
  • 可选择隐藏 ESSID

无线安全

  • 设置加密方式和密码

其余设置暂时不用改,因为目前只是单 AP, 暂时不用配置 802.11r 等漫游功能。

到此为止,你已经配置好了软路由 + AP 的组网方案,连接无线网即可自动获取到 IP 地址。

# 5. 添加更多无线信号

如果后期需要添加无线信号,可以按照以下步骤操作:

软路由端

  1. 进入 网络 -> 接口 -> 设备 ,编辑 br-lan
  2. 网桥 VLAN 过滤 标签页中添加一行 VLAN (注意 VLAN ID 不要冲突)。
  3. 给 Trunk 口 (如 eth1) 打上标签 T , 保存并应用。
  4. 为新 VLAN 添加接口:设置 IPv4 地址 (如 192.168.6.1 )、子网掩码,网关留空。
  5. 高级设置中 使用自定义的 DNS 服务器 设置为本接口 IP ( 192.168.6.1 )。
  6. 分配防火墙区域,配置 DHCP 服务器。

AP 路由端

  1. 同样方式在 br-lan 中添加相同 VLAN ID 的 VLAN。
  2. Trunk 口勾选 T 标签。
  3. 添加接口:IP 地址与软路由同网段但不冲突 (如 192.168.6.2 )。
  4. 高级设置中 使用自定义的 DNS 服务器 设置为软路由该 VLAN 的 IP ( 192.168.6.1 )。
  5. 分配防火墙区域, 不开启 DHCP 服务器
  6. 切换到 网络 -> 无线 ,添加新的无线配置,网络选择新添加的 VLAN 接口,设置 SSID 和密码。

保存应用后,新的 WiFi 信号即可使用。

太累了,没想到写这篇博客这么累,剩下的有机会再补充吧,就是 clash 的一些配置。

# clash 配置文件编写

# 其他内容