Files
op-packages/isp-split/files/etc/isp-split.conf
T

172 lines
8.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# /etc/isp-split.conf
# openwrt-isp-split 配置文件
# ---------------------------------------------------------------- 多线路 DNS
#
# 为什么需要:只做"按目标 IP 纠线路"治标不治本。如果 DNS 查询本身走的是
# 另一条线,CDN 会返回那条线的节点,你拿着电信节点走联通线,速度差 100 倍。
# 让"从哪条线出去,就用哪条线的 DNS",CDN 才会主动把本运营商节点给你。
# 这是商业方案(如爱快)分流效果更好的关键,原理见 docs/DESIGN.md 的
# 「与商业方案(iKuai)的对比」一节。
#
# 每条线路对应的 DNS:<mwan3策略>:<DNS服务器>
DNS_TABLE="
wan_only:223.5.5.5
wanb_only:119.29.29.29
"
# 多线路 DNS 的「出线方式」
# bind = server=/域名/IP@接口,用 dnsmasq 的 SO_BINDTODEVICE 绑定出接口
# mark = server=/域名/IP + nft 给发往该 DNS 的 53 端口打上对应策略的标
#
# 怎么选:
# · 纯 dnsmasq 环境、没装 OpenClash → bind(更直接)
# · OpenClash 接管了 DNS,或解析器不是 dnsmasq → mark
# (mark 只看目标 IP,不关心是谁发的查询,抗干扰;也不依赖 @接口特性)
DNS_MODE="bind"
# 统计未命中任何运营商集合的兜底流量(status 里显示"兜底"行)
# 规则插在本工具规则块之后,命中集合的流量不会经过它
# 口径:ct state new —— 只计每条连接的**首包**。不加这一条时,若某个流
# 最终没拿到 conntrack 标记(例如 mwan3 的 default_rule_v4 被 enabled=0
# 关闭),同一连接的每个包都会重复计数,数字会按包放大。
COUNT_FALLBACK="1"
# 兜底计数是否排除 DNS(udp/tcp 任一侧端口 53)
# 1 = 排除(默认;出向查询 dport=53 与入向响应 sport=53 都不计)
# 0 = 不排除,保持旧行为
#
# 为什么默认排除:DNS 查询/响应本身不是业务流量——到网关(如 192.168.10.1:53)
# 的查询在本地就被应答,到运营商 DNS 的也只是解析开销。它们占兜底包数
# 比例很高,计进去只会稀释"未命中运营商集合的真实业务流量"这个口径。
# 排除按 UDP/TCP 源或目的端口 53 判断,不写死网关地址,所以无论查的是
# 本地网关还是运营商 DNS,查询和响应都不会被当成业务流量。
COUNT_FALLBACK_SKIP_DNS="1"
# 域名分流:<域名后缀>:<策略>
# 这些域名的解析会被强制从对应线路发出。
# 例如 B 站:联通自有 CDN(cn-*-cu-*)需要联通 DNS 才会解析出来。
DOMAIN_SPLIT="
bilivideo.com:wanb_only
bilibili.com:wanb_only
"
# 可选:外部域名清单目录,$DOMAINDIR/<策略>.txt,每行一个域名。
# 也兼容 felixonmars/dnsmasq-china-list 的 server=/domain/1.2.3.4 格式。
DOMAIN_LIST_DIR=""
# 运营商 IP 段数据源(单源兼容模式;ISP_SOURCES 为空时才用它)
#
# 这里保留 clang 的基址和 <源名>.txt 命名,是为了让 0.1.x 老配置在
# ISP_SOURCES 留空时逐字节保持原行为。默认多源配置见下面的 ISP_SOURCES。
ISP_MIRROR="https://ispip.clang.cn"
# ---------------------------------------------------------------- 多数据源(0.2.1 默认双源)
#
# 格式:每行一条 <名字>:<角色>:<镜像基址>
# 角色 primary 出数据(必须且只能有一个)
# verify 只用来跑日 diff,不参与合成
# audit 低频审计源(同样只跑 diff)
#
# 0.2.1 默认:"主源 + 校验源"(方案 c)
# · 主源换成 gaoyifan/china-operator-ip(MIT,BGP/AS_PATH 口径)
# · clang 只做运行时校验源:默认每天下载、跑 Jaccard diff,不参与合成
# · 校验源连续失败 1-2 天只降级;达到 ISP_SOURCE_MAX_FAIL_DAYS 天则拒绝更新
# · 主源失败立即冻结(保留旧数据),绝不自动换源——换源=换口径
#
# 留空 = 单源兼容模式:仍按上面的 ISP_MIRROR/<源名>.txt 拉取,
# 行为与 0.1.x 完全一致。老配置不需要改任何东西。
#
# 注意:升级时 opkg/apk 会保留用户已有的 /etc/isp-split.conf。这里改的只是
# 新安装的默认模板;已有配置里显式声明的 ISP_SOURCES 不会被覆盖。
ISP_SOURCES="
yfgao:primary:https://china-operator-ip.yfgao.com
clang:verify:https://ispip.clang.cn
"
# 每个源的"文件名映射":<源名>:<ISP_TABLE 里的源名>=<该源上的文件名>,...
#
# 必须显式声明:clang 的文件名是 chinatelecom.txt,yfgao 的同一个运营
# 商叫 chinanet.txt。按名字猜一定会错,所以这里只认声明。
#
# 规则:某个源只要声明了任意一条映射,映射里没列出的运营商默认不下载;
# 若该运营商已启用,主源会按历史命名 <源名>.txt 再试一次(兼容 0.2.0 老配置),
# 文件不存在时 fetch 直接报错。校验源/审计源只认映射,绝不去猜。
#
# yfgao 只有 chinanet/unicom/cmcc/cernet 四类运营商数据,没有
# chinabtn/gwbn/othernet/hk/mo/tw。所以 ISP_TABLE 里后六类默认保持 0(关闭);
# 若要启用它们,需要把主源换成提供这些文件的源,或自行补映射。
ISP_SOURCE_FILES="
yfgao:chinatelecom=chinanet,unicom_cnc=unicom,cmcc=cmcc,cernet=cernet
clang:chinatelecom=chinatelecom,unicom_cnc=unicom_cnc,cmcc=cmcc,cernet=cernet
"
# 是否启用校验源(0 = 不下载不校验;0.2.1 起默认 1)
ISP_VERIFY_ENABLE=1
# 分歧阈值:某个运营商的 Jaccard 低于这个百分比就拒绝本次更新(退出码 3)
# 实测正常值 95.7%-96.9%,口径切错时 64.6%-87.9%,90 是中间带
ISP_DIFF_MAX_JACCARD_DROP=90
# 单运营商地址数日变化上限(%),只在校验源启用时生效
ISP_DIFF_MAX_DELTA_PCT=3
# 校验源连续失败多少天后,从"降级继续"升级为"拒绝更新"
ISP_SOURCE_MAX_FAIL_DAYS=3
# 运营商表,格式:<源文件名>:<nft集合名/规则名>:<mwan3策略>:<是否启用>
#
# 顺序即优先级:排在前面的运营商优先占有重叠地址。
# 同一个 IP 只会出现在一个集合里,所以调整这里的顺序会改变归属,
# 但不会出现"规则先后决定归属"的隐性行为。
#
# 集合名同时也是 mwan3 规则名,mwan3 限制规则名 <=15 字符,
# 且不能以 mwan3_ 开头(该前缀为 mwan3 内部保留)。
#
# 策略名必须已在 mwan3 中定义,可用 `mwan3 status` 或
# `uci show mwan3 | grep policy` 查看。
ISP_TABLE="
chinatelecom:isp_tel:wan_only:1
unicom_cnc:isp_uni:wanb_only:1
cmcc:isp_cmcc:wanb_only:1
cernet:isp_cernet:wan_only:1
chinabtn:isp_tietong:wanb_only:0
gwbn:isp_gwbn:balanced:0
othernet:isp_other:wanb_only:0
hk:isp_hk:wanb_only:0
mo:isp_mo:wanb_only:0
tw:isp_tw:wanb_only:0
"
# 关于 othernet 默认关闭(实测教训):
# othernet 是"三大运营商以外"的集合(华为云、腾讯云、各类 IDC、
# 以及**公共 DNS** 如 223.5.5.5 / 119.29.29.29 都可能落在这里)。
# 启用它之后,路由器自己的 DNS 查询会被分到这条线上——如果这条线
# 恰好不可用,整个域名解析就挂了(实测:启用后所有域名解析失败)。
# 要启用它,先确认你的 DNS 服务器不属于该集合,或者给策略配好备份成员。
# 关于 cmcc(移动)默认走联通的实测依据:
# Steam 移动 CDN(39.134.x)实测 联通 22ms / 电信 72ms,联通明显更好,
# 而 Steam 下载是典型大流量场景,故默认给联通。
#
# 已知例外:B 站 PCDN(*mcdn.bilivideo.cn)虽然是移动段,
# 实测 电信 12-22 MB/s 而联通只有 0.04-1 MB/s。若你常用 B 站且命中 mcdn,
# 应改用域名/网段级覆盖,而不是把 cmcc 整体改回电信——
# B 站自有联通 CDN(cn-*-cu-*)恰恰需要走联通才快。
# 规则插入位置:在第一个匹配该正则的 mwan3 rule 之前插入运营商规则。
# 默认插在按端口/兜底规则之前、按设备/IP 的规则之后。
ISP_ANCHOR='dest_port|src_port|default_rule|https|internet'
# 每日自动更新(crontab 时间)
ISP_CRON="17 4 * * *"
# 分线测速用的接口与探测目标
PROBE_IFACES="pppoe-wan1 pppoe-wan2"
PROBE_BYTES=33554432
PROBE_TIME=25
PROBE_URLS="
https://mirrors.huaweicloud.com/ubuntu-releases/24.04/ubuntu-24.04.3-live-server-amd64.iso
https://mirrors.aliyun.com/ubuntu-releases/24.04/ubuntu-24.04.3-live-server-amd64.iso
"