命令行参考
honk-core 提供引擎命令行接口,honk-tool 提供诊断工具。
honk-core
honk-core 加载配置、初始化控制面,并选择真实 eBPF 后端或 mock 后端。
调用格式
honk-core [OPTIONS] [COMMAND]| 参数 | 默认值 | 作用 |
|---|---|---|
-c, --config PATH | /etc/honk/config.dae | 配置入口文件。使用 --store db 时,仅在数据库为空或 API 导入时读取。文件模式下 mode、proxy 和 delay 也读取此路径。reload 忽略此项,仅向运行中实例发送信号;运行实例重载其启动时使用的路径。 |
--log-file PATH | 未设置 | 仅为本次引擎进程覆盖 global.log_file,不重写配置文件。相对路径在 global.data_dir 下解析,控制台日志保持启用。设置后,SIGHUP 会忽略被遮蔽配置值的变化,除非实际生效的目标发生改变。 |
-b, --bpf-object PATH | 内嵌目标文件 | 覆盖 ebpf 构建内嵌的目标文件。仅真实后端使用。 |
--bpf-pin-root PATH | /sys/fs/bpf | eBPF map 的 pin 根目录。 |
--disable-timestamp | 关 | 控制台日志行不再带时间戳。在 systemd 或其他自带时间戳的日志系统下使用;--log-file 或 global.log_file 指定的文件仍带时间戳。 |
-d, --debug | 关 | 当 RUST_LOG 未提供有效过滤器时,选择 debug 作为默认控制台过滤器。 |
--mock-ebpf | 关 | 使用 MockEbpfBackend,不加载内核 eBPF。若配置请求 global.nfqueue_enable: true,honk 会记录警告并仅在本进程关闭 NFQUEUE 暂存。 |
--store file|db | file | db 从 <data-dir>/state/honk.db 中的修订版本加载配置,数据库为空时导入 -c。见配置数据库。 |
--data-dir PATH | /var/lib/honk | 数据目录,状态数据库位于其下的 state/honk.db,必须与 global.data_dir 相同。供 --store db、config export 与 admin reset 使用。 |
两个二进制都提供 -h/--help 和 -v/--version。
请使用匹配版本的 core、honk-tool 和 BPF 对象;不兼容对象及 pinned handoff 布局按数据路径 ABI 契约拒绝。
CLI 与 Clash API 共用构建时版本号:发布构建使用 GitHub 标签名。本地 Git 构建使用 git describe --tags --always --match 'v*'(标签,或最近标签加提交距离与哈希)。没有可用 Git 元数据时使用 Cargo 包版本。运行时不依赖 Git。
日志级别优先级
源码注释记载的预期顺序是 --debug → RUST_LOG → global.log_level → info。当前可执行文件会先选择 debug/配置默认值,再调用 EnvFilter::try_from_default_env(),因此有效的 RUST_LOG 目前优先:
| 当前优先级 | 来源 | 行为 |
|---|---|---|
| 1 | RUST_LOG | 有效的 tracing 过滤条件覆盖所有默认值,包括 --debug。 |
| 2 | --debug | RUST_LOG 不存在或无效时使用 debug。 |
| 3 | global.log_level | 未指定 --debug 且没有有效 RUST_LOG 时使用。 |
| 4 | info | global.log_level 为空时使用。 |
log_level 见全局配置参考。
各级别含义固定,因此默认的 info 保持低频:
| 级别 | 含义 |
|---|---|
error | 配置要求的功能在人工处理前无法恢复:激活已提交但降级、进程停止、子系统永久停止,或内部不变量被破坏。 |
warn | 降级但仍在运行,进入该状态时记一次:采用回退路径、资源达到上限、节点或组变为不可用、新配置被拒但旧配置继续运行。每个 DNS 查询都会重复的失败(SERVFAIL、singleflight 饱和)最多每 10 秒告警一次。 |
info | 启动、停止、激活、运维操作,以及从告警状态恢复。 |
debug | 单个连接、请求和 DNS 查询的结果,包括单次拨号与转发失败,以及周期维护结果。native flows 也记录同样的逐 flow 结果。 |
子命令
| 命令 | 当前行为 | 持久化 / 运行时影响 |
|---|---|---|
reload | 从已加锁的 /run/honk-core.lock 读取 PID 并发送 SIGHUP。 | 只报告信号成功送达;运行中进程随后记录 applied 或 rejected。mock 实例不持有该锁。 |
mode <rule|global|direct> | 加载 --config,将参数字符串赋给 experimental.clash_api.default_mode,并在重写结构化格式文件前完成校验。.dae 文件会被拒绝且保持不变,因为 writer 无法保留 dae 语法、注释或 include;请直接编辑这些源文件,或使用 .toml、.yaml、.json。 | 仅修改文件;不联系运行中的引擎,也不更改 dial mode。接受的字符串不同于正常 dial mode 值 ip、domain、domain+、domain++。 |
proxy <group> <node> | 检查组名和节点名各自存在,然后打印请求的选择;不检查节点是否属于该组。 | 不写入任何内容,也不联系运行中的引擎。 |
config export --out PATH [--without-secrets] | 把配置数据库的当前修订版本写成一份 .dae 文件;未给 --without-secrets 时补回监听凭据。无论守护进程是否运行,都通过以读写方式打开的 query-only 连接读取数据库。关闭该连接不会执行检查点,也不会删除 honk.db-wal;除 SQLite 可能创建的 -shm 索引外,唯一可能的写入是回滚崩溃遗留的日志。文件写完后才发布。 | 以 0600 权限新建 PATH,拒绝已存在的文件。 |
admin reset | 从 --data-dir 下的状态数据库删除密码模式管理员,下次启动时重新开放 setup。 | 任何 honk-core(包括 mock 模式)打开该状态数据库时拒绝执行。 |
delay <node> [-u|--url HOST:PORT] | 建立一次原始 TCP 连接,超时五秒,并打印耗时毫秒数。未给 --url 时使用节点服务端地址。 | 不经过代理,不是 HTTP URLTest,也不联系运行中的引擎。 |
编译路由发布计数器耗尽后需重启;它与普通 SIGHUP 及 DNS 运行时重载分开计数。
使用 --store db 时,proxy 与 delay 读取当前修订版本,mode 拒绝执行。
真实数据面进程在其生命周期内持有该锁。reload 会先确认文件仍被锁定,再信任其中的 PID;kill(2) 成功送达并不表示候选配置通过校验或需重启字段检查。
环境变量
| 变量 | 作用范围 | 当前行为 |
|---|---|---|
RUST_LOG | 两个二进制 | Tracing 过滤条件。对 honk-core 采用上述当前有效优先级;honk-tool 在未设置时默认 warn。 |
HONK_UI_DOWNLOAD_URL | 启用 clash-api 的 honk-core | dashboard ZIP URL 的最高优先级覆盖;已配置的外部 UI 目录需要下载时,它会覆盖 assets.ui.url。 |
HONK_POOL_DISABLE=1 | honk-core | 绕过 Ready 流与裸 TCP 两类池,每次全新拨号。代码也接受不区分大小写的 true;首次使用后缓存该值。 |
HONK_QUIC_GSO=0|1 | QUIC 出站 | 强制关闭/开启 UDP GSO。未覆盖时,保守的 1252-byte MTU 保持关闭;显式设置更大的 mtu 时自动开启,并把批量限制为最多 16 个 segment。 |
HONK_QUIC_BBR=v1|v3 | QUIC 出站 | 选择 bbr 拥塞控制背后的实现:TUIC congestion_control: bbr、Juicity,以及未设上传速率的 Hysteria2。v3 是 BBRv3。v1 是 quinn 原有的 BBR,不响应丢包;在高带宽时延积路径上,quinn-proto 0.11.16 及以上的接收端可能以 too many gaps in stream buffer 中止其上传。默认 v3;其它值会告警并保持默认。 |
HONK_MI_COLLECT_SECS | 启用 mimalloc 的 honk-core | 每个 owner 工作线程的空闲回收间隔。周期性 rendezvous 仅在其余工作线程均空闲时唤醒持续 park 的 owner,强制回收仍由各 owner 的 park 钩子执行。默认 60;0 同时关闭钩子与 rendezvous;无效值回退为 60。 |
MIMALLOC_PURGE_DELAY | 启用 mimalloc 的 honk-core | mimalloc 自带的 purge 延迟(毫秒):已释放页面在归还 OS 前保持 committed 的时间。honk 启动时设为 100(mimalloc v3 默认 1000),在连接、探测与 DNS 的频繁分配场景下降低 RSS,批量 relay 的吞吐与 CPU 无可测量变化。环境变量中设置的任何值都优先,包括无法解析的值(此时保持 mimalloc 的 1000)。0 立即归还(RSS 最低、CPU 略增),-1 从不归还。 |
TOKIO_WORKER_THREADS | honk-core | Tokio 自带的工作线程数量;honk-core 使用默认多线程运行时,默认数量等于核数。必须是正整数:0 或非数字会使 Tokio 在启动时 panic。每个工作线程持有独立的分配器堆,在多核网关上调低该值可降低 RSS。实验室测量采用 4 核主机、120 条连接和 DNS:16 个工作线程约 85 MiB,8 个约 66 MiB,4 个约 60 MiB。CPU 差异在噪声内。中继路径运行在这些工作线程上,应按流量设置。 |
HONK_VMLINUX_BTF | 启用 ebpf 的 honk-core | 覆盖进程名路由和原生 UDP 接收追踪共用的原始内核 BTF。文件必须匹配运行中的内核。显式指定的文件不可读或无效时,拒绝真实后端启动,不会静默回退到其他文件。TCP 归属证明不读取内核结构,也不依赖它。 |
DAE_LOCATION_ASSET | 两个二进制的 Geo 加载 | 最先检查其中的 geoip.dat 与 geosite.dat。 |
UDP NFQUEUE 没有环境变量开关,默认由 global.nfqueue_enable 开启;设置为 false 可关闭。见全局配置参考与 NFQUEUE 设计。
eBPF 与运行时路径
| 项 | 控制方式 | 当前不变量 |
|---|---|---|
| eBPF 目标文件 | 内嵌目标文件或 --bpf-object PATH | 启用 ebpf 特性时,build.rs 提供由 include_bytes! 内嵌的目标文件;该参数在运行时替换这些字节。对象声明的 ByName pinning 会在 probe/loading 前被拒绝:需使用未 pin 的 map 重新构建,将 pin 路径交由 core 管理。未启用 ebpf 的构建使用 mock 后端。 |
| 内核 BTF | HONK_VMLINUX_BTF、/sys/kernel/btf/vmlinux 或 /usr/lib/debug/boot/vmlinux | 未覆盖时读取 /sys/kernel/btf/vmlinux,不可读时再读取 /usr/lib/debug/boot/vmlinux(OpenWrt vmlinux-btf 包)。只接受原始 BTF;若只有 ELF 格式的 debug vmlinux,需先提取其 .BTF 段,再用该变量指向提取结果。所选 BTF 统一提供内核字段偏移、Aya loader 的目标 BTF 和接收追踪的函数签名。BTF 缺失或无效时拒绝启动。内核 argv 捕获不可用时仍可回退到线程 comm。原生 UDP 接收追踪另需内核自带 BTF 与 ftrace,缺少时降级运行;外部文件不能替代它们。 |
| Pin 根目录 | --bpf-pin-root PATH | 默认 /sys/fs/bpf,传给真实后端用于 pin map。 |
| Bypass mark | global.so_mark_from_dae | 拨号、探测、DNS 与下载使用的精确套接字 mark;零值选择默认 0x100。修改需重启,见套接字 mark。 |
| TPROXY mark | 编译期常量与配置校验 | TPROXY_MARK = 0x08000000;global.tproxy_mark 必须等于该值。 |
| Geo 资源 | 运行时路径搜索 | 依次检查 DAE_LOCATION_ASSET、global.data_dir、旧根目录 /var/share/honk、工作目录、/usr/local/share/honk、/usr/share/honk、/usr/local/share/dae、/usr/share/dae、/etc/dae;每个候选都必须是普通文件。 |
honk-tool
honk-tool 用于订阅探测、已固定 map 检查、引擎健康检查与离线 Geo 资源搜索,不加载或挂载 eBPF 程序。
构建与部署
普通开发构建:
cargo build --release -p honk-tool部署到网关时,使用仓库的 Zig 包装器构建静态 musl 目标,并复制单个二进制:
ZIGCC_TARGET=x86_64-linux-musl \
CC_x86_64_unknown_linux_musl=$PWD/ci/zigcc \
CXX_x86_64_unknown_linux_musl=$PWD/ci/zigcxx \
CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER=$PWD/ci/zigcc \
CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C link-self-contained=no" \
BINDGEN_EXTRA_CLANG_ARGS="$(ci/zig-bindgen-env x86_64-linux-musl)" \
cargo build --release -p honk-tool --target x86_64-unknown-linux-musl
scp target/x86_64-unknown-linux-musl/release/honk-tool root@GATEWAY:/tmp/当前 just build-musl 与 just deploy-vyos 任务只构建和部署 honk-core,不包含 honk-tool。GNU 链接的构建可能无法在纯 musl 网关上执行。
命令族
| 命令族 | 用途 |
|---|---|
sub | 拉取或解析节点,并探测 TCP 地址族、URLTest 与受支持的 UDP 路径。 |
bpf | 读取并解码运行中引擎已经 pin 的 map。 |
diagnose | 执行只读的引擎、网络设施、map 与 API 健康检查。 |
geosite | 列出、检查和反向搜索 geosite.dat。 |
geoip | 列出、检查和最长前缀搜索 geoip.dat。 |
二进制提供 -h/--help 和 -v/--version。每个命令族与操作也有帮助信息。构建版本与 honk-core 一致。
sub
honk-tool sub <url|file|-> [--target HOST:PORT] [--url TEST_URL]
[--udp-check HOST[:PORT]]
[--timeout SECS] [--concurrency N] [--limit N] [--ua UA]
[--tls-implementation tls|utls] [--utls-imitate PROFILE]
[--v4-target IP:PORT] [--v6-target [IP]:PORT]| 参数 | 默认值 | 含义 |
|---|---|---|
<url|file|-> | 必填 | HTTP(S) 订阅 URL、已有本地订阅文件,或 -。- 从 stdin 读取且只接受一个 HTTP(S) 订阅 URL;不会从 stdin 读取订阅正文。 |
--target HOST:PORT | cp.cloudflare.com:443 | 主机用于地址族探测的 HTTPS 请求 URL(TLS SNI 和 Host 标头);主机和端口用于 QUIC 探测。未指定 --v4-target/--v6-target 地址覆盖时,地址族探测解析此主机并使用此端口。UDP DNS 探测目标由 --udp-check 单独指定。 |
--udp-check HOST[:PORT] | dns.google:53、8.8.8.8、2001:4860:4860::8888 | UDP DNS 检查目标,默认取自 honk-config 中的引擎列表。可重复指定或用逗号分隔。优先采用首个可解析为 IP 地址或套接字地址的目标,否则仅在节点支持 UDP DNS 探测时解析列表首项。省略端口时使用 53。 |
--url TEST_URL | https://www.gstatic.com/generate_204 | 经代理的 URLTest 目标。 |
--timeout SECS | 5 | 每项探测的超时。 |
--concurrency N | 10 | 并发节点探测任务上限。 |
--limit N | 0 | 仅探测前 N 个节点;0 表示全部。 |
--ua UA | 未设置 | 远程订阅拉取使用的 User-Agent。 |
--tls-implementation tls|utls | tls | 探测使用的进程级 TLS ClientHello 实现。 |
--utls-imitate PROFILE | chrome_auto | utls 使用的指纹配置方案;当前校验器只接受以 chrome 开头的名称。 |
--v4-target IP:PORT | 1.1.1.1:443 | v4 连通性探测使用的显式 IPv4 地址。 |
--v6-target [IP]:PORT | [2606:4700:4700::1111]:443 | v6 连通性探测使用的显式 IPv6 地址。 |
远程订阅与本地文件共享引擎的自动格式识别:
- 编码或原始分享链接。
- Clash YAML/JSON、SIP008 和 sing-box JSON。
- 受支持的 Surge/Surfboard/Loon/Quantumult X 记录。
不支持的节点会被跳过,不打印原始输入。使用 - 可避免把含凭据的订阅源 URL 放入 argv 和进程列表。
对每个节点,命令报告:
- 服务端地址族。
- 完整的代理 IPv4/IPv6 交换。
- 经代理的 URLTest 延迟。
- 经数据包处理器的 DNS 查询。
- 经该处理器的真实 QUIC 握手。
VLESS 行使用以下脱敏格式,不包含端点、UUID、REALITY 密钥、SNI 或 URL 查询参数:
vless/{plain|tls|reality}/{tcp|ws|grpc|xhttp}[/vision]/tcp={plain|h2mux|mux-cool}/{udp-fallback=auto|native|xudp|uot-v2|udp=disabled}[/padding=true|false][/mux=TCP:UDP:POLICY]| VLESS 输出字段 | 含义 |
|---|---|
tcp= | 有效 TCP 路径。 |
udp-fallback= | 规范化后的回退值,即使 H2MUX 或 Xray 多路复用已接管目标 UDP 路径。 |
udp=disabled | 禁止数据包拨号。 |
padding= | 仅在 H2MUX 中出现。 |
Xray 多路复用 TCP | 每条 TCP 承载连接的有效逻辑子流并发数;0 表示关闭。 |
Xray 多路复用 UDP | protocol、shared,或独立 UDP 池中每条承载连接的逻辑子流并发数。 |
Xray 多路复用 POLICY | UDP/443 策略:reject、skip 或 allow。 |
输出格式示例:
vless/tls/tcp/tcp=plain/udp-fallback=nativevless/reality/grpc/tcp=h2mux/udp-fallback=auto/padding=truevless/tls/tcp/vision/tcp=plain/udp-fallback=auto/mux=0:8:allow
xhttp 表示 H2 XHTTP 传输;该行不暴露 path、HTTP host、自定义标头或填充内容。模式及支持参数见节点参考。
| 探测资格状态码 | 网络操作 |
|---|---|
supported | 可执行探测。 |
invalid-uuid、invalid-reality、invalid-config | 条目仍显示,但不执行网络操作。 |
unsupported-transport、unsupported-flow、vision-without-tls、vision-non-tcp | 条目仍显示,但不执行网络操作。 |
Vision 的 TCP 要求符合条件的直接承载连接;仅 UDP 的 Xray 多路复用仍然有效。VLESS Encryption 可以与 Vision 组合。只有未加密 Vision 还要求裸 TCP 使用 TLS 1.3 或 REALITY。
n/a 表示探测不适用,例如数据包拨号被关闭,或 UDP/443 策略拒绝该目标。本地承载连接容量拒绝是已尝试后的 terminal failure,显示为 FAIL(...) 而不是 n/a,且不影响远程端点健康状态。共享的全局文件描述符预算所能接纳的物理 VLESS 承载连接可能少于各节点 mux 上限之和。
UDP DNS 目标解析、数据包传输建立、发送与接收共用一个 --timeout 预算。解析失败或超时只体现在 DNS 列,TCP、URLTest 和 QUIC 探测继续执行。不支持 UDP 的节点跳过该解析;主机名解析失败时不会替换为另一个目标。
| 探测列 | 时限 |
|---|---|
| 每个非 QUIC 列 | 各自以 --timeout 加一秒为上限。 |
| QUIC | 额外留两秒等待清理完成。清理耗时不计入延迟样本。 |
URLTest 与地址族探测的拨号、目标 TLS 和每次交换各有独立的 --timeout。因此,较慢的冷启动承载连接建立可能达到列时限。该列报告 timeout;UDP 策略拒绝目标时报告 n/a。其他列保留各自结果。
UDP DNS 主机名目标使用共享异步解析器,读取 /etc/resolv.conf 中首个数字形式的 nameserver(UDP 端口 53),并在 /etc/hosts 存在时加载它,不执行阻塞的 NSS 查询。此路径不应用 NSS 插件或解析器搜索后缀。解析器不可用时,DNS 列报告 resolve,不会回退到公共解析器;字面量目标不需要解析器。
VLESS 承载连接和会话按运行时与规范化的线协议形态复用。因此,更改规范 UDP/多路复用查询参数可能改变节点身份与连接池复用。
共享物理承载连接容量是全局的。XUDP 的 8 字节 Global ID 按 honk 的运行时、客户端、路径与目的地源身份确定作用域,不是进程级无碰撞 NAT 键。见节点参考与规范的 VLESS 出站设计。
探测失败码为 resolve、timeout、exchange、handler 与 admission。凭据、端点详情、SNI、REALITY 键、URL 查询参数数据和原始错误绝不会输出。
bpf
honk-tool bpf show <conn-state|redirect-track|domain-routing|routing-handoff>
[--ip IP] [--limit N] [--pin-root PATH]
honk-tool bpf stats [--pin-root PATH]| 命令 / 参数 | 默认值 | 含义 |
|---|---|---|
show <map> | 必填 | 解码一个受支持的 pin map。 |
show --ip IP | 未设置 | 按源或目的 IP 过滤 tuple map;对 domain-routing 按精确 IP 键过滤。 |
show --limit N | 50 | 最多打印的条目数;0 表示全部。 |
show --pin-root PATH | /sys/fs/bpf | 所选 map 的 pin 根目录。 |
stats --pin-root PATH | /sys/fs/bpf | 统计 map 的 pin 根目录。 |
show map | 解码内容 |
|---|---|
conn-state | Tuple、出站、mark、must 标记、状态与最近出现时间戳。 |
redirect-track | 回包改写源/目的地址、出站、WAN 方向、接口与最近出现时间戳。 |
domain-routing | 从 DNS 或嗅探结果学习的 IP,以及活动 policy 的域名谓词位图索引;已知但全零的条目仍会显示。 |
routing-handoff | Tuple 与待处理的 eBPF 到控制面路由结果。 |
命令通过原始 bpf(2) 读取 pin,不加载程序或挂载 hook;通常需要 root 或合适的 BPF capability。stats 为下列计数器逐行输出规范标签与计数,并打印 CONN_STATE_OCCUPANCY 插入/删除水位计及非零的每出站包/字节计数。BPF_STATS_MAP 必须有九个槽位:工具/引擎版本不匹配时以 unexpected map layout for BPF_STATS_MAP: expected max_entries=9 found 7 失败(旧版工具则相反),不错误标注计数器。请将工具与引擎/对象一起升级。
| Key | 规范标签 | 计数对象 |
|---|---|---|
0 | udp_conn_overflow | 不存在已有 tuple 时的 UDP conn-state 插入失败。 |
1 | tcp_conn_overflow | TCP conn-state 插入失败。 |
2 | redirect_track_insert_failure | Redirect-track 发布失败:map 插入失败或准备 scratch 不可用。 |
3 | routing_handoff_insert_failure | Routing-handoff 发布失败:map 插入失败或准备 scratch 不可用。 |
4 | socket_identity_capture_failure | 套接字进程身份捕获或存储失败。 |
5 | tcp_child_proof_storage_failure | 已接受 TCP child 的归属证明存储失败。 |
6 | tcp_publisher_claim_failure | TCP SYN 发布排他声明插入失败,不含普通的同 tuple 竞争(EEXIST)。 |
7 | new_flow_rate_limited | 被单源、每 CPU 新流限制丢弃的 LAN 流尝试。 |
8 | udp_reverse_learning_suspended | conn 压力下,在 conn-state 查询未命中后被跳过的反向 UDP 学习尝试。 |
routing-handoff 在读取前检查handoff ABI。
stats 要求 /sys/devices/system/cpu/possible 可读且为内核的真实导出文件。每 CPU 缓冲区按该掩码中的 CPU 数量分配,不采用 present 或 online CPU 数量。CONN_STATE_OCCUPANCY 和 OUTBOUND_STATS 必须为每 CPU 数组,键均为 4 字节,值分别为 8 字节和 32 字节。CPU 列表不可读、格式无效或 map 元数据不兼容时,命令在每 CPU 查找前报错,不回退到猜测的 CPU 数量。
diagnose
honk-tool diagnose [--api URL] [--secret TOKEN] [--pin-root PATH] [--tproxy-mark VALUE]| 参数 | 默认值 | 含义 |
|---|---|---|
--api URL | http://127.0.0.1:9090 | 明文 HTTP Clash API 基础 URL。空值跳过 API 检查;内置客户端不支持 HTTPS。 |
--secret TOKEN | HONK_API_SECRET(若已设置) | Clash API 的 Bearer 令牌。命令行参数优先于环境变量。 |
--pin-root PATH | /sys/fs/bpf | 检查 pin map 是否存在及读取统计时使用的根目录。 |
--tproxy-mark VALUE | 134217728(0x08000000) | daens 策略规则中预期的 fwmark。 |
该命令只读,检查以下项目:
- 名为
honk-core、honk或dae的引擎进程; /var/run/netns/daens和/sys/class/net/dae0;daens内的 fwmark 规则;- 必需的已固定映射,以及可读取的占用/溢出统计;
<api>/version的成功 HTTP 响应。
| 结果 | 输出 |
|---|---|
| API 返回 2xx | [ok],后跟响应正文。 |
| API 返回非 2xx | [FAIL],后跟状态文本。 |
| 全部检查通过 | 标准输出以 diagnose: all checks passed 结束,退出状态为 0。 |
| 存在失败检查 | 标准输出以 diagnose: N issue(s) found 结束,退出状态为 1,错误信息包含问题数量。 |
统计检查与 bpf stats 对 possible CPU 文件和 pin map 布局的要求相同。准备失败时打印 [FAIL] map stats read,计入问题数量,并以非零状态退出。
geosite 与 geoip
honk-tool geosite [--file PATH] list [FILTER]
honk-tool geosite [--file PATH] show <category> [--attr ATTR]
honk-tool geosite [--file PATH] find <domain>
honk-tool geoip [--file PATH] list [FILTER]
honk-tool geoip [--file PATH] show <code>
honk-tool geoip [--file PATH] lookup <ip>| 命令 | 行为 |
|---|---|
geosite list [FILTER] | 列出类目 code 与条目数;可选过滤条件为不区分大小写的子串。 |
geosite show <category> [--attr ATTR] | 打印一个类目的条目。--attr 不区分大小写地保留含该属性键的条目,与路由的 category@attr 谓词一致。 |
geosite find <domain> | 按类目打印匹配该域名的 full、suffix、keyword 与 regex 条目。 |
geoip list [FILTER] | 列出 code 与 CIDR 数;可选过滤条件为不区分大小写的子串。 |
geoip show <code> | 打印一个 code 中的全部 CIDR。 |
geoip lookup <ip> | 返回最长匹配前缀上并列的全部 code/CIDR。 |
--file PATH | 对应 .dat 文件的命令族全局覆盖路径。 |
未指定 --file 时,工具按以下顺序选择第一个已存在的普通文件:
$DAE_LOCATION_ASSET/<name>.dat/var/lib/honk/<name>.dat/var/share/honk/<name>.dat(旧根目录)./<name>.dat/usr/local/share/honk/<name>.dat/usr/share/honk/<name>.dat/usr/local/share/dae/<name>.dat/usr/share/dae/<name>.dat/etc/dae/<name>.dat
与 honk-core 不同,该工具不加载配置,因此无法获知自定义 global.data_dir。输出每行一条记录。下游管道关闭不会引发 panic。
相关文档
来源:honk 上游文档,采用 GPL-3.0-only 许可证。
