博主头像
拾光记

保持热爱,奔赴山海。

头图

OpenWrt/iStoreOS 进阶玩法:Emby 极致加速方案(CF优选IP + 混合分流模式)

凌晨四点,看着 Emby 面板上跳动的连接速率,原本一直在转圈的 4K 画面突然秒开,那一刻的成就感,大概只有折腾过软路由的人才懂。
这篇文章,记录我是如何解决 Emby 直连 Cloudflare 卡顿的“最后一公里”。

01 前言

对于我们这种 NAS 玩家兼影音爱好者来说,最痛苦的瞬间莫过于:零食准备好了,可乐倒好了,姿势摆好了,结果电影开始转圈圈

很多 Emby 公益服为了节省成本,都套了 Cloudflare (CF) 的 CDN。但 CF 在国内的网络环境非常玄学:

  • 直连:要么速度慢得像蜗牛,要么晚高峰丢包丢到怀疑人生。
  • 全走代理:虽然稳,但流量跑得心疼,而且万一机场节点拥堵,体验依然不佳。

我一直在想,有没有一种“既要又要”的方案?
既能利用家里宽带的公网直连(省流量、跑满带宽),又能保证连接的稳定性?

经过几天的摸索和脚本调试,终于搞定了一套“混合加速模式”

  1. 直连优选:脚本自动筛选最快 IP,走本地宽带。
  2. 强制代理:顽固域名走机场,确保连通性。
  3. 全自动:每天凌晨自动维护,零人工干预。

02 准备工作

在开始之前,请确保你具备以下条件:

  • 硬件设备:一台安装了 iStoreOSOpenWrt 的软路由。
  • 核心插件:已安装并启用 Nikki (基于 Clash Meta/Mihomo 内核)。
  • 基础工具:SSH 连接工具(如 Termius, Putty 或 Windows 终端)。
  • 测速程序CloudflareSpeedTest (推荐 v2.2.5+ Linux amd64/arm64 版),上传至路由器的 /root/cf_speedtest 目录。

03 详细步骤

第一步:部署全自动优选脚本

我们需要一个脚本来完成“测速 -> 提取 IP -> 修改 Hosts -> 重启服务”的一条龙操作。

新建脚本文件 /root/cf_speedtest/auto_cf.sh,直接复制下面的代码:

#!/bin/bash

# ================= 配置区域 =================
# 1. 定义那些“直连还不错”的域名 (走本地宽带)
DOMAINS=("emby域名" "emby域名")

# 2. 测速地址 (使用 Cloudflare 官方大文件,确保测速准确)
URL="[https://speed.cloudflare.com/__down?bytes=50000000](https://speed.cloudflare.com/__down?bytes=50000000)"

# 3. 路径配置
CD_PATH="/root/cf_speedtest"
HOSTS_FILE="/etc/hosts"
# ===========================================

cd $CD_PATH
echo "🚀 开始测速 Cloudflare 优选 IP..."

# 1. 运行测速:测5次,取前5个结果
./cfst -t 5 -dn 5 -url $URL -o result.csv

# 2. 提取最佳 IP (取第2行第1列)
BEST_IP=$(sed -n '2p' result.csv | cut -d, -f1)

# 检查是否成功
if [ -z "$BEST_IP" ]; then
    echo "❌ 测速失败,脚本终止。"
    exit 1
fi

echo "✅ 测得最佳 IP: $BEST_IP"

# 3. 循环写入 Hosts
for domain in "${DOMAINS[@]}"; do
    # 删除旧记录
    sed -i "/$domain/d" $HOSTS_FILE
    # 写入新记录
    echo "$BEST_IP $domain" >> $HOSTS_FILE
    echo "   -> 已更新: $domain 指向 $BEST_IP"
done

# 4. 关键步骤:重启服务确保生效
# 重启 Dnsmasq 刷新系统缓存
/etc/init.d/dnsmasq restart
# 重启 Nikki 清除内核 DNS 缓存 (必须做!)
/etc/init.d/nikki restart

echo "🎉 优化完成!"

第二步:配置 Nikki (Clash Meta)

这是最关键的一步。我们要告诉 Nikki:“虽然你接管了网络,但这几个域名请听我的话。”

在 Nikki 的配置文件中,做如下两处修改:

1. 开启读取系统 Hosts

这一步是为了让 Nikki 能读到我们脚本写入的优选 IP。

use-system-hosts: true
  1. 设置混合分流规则

rules 区域添加以下规则(注意顺序):

rules:
  # === 策略 A:强制直连 (走优选 IP) ===
  # 这些域名会读取系统 Hosts 里的优选 IP,速度飞快且不费流量
  - DOMAIN-SUFFIX,emby域名,DIRECT
  - DOMAIN-SUFFIX,emby域名,DIRECT

  # === 策略 B:强制代理 (救活卡顿服) ===
  # 这个服直连太卡,怎么优选都没用,强制走代理节点
  - DOMAIN-SUFFIX,emby域名,🎬 Emby

  # ... 其他规则 ...

第三步:设置定时任务

最后,给系统上个闹钟。输入 crontab -e,添加一行,让它在每天凌晨 4 点夜深人静的时候自动寻找全球最快 IP:

# 每天凌晨 4 点自动运行
0 4 * * * /root/cf_speedtest/auto_cf.sh > /dev/null 2>&1

04 踩坑与故障排除

在折腾过程中,我也踩过两个坑,这里分享出来,希望大家少走弯路:

  1. 直连不生效(明明跑了脚本还是卡)

    • 原因:Nikki (Mihomo) 内核有自己的 DNS 缓存机制,即使 /etc/hosts 变了,它可能还在用旧 IP。
    • 解决:必须在自动化脚本的最后加入 /etc/init.d/nikki restart,强制重启 Nikki 以读取最新配置。
  2. 日志报错 too many open files

    • 原因:下载 BT 或连接数过多时,超过了 Linux 默认的文件打开数限制(通常是 1024)。
    • 解决:修改 /etc/init.d/nikki 启动脚本,在 start_service 里加上 ulimit -n 65535procd_set_param limits nofile="65535 65535"
  3. Nikki 不识别域名只显示 IP

    • 原因:电脑 DNS 缓存或浏览器开启了“安全 DNS”。
    • 解决:开启 Nikki 的“域名嗅探 (Sniffer)”功能,并关闭浏览器的安全 DNS 选项。

05 总结

折腾软路由的过程,其实和生活很像。我们总是在寻找最优解,但往往没有完美的方案,只有最适合当下环境的方案

通过这套方案,我实现了:

  • 走直连优选域名的emby:利用早晨 4 点测出的黄金 IP 直连,4K 秒开,带宽跑满。
  • 不支持优选域名的emby:走香港代理,虽然消耗一点流量,但胜在极其稳定,彻底告别晚高峰卡顿。

现在,这套系统每天凌晨默默运行,我再也不用操心线路问题。打开电视,就是高清流畅的画面,这或许就是技术带给生活的一点小确幸吧。

OpenWrt/iStoreOS 进阶玩法:Emby 极致加速方案(CF优选IP + 混合分流模式)
https://blog.wangziyang.top/index.php/archives/26/
本文作者 拾柒
发布时间 2026-01-13
许可协议 CC BY-NC-SA 4.0
仅有 1 条评论
  1. 评论头像

    写的不错,很有用看戏

    最爱绿皮小果。 January 23rd, 2026 at 04:45 am 回复
发表新评论