Benjy's Blog

「All In One 主机」— iKuai 二级路由与 OpenWrt 旁路由

2025-06-10

本篇记录网络层的配置过程。iKuai 承担二级路由和 DHCP 职责,OpenWrt 作为旁路由负责分流和 AdGuard 广告过滤,iKuai 的 DNS 和默认网关都指向 OpenWrt,实现全局网络过滤。之所以配一个 iKuai主要还是为了固定内网,同时 iKuai 的后台可以很方便的给设备修改网关和DNS服务器,结合2.5G网卡,内网也能轻松跑满机械硬盘的速度了。


网络架构回顾

1
2
3
4
5
6
7
8
9
10
11
12
13
14
互联网

上层路由器(192.168.124.x)
│ │ 主板千兆口 / vmbr0
│ └── PVE / 群晖 / 飞牛 / OpenWrt ← 仅需要管理时连接
│ i226-v 口1 / vmbr1
└── iKuai WAN
│ i226-v 口2 / vmbr2(2.5G)
└── iKuai LAN 192.168.11.1

├── WiFi6 路由器(AP 模式)← 家用设备日常连这里
├── 黑群晖 192.168.11.11
├── OpenWrt 192.168.11.13
└── 飞牛 OS 192.168.11.14

分工

  • iKuai:软路由兼 DHCP 服务器,管理整个 11 网段,将 DNS 和默认网关下发为 OpenWrt 地址
  • OpenWrt:旁路由,AdGuard Home 处理 DNS 过滤,passwall / homeproxy 处理科学上网分流
  • WiFi6 路由器:AP 模式,关闭 DHCP,提供无线接入,家用设备连它即可访问所有内网服务
  • 不需要走 OpenWrt 的设备,手动改回网关为 iKuai 192.168.11.1 即可

一、VM1:iKuai 软路由

创建虚拟机

项目 配置
CPU 2 核,类型 host
内存 2 GB
系统盘 8 GB,总线 SATA
网卡1(WAN) 桥接 vmbr1(i226-v 口1,接上层路由器)
网卡2(LAN) 桥接 vmbr2(i226-v 口2,2.5G 内网)
网卡3(LAN) 桥接 vmbr0(管理端口,接上层路由器)

安装

  1. 爱快官网 下载 64 位 ISO,上传到 PVE 的 ISO 镜像库
  2. 挂载 ISO 启动,按提示完成写盘
  3. 启动后控制台输入 set addr 192.168.11.1/24 eth1 设置 LAN IP(eth1 对应 vmbr2,即第二块网卡)
  4. 浏览器访问 http://192.168.11.1,默认账号密码均为 admin

基础网络配置

线路管理 → WAN(eth0,vmbr1,i226-v 口1)

  • 连接方式:DHCP(由上层路由器分配)
  • 开启「开机自动连接」

LAN 口配置

  • IP 设为 192.168.11.1/24(eth1,vmbr2)

WiFi6 路由器的 LAN 口用网线连接 i226-v 口2(vmbr2 的物理网口),在 WiFi6 路由器管理界面将其切换为 AP 模式(关闭 DHCP)。切换后路由器本身也会从 iKuai 获取一个 IP(建议在 iKuai DHCP 静态绑定中固定为 192.168.11.2),家里所有设备连接 WiFi6 路由器后即可正常访问内网。

DHCP 配置(关键:下发 OpenWrt 作为 DNS 和网关)

iKuai 的 DHCP 配置决定了所有内网设备的 DNS 和默认网关。要让 OpenWrt 承接 DNS 过滤和分流,需要将这两项都指向 OpenWrt:

DHCP 服务 → 自动获取 IP 配置

参数 说明
地址池 192.168.11.100 ~ 192.168.11.200 动态分配范围
默认网关 192.168.11.13 指向 OpenWrt,流量先经过旁路由
DNS 服务器 192.168.11.13 指向 OpenWrt AdGuard,过滤广告

将默认网关下发为 OpenWrt(192.168.11.13),内网设备的所有流量都会先经过 OpenWrt,passwall 等插件才能生效。如果只需要 DNS 过滤而不需要透明代理,只改 DNS 即可,网关保持 192.168.11.1

固定 IP 绑定:对群晖、飞牛等固定设备,在「DHCP 静态绑定」中通过 MAC 地址绑定固定 IP,避免地址漂移。


二、VM2:OpenWrt 旁路由

创建虚拟机

项目 配置
CPU 2 核,类型 host
内存 2 GB
系统盘 8 GB,总线 SATA
网卡1 桥接 vmbr0,VirtIO(备用管理 124.13)
网卡2 桥接 vmbr2,VirtIO(日常内网 11.13)

安装

ImmortalWrt 下载 x86_64 的 ext4 镜像,导入 PVE:

1
2
gunzip openwrt-*.img.gz
qm importdisk <VMID> openwrt-*.img local-btrfs

挂载磁盘为 scsi0,设为第一启动项,启动后通过控制台修改 LAN IP:

1
2
3
uci set network.lan.ipaddr='192.168.11.13'
uci commit network
service network restart

浏览器访问 http://192.168.11.13 进入 LuCI 管理界面。

旁路由基础配置

作为旁路由,OpenWrt 不负责 DHCP,只需要:

网络 → 接口 → LAN

  • IP 地址:192.168.11.13
  • 子网掩码:255.255.255.0
  • 网关:192.168.11.1(上游网关填 iKuai)
  • DNS:223.5.5.5(上游 DNS,AdGuard 会在本地拦截后再请求这里)
  • 关闭 DHCP(LAN 接口的 DHCP 服务器选「忽略此接口」)

安装 AdGuard Home

AdGuard Home 是开源 DNS 过滤工具,支持广告屏蔽、恶意域名拦截,效果比浏览器插件覆盖更广(全设备生效)。

方式一:opkg 安装(推荐)

1
2
3
4
opkg update
opkg install adguardhome
service adguardhome start
service adguardhome enable

方式二:手动安装

AdGuard Home Releases 下载 linux_amd64 的二进制包,解压后放到 /usr/bin/AdGuardHome,参考官方文档配置 systemd 服务。

AdGuard Home 初始配置

首次启动后访问 http://192.168.11.13:3000 完成向导:

  1. 管理界面端口:保持 3000
  2. DNS 监听地址:选 0.0.0.0:53(监听所有接口的 53 端口)
  3. 上游 DNS:填可靠的国内 DNS,如 223.5.5.5119.29.29.29
  4. Bootstrap DNS223.5.5.5

初始化完成后 AdGuard 接管 53 端口,后续管理界面通过 http://192.168.11.13:3000 访问。

配置过滤规则

进入 AdGuard Home 管理界面 → 过滤器 → DNS 封锁清单 → 添加封锁清单

推荐订阅的规则列表:

规则名称 地址
AdGuard DNS filter https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
EasyList China https://easylist-downloads.adblockplus.org/easylistchina.txt
anti-AD https://anti-ad.net/easylist.txt

添加后点击更新过滤器,规则立即生效。

查询日志(过滤器 → 查询日志)可以实时看到所有 DNS 请求,哪些被拦截、哪些放行一目了然,方便排查误拦截的域名加入白名单。

安装分流插件(passwall)

1
2
3
opkg update
# 先添加 passwall 的 feed(具体地址参考项目 README)
opkg install luci-app-passwall

在 LuCI → 服务 → PassWall 中配置节点和分流规则,国内流量直连、境外流量走代理。

与 iKuai 的协作验证

配置完成后,在内网任意设备上验证:

1
2
3
4
5
# 查看 DNS 服务器是否为 AdGuard(应返回 192.168.11.13)
nslookup example.com

# 查看默认路由网关(应为 192.168.11.13)
ip route show default

在 AdGuard Home 的查询日志中能看到来自各设备的 DNS 请求,说明流量正确经过了 OpenWrt。


踩坑记录

1、iKuai 断电后不自动拨号
线路管理 → 连接设置 → 开启「开机自动连接」,这个选项默认是关的。

2、AdGuard 误拦截导致某些 App 无法联网
在 AdGuard Home 的查询日志中找到被拦截的域名,点击「取消封锁」或加入自定义白名单(过滤器 → 自定义过滤规则)。

3、旁路由网关设置后某些设备无法上网
OpenWrt 的 LAN 接口要确认网关填的是 iKuai(192.168.11.1)而不是自身,否则流量会成环。同时确认 OpenWrt 开启了 IP 转发:echo 1 > /proc/sys/net/ipv4/ip_forward

4、OpenWrt 重启后 AdGuard 没有自启
确认执行了 service adguardhome enable,或在 LuCI → 系统 → 启动项 中手动勾选 adguardhome。


未完待续。

Tags: PVE