1. 传统旁路由方案的弊端

在传统的旁路由(透明网关)方案中,为了能够科学上网,内网设备需要以旁路由为网关,然后旁路由以主路由为网关来让设备正常联网。在这种网络结构中存在多种弊端,比如说当旁路由下线或者宕机了,那么所有以旁路由为网关的设备将直接失去与外网的连接(如下图所示)。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第1张
在本文,作者将介绍一种可以完美替代旁路由结构的网络搭建方案,可以有效的提升网络的速度和稳定性,并且还可以在此基础上再进一步对内网的各种协议、终端等进行管控。

2. 网络拓扑出处

非本文作者原创,此思路与网络结构出自 V2EX 上的《爱快 & OpenWrt 分流网络拓扑(单出口版)》文章,作者为 @putaosi博客Youtube 频道)。
建议各位可以先去看一遍原作者的文章,了解其中的逻辑之后再回来对比着看。
本文参考其中的逻辑将其应用于以 unRAID 为虚拟平台的 iKuai + Openwrt 网络结构中,其他的 NAS 系统也是一样可以实现的。

2024-05-20:原作者在 Youtube 上出了一期关于本网络架构的视频教程,推荐大家都去看看(记得关注频道哦)。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第2张

3. 物理环境与网络环境介绍

需要说明的是,只有一台设备的情况下博主并不建议做 AIO。我之前将我唯一一台 Unraid 设备用作 AIO 运行了一年半最后放弃了,因为很影响家里的网络。
  • 物理设备:使用设备为畅网 N5105(V3版),4 个 2.5G 网口(网卡型号为 Intel 的 i225-V ),虚拟机网口的分配和配置等请看下文。
  • 底层平台:底层使用 unRAID 作为虚拟化平台(后期我改成了 iKuai 作为底层系统,下文有说明)。
  • iKuai 虚拟机:作为主路由拨号(光猫已经设置为桥接)。
  • Openwrt 虚拟机:科学上网。
  • ISP:电信 300M 带宽。

4. 网络拓扑

原作者的网络结构如下:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第3张
博主根据其逻辑,整理出本文所实现的网络拓扑:
本文实现的网络结构本质上与原作者是一样的,读者朋友们需要理解其中的逻辑之后再根据自己的实际情况来实现(一开始不好理解,读者朋友们得多看几遍)。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第4张

4.1 节点设备说明

  • 作者内网网段10.10.10.0/24
  • iKuai
    • wan1 用于拨号连接到外网。
    • lan 地址是 10.10.10.1
    • wan2 接口的网关指向 Openwrt 的 lan 地址:10.10.11.2 —> 10.10.11.1
  • Openwrt
    • lan 地址是 10.10.11.1
    • wan 接口的网关指向 iKuai 的 lan 地址:10.10.10.6 —> 10.10.10.1

4.2 目标效果

当 iKuai 网段下的设备( 10.10.10.X/24 )访问国内的 IP 时,正常走 wan1 口访问外网;当访问的国外的 IP 时,借助 iKuai 的分流规则将访问国外 IP 的流量走 wan2 口出去,也就是发送给 Openwrt 的 lan 地址,然后 Openwrt 将数据加密后从它的 wan 出去,也就是将流量发送到 iKuai 的 lan 口,继而从 wan1 口出去访问外网。
iKuai 会实现初步的分流,然后当流量到达 Openwrt 时代理工具也会进行一次分流判断 —— 如果是国外的流量就走代理,如果不是在直连出去。

4.3 方案优势

  • 完美替代旁路由方案:可以完美替代如今用的比较多的旁路由(透明代理)方案,不再需要单独的将设备的网关设置为旁路由的地址。
  • 避免多次端口转发问题:避免了因旁路由而大致的多次端口转发的问题(从主路由转发端口给旁路由,再由旁路由转给对应的服务)。
  • 国内外流量直接分流:借助 iKuai 的分流规则可以直接对国内国外的流量直接分流。
  • 可以实现线路的冗余:如果 Openwrt 宕机了,也就是 wan2 线路断了,iKuai 内可以设置自动切换线路到 wan1 正常联网。
  • 可更好的利用 iKuai 的流控功能:除了分流之外,还可以更好的实现 QoS 等,并且还可以控制某个设备不走 Openwrt 代理。

4.4 缺点

  • 需更新 IP :需要定期维护国内 IP 地址表,根据作者建议,半年更新一次即可。
  • 不好维护:对于新手来说搭建起来会有难度,并且出问题时也不好维护。

5. iKuai 虚拟机配置和网口分配规划

iKuai 虚拟机的创建不难,到官网下载一个 ISO 安装文件(选择 32 位即可,64 位版本多一个虚拟机功能,但我们用不到),分配 1G 的虚拟硬盘安装即可,iKuai 的虚拟机安装步骤省略。
如果你是以 iKuai 作为底层系统,那么请一定选择 64 位系统进行安装。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第5张
由于我的 N5105 设备有四个网口,其中一个口被 Unraid 作为管理口使用不能进行直通,所以我这里将剩下的 3 个网口直通给 iKuai 虚拟机,并再多分配 1 个虚拟网卡:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第6张
直通的 3 个网口对应到物理设备的接线如下:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第7张
为什么将 eth0 与 eth1 直连

6. OpenWRT 虚拟机配置

2025年8月22日补充:
OP 的固件各位可以使用自己喜欢的固件,我个人目前正在使用 immortalwrt ,读者可以从这里下载固件( 24.10.2 版本):immortalwrt.org/releases/24.10.2/targets/x86/64
虚拟机 OP 的配置大家可以根据自己的实际情况来。如果家里需要走 OP 进行代理的设备量比较多,可以适当多给一些资源。像我自己的话,我的小主机 CPU 是 4 核 4 线程,32G 的内存,由于我的内存比较多,所以我分配给 OP 虚拟机 4 核 8G 内存(但实际上用不了这么多的内存,但反正内存够多)。
OP 的虚拟机设置
需要提供两个虚拟网卡:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第8张

7. iKuai 系统内设置

7.1 wan1 与 lan 设置

根据前面的网络拓扑,在 iKuai 系统内分别将 wan1 口和 lan 配置好。
wan1 设置(用于正常拨号)
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第9张
lan 设置
链路桥接两个 lan 口,这样网线无论插在两个口中的哪一个都可以正常访问到 iKuai。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第10张

7.2 wan2 设置

前面介绍 iKuai 虚拟机的配置时作者额外添加了一个虚拟网卡,那么这个虚拟网卡的作用是在 iKuai 内用于 wan2 口。
wan2 配置
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第11张
  1. 创建 wan2 并绑定虚拟网卡;
  1. 接入方式使用 静态IP(固定IP)
  1. IP 地址设置为另一个网段的 IP,具体是什么地址随意,这里作者使用的是 10.10.11.2 (作者自己内网的网段是 10.10.10.X,所以用 10.10.11.X 方便自己记住);
  1. 网关填写的是 Openwrt 的内网 IP 地址 10.10.11.1
  1. wan2 设置为默认网关;
  1. 使用线路检测功能,作用是当 Openwrt 离线了会切换到 wan1 继续正常联网,这里填写的 10.10.10.6 是 Openwrt 的 wan 地址。

7.3 添加分流规则

(1)添加“自定义运营商”

创建“自定义运营商”并将国内 IP 网段加入到此自定义运营商中
💡
2024-12-19 补充:除了下述手动添加 IP 地址的方式,也可以使用这个项目 joyanhui/ikuai-bypass 来自动添加/更新国内 IP 地址,具体的使用方法请参考链接里面的说明。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第12张
👉🏼 国内 IP 地址清单添加到新建的“自定义运营商规则”中(IP 地址列表来自 17mon/china_ip_list )。由于 iKuai 内自定义运营商最多只能添加 5000 条目的地址,因此需要分两次添加:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第13张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第14张
通过两次添加完成国内 IP 地址段
添加国内 IP 地址段的目的是为了能在 iKuai 上分流,也就是当你发起一个访问时,iKuai 接收到你的数据包后会查看你访问的 IP 地址是国内的还是国外的:如果是国内的就走 wan1 出去,国外的就发送给 Openwrt 走代理。

(2)添加“多线负载”分流规则

多线负载配置
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第15张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第16张
经不严谨测试,负载模式选择“源IP + 目的IP”效果会好一些,请大家自行测试。
  1. 运营商选择之前添加好的自定义运营商。
  1. wan1 线路负载比例设置为 1 并启用(wan2 不需要启用),表示只要是访问的目的 IP 地址符合自定义运营商里面的记录值(国内 IP),那么就会走 wan1 线路,也就是直联。
  1. 保存。

(3)添加“端口分流”分流规则防止 Openwrt 回环

端口分流配置
💡
配置“端口分流”的作用是防止回环:因为前面我们已经设置了多线负载 的功能,在这个功能下会实现 IP 分流,但如果说不为 OpenWRT 设置防环规则,那么就可能会出现 OP → iKuai → OP → iKuai → OP …. 的回环情况。
添加一条端口分流规则:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第17张
线路选择 wan1,负载模式如图,将 Openwrt 的 wan 地址(比如 10.10.10.6)设置分流的对象,表示 iKuai 在接收到 OP 的数据包时直接发往运营商线路出去:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第18张
负载模式也可以选择“源 IP”
2024-12-19:经不严谨测试,取消勾选“线路绑定”并且负载模式选择“主备模式”,在效果上貌似会好一些,请大家自行测试。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第19张

7.4 iKuai DNS 设置

💡
2024-03-20 补充:关于 DNS 这一块的问题,博主在第 13 章内容中提供了一个搭建 DNS 服务器的方法,大家感兴趣的可以去看看。
由于作者在 Openwrt 中使用 OpenClash 会自带有 DNS 服务器,所作者将 iKuai 的 DNS 服务器设置为 Openwrt 的 wan 地址(例如 10.10.10.6 ),读者朋友们可根据自己的实际来设置。
iKuai DNS 设置
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第20张
作者之所以将 iKuai 的 DNS 服务器设置为 OP ,是希望借助 OpenClash 的 DNS 功能去避免 DNS 污染的问题,读者朋友其实可以不去这么做,可以直接在 iKuai 上使用公共的 DNS 的即可,例如:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第21张

7.5 iKuai 添加“NAT规则”

在“网络设置 - NAT 规则”中添加规则,来让 OpenWRT 里面正确显示源 IP 地址。
如果不添加次规则,那么你会在 OP 里面发现所有发送到 OP 的设备的 IP 地址都会显示为 iKuai wan2 口的 IP 地址,而不是某个具体设备的 IP 地址。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第22张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第23张
  1. 动作:选择“过滤”,表示不做 NAT 。
  1. 出接口:选择 wan2 ,也就是说被分流发往 wan2 的数据包不对其数据包内的源 IP 地址进行更改。
  1. 协议:选择任意。
  1. 最后保存。

8 Openwrt 系统内设置

8.1 lan 设置

lan 设置
lan 口的设置只需要保证设置好 IP 地址和子网掩码即可,不需要填写 DNS 。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第24张
lan 的其他设置参考
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第25张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第26张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第27张

8.2 wan 设置

wan 设置
wan 口的设置需要填写好 IP 地址子网掩码网关,然后 DNS 服务器可以填写公共的 DNS ,也可以填写你在其他地方设置的 DNS 服务器。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第28张
wan 其他设置参考
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第29张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第30张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第31张

8.3 防火墙设置

(1)新建 wan 区域转发规则

新建 wan 区域规则(如果你用的 OpenWRT 固件里面已经配置好了 wan 防火墙,那么这里可以跳过)
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第32张
名称设置为 wan ,设置如下:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第33张
然后将 wan 口的防火墙设置绑定到所创建的区域中:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第34张

(2)防火墙 - 基本设置

防火墙设置
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第35张

(3)防火墙 - 自定义规则

防火墙自定义规则参考
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第36张
#iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
#iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
#iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
#[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
#[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
Bash
上图中的第一条规则的作用与防火墙基本设置中的“IP 动态伪装”是一样的,所以这里你可以在行首添加上 # 来注释掉此规则。
其余规则的作用是将 DNS 请求转发到本地的 53 端口。这里作者也选择注释掉,因为作者使用 Openclash 可以实现本地 DNS 劫持,所以不需要这里的规则:
如果你代理工具或者其他的 DNS 工具没有实现这一效果,建议你将 2~4 条规则启用(去掉 # ),表示劫持 DNS 请求到 OpenWRT 本地的 53 端口。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第37张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第38张
7874 是 OpenClash 的 DNS 监听端口

8.4 DHCP/DNS 设置

如果学校或公司内部认证功能出问题,请关闭“重绑定保护(rebind protection)”
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第39张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第40张

9 使用体验

经过以上设置之后,整体网络就搭建完成了,这里说一下使用体验。

9.1 网络流畅度提升

最大的体验是速度变快,网络访问变得流畅。
由于 iKuai 分流的作用,路由变得更加明确,因此整体网络的流畅度也得到了提升,并且无论是走国内流量还是走国外流量,都能够跑满带宽。
以作者的电信 300M 宽带为例,梯子测速和国内流量下载等都可以跑满带宽:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第41张
梯子测速
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第42张
百度网盘可跑满下载

9.2 网络更加稳定

如果使用以前的旁路由方案,如果当旁路由掉线,那么所有以旁路由为网关的设备都将直接断网。
采用了本方案之后,即使旁路由崩掉了,那么后果也只是无法科学上网而已,不影响整体网络的可用性。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第43张
即使 Openwrt 虚拟机下线了也不影响 wan1 线路的正常使用

9.3 端口映射问题得到解决

按照以前的旁路由方案,如果某一个设备以旁路由为网关且希望暴露某一个服务到公网上,那么就得从主路由做端口映射到旁路由,再从旁路由映射端口到对应设备上,采用了本方案后此问题不再存在。

9.4 网络更可控

结合 iKuai 的各种流控规则,可对家里的网络进一步调控,比如可控制各种网络协议、限流限速,还可以控制哪些设备不可以走代理等。
iKuai 使用“端口分流”控制局域网内 IP 不走代理
由于我们借助 wan2 口实现了请求转发给 OP 的作用,因此我们也可以借助 iKuai 的 端口分流 将不需要走代理的 IP 流量绕过 wan2 线路。
新建一条端口分流规则:
  1. 分流方式选择 外网线路
  1. 线路选择 wan1 ,也解释拨号的线路;
  1. 线路绑定;
  1. 负载模式选择 源 IP + 目的 IP + 目的端口 ,如果效果不佳可以选择 源 IP
  1. 协议选择 任意
  1. 源地址 中添加你希望不走代理的 IP 地址,也可以借助 iKuai 的分组功能实现 IP 分组;
  1. 最后保存规则即可。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第44张

10. 常见问题

Q:在此结构下,如何能保证正常访问 unRAID ?

A:取消 eth0eth1 接口的直连,将这两个口单独用网线与交换机相连,这样即使 iKuai 崩掉了也能够正常访问到 unRAID 。
在作者的这个案例里,我用一根网线将 unRAID 的管理口与 iKuai 的 lan 进行了直连,这种方式会存在一个缺点,那就是假如 iKuai 崩掉了,那么 unRAID 就无法访问。所以读者朋友们如果担心这种情况发生,那么取消直联,将 unRAID 的管理口接入到交换机或者充当了 AP 功能的路由器的网口即可。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第7张

Q:openWRT 如果宕机了会不会网络就不可用了?

A:不会。
OP 宕机了,那么 iKuai 会自动切换到 wan1 线路保证可以正常连接网络(前提是你在 wan2 线路里面勾选了自动切换设置),不会出现网络不可用的情况,仅仅只是无法科学上网而已。

Q:如何控制哪些 IP 不走代理?

A:详见 9.4、网络更可控

Q:如果我的设备只有两个网口,那么能否实现本文所说的网络结构?

A:可以实现。
具体的操作方法参考 11. 2023-07-24:底层由 unRAID 替换为 iKuai 系统 的章节末尾补充内容。

Q:为什么没有分流成功?

由于本网络结构相对较为复杂,会存在多种可能的原因导致不能分流,目前总结下来主要有以下几点可能:
  • 默认线路不是分流线路:没有设置为用于分流的 wan 口作为默认线路;
  • DNS 解析问题:如果设置的 DNS 服务器不能正确解析国外的域名,比如说访问 Google 时却解析回来国内的 IP 地址,那么就无法正常分流去走代理;
  • 被其他优先级更高的分流规则所影响:比如说 iKuai 的端口分流中设置了某些直连规则,导致只能进行直连,那么也就出现了不能分流的现象。
可以通过在 Windows 的 CMD 或者 Powershell 中运行以下命令,看一下访问 Google 的时候有没有进行分流:
TRACERT.EXE www.google.com 
Plain text
以下图为例:第一个跃点是 192.168.5.20 ,此 IP 为 iKuai 的 IP 地址,而第二个跃点则不是分流线路的 wan 口地址(比如 192.168.5.1 或其他读者自己所设置的 IP),那就说明分流没有成功。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第46张

11. 2023-07-24:底层由 Unraid 替换为 iKuai 系统

由于 i225-v 网卡在 Unraid 上存在速率不稳定且会出现断流的情况(主要是由于 Intel 导致的驱动问题),已将底层的 Unraid 替换为 iKuai 系统,但整体的框架依然是一样的。替换为 iKuai 之后,在 iKuai 上虚拟化一个 OP 系统,然后再按照本文 Unraid 的方法去部署即可,逻辑是是一样的。
更换为 iKuai 之后已经使用一段时间,目前一切稳定,没有出现 i225-v 网卡常见的断流、重启等问题,带宽也都能跑满。如果你也希望使用 iKuai 作为底层系统,在 iKuai 上虚拟化一个 OP 来使用,那么博主大致说一下步骤。
在 iKuai 中绑定一个物理网口用于创建与 OP 通信的 wan 口,创建 OP 虚拟机时候提供两个虚拟网卡,这两个虚拟网卡在 OP 里面用作一个 wan 口一个 lan 口,具体设置跟本文正文是一样的:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第47张
接着 iKuai 所创建的 wan 口与 lan 口连接起来。这里说的连接起来是指 wan 口与 lan 口能够互相访问,你可以用一根网线将 wan 与 lan 口直连起来,如果你设备上的 lan 口数量不足,那你也可以将 lan 口用网线接到交换机,让后也将 wan 口连接到交换机,这样 lan 就可以与 wan 通信。
补充:只有两个网口的情况下,如何实现第二个 wan 口。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第48张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第49张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第50张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第51张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第52张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第53张

12. 2023/09/20 补充:关于本网络结构下的 DNS 请求以及 OpenClash 的补充说明

💡
2024-03-20 补充:关于 DNS 这一块的问题,博主在第 13 章内容中提供了一个搭建 DNS 服务器的方法来配合这个网络架构使用。
在前文关于 iKuai DNS 设置中作者提到了由于本人使用 OpenClash,因此在设置 iKuai 的 DNS 服务器地址时我设置为了 OP 的 wan 地址,意思也就是说通过 OpenClash 去处理内网下的所有 DNS 请求。
这么做的好处是可以利用 OpenClash 的各种规则去实现关于分流、DNS 防污染等效果,但缺点是如果 OP 宕机了(或者说 OpenClash 出问题无法使用)那么就无法处理内网下的 DNS 请求,从而造成无法正常联网,会出现比如说 QQ 可以正常登录但是无法访问网页的情况。
其实关于 DNS 这一块的内容其实有不少可以注意的点,因此本章节会补充关于此问题的一些信息。
需要说明的是,本章节默认读者已经对 OpenClash 有一定的了解了,因此省略掉关于 OpenClash 一些基本知识的讲解。
(1)建议使用 Redir-Host 模式。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第54张
(2)关于 DNS 污染问题。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第55张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第56张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第57张
(3)将 DNS 服务器地址设置为 OP 也存在网络稳定问题。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第58张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第59张
(4)如果你使用的是 Fake-IP 模式,请不要使用端口分流来实现局域网 IP 不走代理。

13. 2024/03/11 补充:方案回顾与 DNS 解析服务器搭建(方案最后一块拼图)

各位新年好,先祝大家新的一年心想事成,万事如意!
距离本篇文章的发布也差不多过去了一年的时间,我了解到不少朋友第一次进到我的博客就是从这篇文章进来的,在 Google 显示的搜索排名里面,这篇文章也是占我博客热度的第一名,看得出来大家对这个网络架构比较感兴趣。
因此为了能更好的帮助大家搭建好这一套网络架构,本章将会回顾这个网络架构的一些细节以及优化 DNS 这一块的流程。

13.1 回顾

(1)使用体验

我说下我自己的使用体验。这个网络架构从我写这篇文章之前就一直使用至今,使用中也是一直观察和进行优化,可以说只要不是硬件有问题或者瞎折腾,基本上网络是不会出什么问题的。
唯一一次“事故”是由于我操作不慎,造成了广播风暴使得我的整个硬件设备出现了 CPU 过载,系统无效应不可操作,从而造成了家里的网络瘫痪。
但由于搭建起来有一定的难度,所以在我发布这篇文章之后有过不少网友(包括评论区)跟我咨询搭建过程中的一些问题该如何解决。
其实想要搭建好这个网络,最重要的是能理解这个架构的逻辑,只要能理解好这个逻辑,不管你用的是什么底层平台(PVE、ESXI 或是 Unraid 等)都能实现本篇文章所介绍的效果。

(2)架构逻辑

在文章的开头,我介绍了使用旁路由(透明网管)的一些弊端 —— 当所有流量都发送给旁路由的情况下,一旦旁路由出现宕机之类的情况,那么所有以旁路由为网关的设备将直接失去网络连接,而本篇文章所介绍的网络架构就是为了解决此问题而出现的。
这个架构的逻辑其实很简单,就是根据数据包的目的 IP 地址来判断是否需要进行分流 —— 也就是走代理还是走国内直连,这样就避免了旁路由模式中将所有的数据都发给旁路由的问题。
而 iKuai 的“多线负载”功能就可以实现这一目的。我们通过设置一个“自定义运营商”来添加国内 IP 地址网段,然后提供给“多线负载”功能作为 IP 分流依据:
  • 当数据包目的 IP 地址属于自定义运营商内的 IP 地址(也就是国内 IP),那么直联访问;
  • 当数据包的目的 IP 地址不属于自定义运营商内的 IP 地址(也就是国外 IP),那么就将数据包发送给 iKuai 里面的 OpenWRT 虚拟机,由里面的代理工具进行处理之后再发往 iKuai 。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第60张
自定义运营商添加国内 IP 网段
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第61张
wan1wan3 是运营商线路,表示如果目的地是国内 IP,那么就走直联
逻辑如下图所示:
在这个网络架构里面,发送给 OpenWRT 的线路是这个架构下的默认线路,换句话说就是所有 iKuai 接收到的数据都会默认发往 OpenWRT ,但因为有了“多线负载”功能,在走默认线路之前数据包会进行国内国外流量的分流。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第62张
同时即使 OpenWRT 出现了问题,那么也不影响整体的网络可用性,因为 iKuai 里面可以实现线路的自动切换,所以 OpenWRT 不能使用了那也仅仅只是不能走代理而已。
但如果说 OpenWRT 还负责内网的 DNS 解析工作,那么 OpenWRT 不能正常使用的情况下会造成内网设备联网不正常,这也是此章节所要解决的重点问题。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第63张

(3)DNS 解析问题

前面说过,这个网络结构下会依据数据包的目的地 IP 地址来进行分流,但正确分流的前提是能够获取到正确的 DNS 解析,如果说 DNS 解析出来的 IP 地址是不正确的(比如说 DNS 污染),那么就可能会造成不能正确分流。
在上面的关于本网络结构下的 DNS 请求以及 OpenClash 的补充说明内容中博主提到,由于我将内网下的 DNS 请求交由 OpenClash 处理,所以假如说 OpenClash 出问题(或者说 OpenWRT 出问题),那么内网就无法处理 DNS 请求,就会造成设备无法正常联网的情况。而且在我们这个网络架构下,OpenClash 负责内网 DNS 请求的情况下是无法使用 Fake-IP 模式的,这也会在一定程度上影响使用体验。
DNS 服务器出问题导致的一个常见现象就是 QQ 或者微信等 App 可以正常使用但是网页打不开。

13.2 解决 DNS 解析问题的方案

为了解决此问题,经过一段时间的使用,博主目前实验出了一套比较好用的方案,简单来说就是在 iKuai 中虚拟化一个 Linux 系统并搭建 PaoPao DNS ,将其作为这个网络架构下的 DNS 解析服务器,并且利用其 DNS 分流功能优化 DNS 解析流程,最终从根本上弥补本方案的不足。

(1)结构图

iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第64张

(2)架构说明

  1. 内网设备发起域名解析请求:内网设备访问某个域名时,向 PaoPao DNS 服务器发起 DNS 解析请求;
  1. PaoPao DNS 服务器处理请求:PaoPao 接收到 DNS 解析请求,根据内部的域名库判断此域名是否是国外域名:
    1. 如果是国外域名:那么发送给 OpenClash 的 DNS 监听端口(7874)进行解析,在 Fake-IP 模式下 OpenClash 直接返回 fake ip 给 PaoPao,PaoPao 再返回给解析结果;
    2. 如果不是国外域名:那么直接在本地进行解析,直接返回解析结果;
  1. 数据包发往网关:设备获取到 DNS 解析出来的 IP 地址,将其封装到数据包发送给网关 iKuai ;
  1. iKuai 进行 IP 分流:iKuai 接收到数据包后检查里面的目的地 IP 地址,根据“多线负载”的自定义网络运营商来进行分流:
    1. 如果目的 IP 属于国外 IP:发送给 OpenClash ,OpenClash 与代理服务器建立链接走科学;
    2. 如果目的 IP 不属于国外 IP:那么走直联;

(3)补充说明

  • 博主使用的是 OpenClash 的 Fake-IP 模式:在博主的使用环境中,我的 OpenClash 采用了 Fake-IP 模式。在先前的文章里面博主提到不建议使用 Fake-IP 模式,那是因为当时 DNS 的解析由 OpenClash 负责,使用 Fake-IP 会造成域名解析无法分流(区分国内国外进行解析),也就造成了所有流量都会流向 OpenClash 的情况,但是现在有了 PaoPao 之后就不存在此问题了。但是使用 Fake-IP 模式需要处理不少细节,所以从易用性角度来说,建议读者们使用 Redir-Host 模式。并且如果大家经常使用游戏平台,比如 Steam、橘子平台、Epic 平通、Xbox 或者 PS 等,那么最好也是使用 Redir-Host 模式。
  • 建议单独搭建 PaoPao DNS 服务器:由于作者使用的是 iKuai 作为底层系统,所以我选择了在 iKuai 里面再添加一个虚拟机来搭建 PaoPao DNS,读者可以根据自己的实际情况把 PaoPao DNS 搭建在其他的平台上面。你也可以将 PaoPao DNS 部署在独立的设备上,比如说树莓派,这样可以实现最大化的冗余。
  • 不要让 PaoPao DNS 服务器走 IP 分流:需要注意的是,如果 PaoPao DNS 服务器所处的环境有 IP 分流或域名劫持之类的功能,那么需要将 PaoPao 纳入不分流/不劫持的名单中,这是因为权威 DNS 需要准确的 IP 去判断,IP 分流会影响权威 DNS 的判断。由于我们当前这个架构有 IP 分流的功能,所以需要将 PaoPao DNS 服务器的 IP 地址加入不分流的名单,换句话说可以通过 iKuai 上面的端口分流功能指定 PaoPao DNS 走运营商线路出去(方法参考下文的 13.4 章节内容)。

13.3 PaoPao DNS 搭建

PaoPao DNS 是一个递归 DNS 服务器,它针对 China 大陆,还有智能根据 CN 分流加密查询的功能,也可以自定义分流列表,可以自动更新 IP 库,分流使用了 mosdns 程序,加密查询使用 dnscrypt 程序,针对 IPv4/IPv6 双栈用户也有优化处理。
PaoPao DNS 的作用就相当于你把 114 搭建在了自己家里,你再也不需要使用 114 或者 223 之类的公共 DNS 服务器了,而且解析速度比公共的 DNS 服务器更快。
PaoPao DNS 可以通过 Docker 进行快速部署,你只需要调整好相应的变量就可以直接部署到设备上。考虑到本方案的网络架构稳定性,我没有选择将 PaoPao 搭建在 OpenWRT 里面,而是另外再虚拟化一个 Linux 系统进行部署,这样最大化稳定性。甚至如果有条件的话,读者还可以拿单独的设备去搭建 PaoPao DNS 。
而 Linux 这一块我选择了 Alpine Linux:Alpine 是一个以安全为导向的轻量级 Linux 发行版,基于 musl libc 和 busybox ,它具有体积小、资源消耗低等特点。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第65张
官网地址:https://www.alpinelinux.org
Apline 有专门用于虚拟机环境的 .iso 系统安装镜像(下载地址),我下载的 x86 架构的虚拟机安装镜像大小只有 60M ,非常适合用来搭建 PaoPao DNS 。
参考:安装并初始化 Alpine 的流程
由于博主使用的是 iKuai 系统,所以这里就以 iKuai 作为底层系统介绍 Alpine 虚拟机的安装过程。根据 PaoPao 作者的建议,Docker 部署下的环境要求如下:
作者:docker 的运行家用建议内存 2G ,企业环境建议 16G ,再大了意义不太大(实际内存占用差不多达到 4G 已经很厉害了,当然,内存越大性能越好,命中率体验更棒),容器启动的时候会根据可用内存调整配置文件参数,占用内存不会超过上限。根据 Github 的使用者反馈,有最低 512M 内存的 ARM 路由器流畅使用的案例。实际上,在最低参数启动下的缓存也是能满足家庭使用需求的。
根据博主自己的实际情况,我选择给 Alpine 虚拟机分配了 4G 的内存,因为同时间我还需要在 Alpine 上面搭建 Adguard Home ,如果读者的设备上有足量的内存,多分配一些也是不错的。
1️⃣ 在 iKuai 文件管理中新建一个文件夹用来存放 Alpine iso 安装镜像以及虚拟硬盘,然后获取 iso 镜像文件路径。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第66张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第67张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第68张
2️⃣ 新建虚拟机
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第69张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第70张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第71张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第72张
3️⃣ 初始化 Alpine
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第73张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第74张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第75张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第76张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第77张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第78张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第79张
4️⃣ 配置 Apline 并安装 Docker 服务
打开虚拟机,输入 ifconfig 命令查看 Alpine 当前的 IP 地址:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第80张
(1)设置固定 IP 地址以及修改 DNS 服务器
(2)更改 APK 镜像源
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第81张
(3)安装 Docker 或 Docker-Compose
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第82张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第83张
(4)修改 Docker 镜像源
搭建好 Alpine 之后,参考下面的参数搭建 PaoPao DNS
mkdir /root/paopaodns
Docker

创建用于存储 PaoPao DNS 的文件夹

docker run -d 
--name paopaodns 
--restart unless-stopped 
--network=bridge 
-v /root/paopao:/data 
-e CNAUTO=yes 
-e IPV6=yes_only6 
-e CNFALL=yes 
-e USE_MARK_DATA=yes 
-e AUTO_FORWARD=yes 
-e AUTO_FORWARD_CHECK=yes 
-e CUSTOM_FORWARD=openclash的IP地址:7874 
-e TZ=Asia/Shanghai 
-e HTTP_FILE=yes 
-e SOCKS5=no 
-e CN_TRACKER=yes 
-e SAFEMODE=no 
-e UPDATE=monthly 
-p 53:53/tcp 
-p 53:53/udp 
-p 5304:5304/tcp 
-p 5304:5304/udp 
-p 7889:7889/tcp 
public.ecr.aws/sliamb/paopaodns:latest
Bash

docker CLI:使用 bridge 网络

docker-compose 搭建(推荐)
参数说明(更多参数请查看 Github 仓库 
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第84张
搭建好 PaoPao DNS 之后,你需要先给 PaoPao 指定一个固定线路出口避免被分流(参考下文的 13.4 章节内容),再通过下面的命令简单验证所有 DNS 组件是否工作正常
docker exec paopaodns test.sh
Bash
如果测试正常,那么你会得到 ALL TEST PASS 的输出结果:
如果测试后提示 yy[DNS hijack]127.0.0.181yyyyyyyyyy 不影响使用
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第85张
# docker exec paopaodns test.sh
*********************************************************************************

-> test start `1710869124`
```rust
[INFO] ALL TEST PASS.
```
-> test end `1710869128`

*********************************************************************************
Bash
如果显示 FAIL,可以执行 debug.sh 进一步分析原因:
docker exec paopaodns debug.sh
Bash

13.4 调整此网络结构下的 DNS 配置

当我们安装好 PaoPao DNS 服务器之后,我们需要对此网络结构进行如下调整。
1️⃣ 使用“端口分流”给 PaoPao DNS 服务器指定出口线路
注意:如果 iKuai 的“网络设置 - DNS 设置”里面开启了“强制客户端 DNS 代理”,那么请关闭,否则会影响 PaoPao DNS 服务器的正常工作。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第86张
由于权威 DNS 需要准确的 IP 去判断,IP 分流会影响解析的结果,我们需要让 PaoPao DNS 服务器避开 iKuai 上面的分流,因此就需要使用“端口分流”功能给 PaoPao DNS 服务器直接走运营商线路出去。
此外,一些软路由存在劫持 DNS 请求的情况,这种情形下可能就会造成 PaoPao 无法进行 DNS 解析,解决办法参见这个issue
配置方法
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第87张
  1. 线路:选择拨号线路(我这里的 adsl1 是运营商拨号线路)
  1. 线路绑定(可选):由于至绑定了一条线路,所以“线路绑定”是否勾选不影响,但如果说读者家里有多条宽带,那么最好勾选上;
  1. 负载模式:选择 源IP
  1. 协议:选择 udp
  1. 源地址:添加上 PaoPao DNS 服务器的 IP 地址;
  1. 最后保存
这么做的意义在于,PaoPao DNS 服务器只有在进行 DNS 解析的时候(DNS 解析使用 UDP 协议),才需要使用固定的线路出去,设置好了之后再通过测试命令检测一下 PaoPao DNS 此时是不是可以正常工作:
docker exec paopaodns test.sh
Bash
2️⃣ 调整 iKuai DHCP 服务器与 DNS
DHCP 服务器的 DNS 服务器设置为 PaoPao 的 IP 地址:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第88张
3️⃣ OpenWRT DNS 配置
1️⃣ DHCP/DNS 取消 DNS 转发
确保 DNS 不进行转发,因为在这个网络架构下,我们的目的就是要让 PaoPao 进行 DNS 解析。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第89张
2️⃣ wan 口的 DNS 服务器设置为 PaoPao DNS
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第90张
4️⃣ Alpine 自身的 DNS 调整
如果你和我一样同样是搭建了 Alpine 虚拟机来部署 PaoPao DNS ,那么在部署好了之后,你需要调整 Alpine 的 /etc/resolv.conf 文件,将 DNS 服务器设置为 127.0.0.1 ,也就是说宿主机使用 PaoPao DNS 进行域名解析:
nameserver 127.0.0.1
Bash

13.5 调整此网络结构下的 OpenClash 配置

关于 OpenClash 上面的 DNS 解析,可以参考 V2EX 上面的一个帖子《关于 openclash DNS 解析的疑问》
过时配置归档(不建议参考)
💡
不建议大家使用 Fake-IP,尽量使用 Redir-Host 模式。

(1)OpenClash Fake-IP 模式下的配置

1️⃣ 使用 OpenClash 的 Meta 内核
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第91张
2️⃣ 停用“本地DNS劫持”
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第92张
3️⃣ 开启“绕过中国大陆IP”功能
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第93张
4️⃣ DNS设置
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第94张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第95张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第96张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第97张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第98张
5️⃣ 其他配置参考
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第99张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第100张

(2)OpenClash Redir-Host 模式下的配置

1️⃣ 使用 OpenClash 的 Meta 内核
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第101张
2️⃣ 停用“本地DNS劫持”
这里建议把 OpenClash 的 DNS 劫持关闭。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第92张
3️⃣ 开启“绕过中国大陆IP”功能
然后将 大陆域名DNS服务器 设置为 PaoPao 的 IP 地址:
如果你的 Openclash 没有 大陆域名DNS服务器 这个配置,那么不用管,不影响使用。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第93张
此功能的作用是将大陆 IP 和域名进行直连,不经过 OpenClash 核心,关于 绕过中国大陆IP 更多的说明:
openclash 的绕过中国 ip 主要由两个模块组成
1. 在 iptables 中添加中国大陆 ip 段直接绕过的规则( ipset )
2. 使用一份国内站点域名表,添加至 dnsmasq 中,在这个域名表中的 将会使用 114.114.114.114 来进行解析为真实的 ip ,并不使用 clash 核心的 dns 解析,所以会返回真实 IP
综上,一个国内站点会获取到真实的国内 IP ,再被 iptables 放行。缺点是域名表不够全,只包含了主流站点,不够准确,并且这个列表比较大( 2m+),会导致 dnsmasq 启动较慢。
4️⃣ DNS设置
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第104张
  1. 开启 自定义上游 DNS 服务器
    1. Fallback DNS代理组 (支持正则匹配) :开启并选择一个代理组,意思就是使用代理组里面的代理来访问 Fallback 里面的域名服务器进行 DNS 解析。可以补充的是,有些朋友的 Openclash 并没有此项配置,那么你可以通过手动修改 FallBack 域名组里面的 DNS 服务器配置,手动指定通过策略规则去进行 DNS 请求,例如:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第95张
  1. 开启 Fakeback-Filter (关于 Fallback-Filter 的作用解释):读者朋友可以复制这里面的配置到你的 Fakeback-Filter 设置中,如果读者清楚这一功能的作用也可以自行配置。
  1. Nameserver-Policy (可选功能):这个功能的作用是对某一个域名指定使用某一个 DNS 服务器进行解析。假如说你希望使用 114 DNS 服务器解析 Baidu 的域名 ,那么格式为 '*.baidu.com': '114.114.114.114’
  1. 主机 (可选功能):一般用不上,不做赘述。
接下来分别添加 NameServerFallBack 的 DNS 服务器。
NameServer 服务器列表
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第106张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第97张
FallBack 服务器列表
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第108张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第109张
5️⃣ 其他配置参考
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第99张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第100张

2025/8/24 补充:
  • 如果读者使用 OpenClash 作为代理工具,那么推荐使用博主的配置文件(👉🏼 使用方法):
  • 如果你使用的是 Nikki,那么可以参照这里的教程去使用:Gitee推荐读者使用 Nikki,相对于 OpenClash 来说,虽然都是用的是相同的内核,效果上差别不大,但 Nikki 相较来说设置起来更简单一些。

13.6 PaoPao 相关的使用问题解决

2025/8/24:高负载问题(刷抖音链接暴增问题解决办法)
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第112张
2025/8/24:解析效果问题(外部运营商网络环境所限,无法正常递归的解决办法)
2025/9/4:⚠️ DNS 解析异常情况说明
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第113张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第114张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第115张

13.7 PaoPao DNS 解析规则配置

经过前面的一些列配置,我们已经在原有 iKuai & OpenWRT 的架构上面补齐了最后一块拼图 —— DNS 解析。由于我们将 DNS 服务器进行了单独的部署,并且通过调整原有架构上面关于 DNS 解析功能的配置,最终实现了 DNS 解析与代理这两个功能的分离,在架构上面更简洁和清晰。
前面说过,PaoPao 可以实现域名解析的分流 —— 国内域名 PaoPao 本地解析,国外域名发送给 OpenClash 进行解析。但如果说我希望某一个域名不发送给 OpenClash 进行解析,或者反过来我希望某一个域名只发送给 OpenClash 进行解析,那么这时候就需要编辑 PaoPao 上面的规则文件来实现这样的自定义效果。
1️⃣ 自定义规则文件
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第116张
2️⃣ 注意事项
3️⃣ 总结

13.8 进一步优化:配合 Adguard Home 的使用

如果你希望查看 PaoPao DNS 接收到了哪些 DNS 请求,或者说你想知道某个 IP 发起了什么 DNS 请求,又或者说你希望对某个 DNS 请求进行屏蔽,那么 PaoPao DNS 自身是不能实现这些需求的,因此我们可以再搭建一个 Adguard Home 作为 DNS 请求的入口,实现更具体的 DNS 请求统计、查询和管控等一系列功能。
需要说明的是,Adguard Home 在带机量大、过滤规则较多的情况下对设备的性能有一定的要求,如果你的设备性能有所欠缺,建议你谨慎使用。
本人不推荐在普通路由器上运行 AdGuard Home、Pi-Hole 等工具,路由器的性能对 AdGuard Home 的运行效率有着较大影响。根据本人测试,Pi-Hole 空载需占用 15MB 内存(不含缓存),AdGuard Home 空载需占用 20 MB 内存(不含缓存),AdGuard Home 带机 13 台、过滤规则 74000+ 条时占用 700MB 内存(含缓存)。 —— 少数派:AdGuard Home 安装及使用指北
1️⃣ 部署 Docker
2️⃣ DNS 配置
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第117张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第118张
3️⃣ 取消或提高 DNS 请求速度限制
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第119张
4️⃣ 其他设置
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第120张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第121张
(可选)去广告
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第122张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第123张
整体效果如下:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第124张
可以看到平均处理时间很低,只有 7ms

14. 相关网络优化

1️⃣ 优化 Fake-IP 模式下的 iKuai 多线负载功能
如果你和我一样使用 OpenClash 的 Fake-IP 模式,那么你可以这么去优化 iKuai 的多线负载设置:
(1)添加自定义运营商
将 Fake-IP 的 IP 地址段添加进去,但前提是你得在 openclash 里面设置 Fake-IP 的固定地址段,如下图所示:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第125张
然后创建一个新的自定义运营商:
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第126张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第127张
(2)创建多线负载策略
运营商选择之前设置的 Fake-IP 地址段自定义运营商,然后线路选择 wan2(也就是分流到 OP 的线路),负载比例设置为 1 ,负载模式选择 源IP+源端口
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第128张
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第129张
(3)保证 Fake-IP 的多线负载策略在第一位
由于 iKuai 的多线负载功能匹配顺序是按照先添加策略的那一个规则优先匹配(并且匹配到规则后停止后续的匹配),所以我们把 Fake-IP 的多线负载策略放到第一位,如下图所示:
如果你先前已经设置了国内 IP 段的多线负载策略,那么删除掉之后再重新添加即可让 Fake-IP 的多线负载策略实现第一顺位。
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第130张
这么做的目的在于,当需要走代理的时候,也就是访问访问 fake-ip 地址时,可以第一时间跳过国内 IP 地址段的匹配规则,从而快速将需要代理的流量发往 OP。


评论
  • Twikoo
昵称

邮箱

网址

0/500

98 条评论
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第137张
霄云 

上传yaml文件报错。提示:上传失败: Invalid config file format - missing required YAML sections。版本v0.47.006

 Windows NT 11.0
 Chrome 134.0.0.0
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第138张
Vonzen 

博主,你好,按这个方案设置好了之后,大部分都正常,就是IP+端口不能上网。比如宝塔之类面板无法登录,请问,要怎么解决?谢谢

 Windows NT 11.0
 Chrome 139.0.0.0
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第139张
Vonzen 
回复 @Vonzen :已经解决了,在代理软件设置端口全代理,或者把用到的端口全部设置就可以了。

 Windows NT 11.0
 Chrome 140.0.0.0
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第139张
Vonzen 
回复 @Vonzen :已经解决了,在代理软件设置端口全代理,或者把用到的端口全部设置就可以了。

 Windows NT 11.0
 Chrome 140.0.0.0
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第141张
duanyang5 

博主,想要开启ipv6看iptv,需要怎么设置呀?

 Windows 10
 Chrome 138.0.0.0
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第142张
Jackie Wu 博主 
回复 @duanyang5 :直接在 ikuai 的“网络设置 - IPV6 - IPV6设置”中创建内网 IPV6 设置就行,给 lan 接口配置 DHCPv6 服务器下发 ipv6 地址。具体设置教程可以百度一下,还是挺多的。

 Windows 10
 Chrome 138.0.0.0
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第143张
joanni 

博主您好,请问能基于https://github.com/joyanhui/ikuai-bypass做一篇教学贴吗?
跪谢!跪谢呀~

 Windows 10
 Chrome 137.0.0.0
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第144张
Koma 

博主你好,请问如果按照paopaodns那种方式搭建以后,也就相当于ikuai上的域名分流不再生效了,默认只有ip分流了?

 Windows 10
 Chrome 137.0.0.0
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第145张
Even 

博主您好,最近我的 iKuai 出现了 WAN2线路检测失败的问题,但是 WAN2 的线路检测设置是按照本文所示设置了 PING OpenWRT 的 WAN 口地址,并且在 iKuai 上 Ping OpenWRT 的 WAN 口地址也能正常 ping 通,但是 iKuai 无法通过 WAN2 口解析外部域名。想请问下是否是我的 OpenWRT 处缺少了什么设置?

 macOS Catalina
 Microsoft Edge 136.0.0.0
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第146张
zzz 

博主你好,按教程搭建成功,感谢分享!但是疑似有个小bug,!文中WAN2 设置时将 WAN2 设置为默认网关,我实测这样会导致终端监控中流量显示不正常,所以设备的流量都展示到op的wan了.改成wan1后正常.不知道是否特例?

 Windows 10
 Chrome 119.0.0.0
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第146张
zzz 
回复 @zzz :但是这样改会导致外网无法访问

 Windows 10
 Chrome 119.0.0.0
iKuai与Openwrt的有机结合:传统旁路由方案的完美替代 经验教程 第148张
爱吃大锅饭 

博主你看这个https://github.com/joyanhui/ikuai-bypass 这个方式方法是否稳妥?能不能出个教程啊?

 Windows 10
 Chrome 135.0.0.0
查看更多

参与评论