OPNsense 分流教程

约 9 分钟阅读 · Gateway / Aliases / Policy Routing
示例 OPNsense LAN 为 192.168.1.1/24,CMSingBox 为 192.168.1.20。先创建旁路网关和别名,再用 LAN 防火墙规则选择设备与目标。

一、CMSingBox 端准备

在 CMSingBox 开启独立 DNS和透明代理,监听 DNS 0.0.0.0:53。直连 DNS 使用 udp://192.168.1.1:53,代理 DNS 内部入口保持 127.0.0.1:1053。确认 sing-box 正常运行。

二、创建 CMSingBox 网关

进入 System → Gateways → Configuration,新增 IPv4 网关:

字段值
NameCMSINGBOX_GW
InterfaceLAN
Gateway IP192.168.1.20
Far Gateway按版本需要启用
Disable Gateway Monitoring先启用,避免 ICMP 状态误判

应用后确认网关没有因监控显示离线而被策略规则跳过。

三、建立别名

进入 Firewall → Aliases,建立两个别名:

  • proxy_device:需要分流的客户端 IP。建议先设置静态 DHCP 映射。
  • proxy_cidr:目标网络,至少加入 198.18.0.0/15;纯 IP 应用可追加对应网段。
198.18.0.0/15
91.108.4.0/22
91.108.8.0/22
91.108.12.0/22
91.108.16.0/22
91.108.20.0/22
91.108.56.0/22
91.105.192.0/23
149.154.160.0/20
185.76.151.0/24
禁止环回proxy_device 中不能包含 192.168.1.20 或 OPNsense 自身。

四、配置 DNS

整个 LAN 使用

Services → DHCPv4 → LAN,把 DNS server 设为 192.168.1.20。

指定设备使用

进入 Firewall → NAT → Port Forward,创建 UDP 53 和 TCP 53 两条规则:接口 LAN,来源 proxy_device,目标 This Firewall/LAN address,重定向到 192.168.1.20:53。把自动生成的关联规则放在阻断规则之前。

五、配置策略路由

Firewall → Rules → LAN 新建 Pass 规则:

字段值
Sourceproxy_device,或全 LAN
Destinationproxy_cidr
GatewayCMSINGBOX_GW
Protocolany

将它移到普通 LAN allow、默认网关和阻断规则之前。若 OPNsense 开启自动回包检查后出现非对称路由问题,可只针对该规则检查 Disable reply-to/State Type,避免全局关闭状态防火墙。

六、出站 NAT

在 Firewall → NAT → Outbound 选择 Hybrid 模式,为 LAN 到 192.168.1.20 的流量建立源地址转换,使 CMSingBox 回包仍经 OPNsense。不要对 CMSingBox 自身的互联网出口再次套用旁路网关。

七、IPv6

尚未配置 IPv6 FakeIP 路由时,停止向这些客户端下发其他 IPv6 DNS。否则浏览器可能优先采用 IPv6 解析与直连,造成分流时好时坏。

八、验证与回滚

  1. 重新获取 DHCP,检查 DNS 和查询结果。
  2. 查看 Firewall → Log Files → Live View,确认规则命中。
  3. 检查 CMSingBox DNS 监控和代理控制台。
  4. 回滚时先禁用 LAN 策略路由与 DNS Port Forward,再恢复原 DHCP DNS。