为第一条连接设置路由
从快速启动继续,保持 honk 运行并以管理员身份登录。你需要一个可用的 HTTP 或 HTTPS 订阅 URL,以及网关的 shell 访问权限。本教程将 example.com 送入名为 proxy 的新组,其他流量保持直连。订阅名称使用 harbor。
1. 添加订阅
打开节点页,选择添加订阅。在名称中填写 harbor,在订阅网址中填写供应商的 URL,然后选择添加。doona 会写入声明并请求刷新。
检查成功通知是否显示节点数,再选择 harbor 查看其节点。如果声明已保存但获取失败,先解决报告的错误,再选择卡片上的更新 harbor。订阅包含代理节点后再继续。
2. 创建组
打开策略页,选择新建组。在组名称中填写 proxy,将选择方式设为平均最快。在订阅中选择 harbor,检查匹配的节点后选择创建。
页面应出现 proxy 卡片,其中包含订阅成员。展开卡片,查看所选成员及其延迟或健康状态。组内没有节点时请勿继续。控件不可用时,见组创建与编辑条件。
3. 将测试域名送入组
打开规则 → 路由规则。如果显示视图切换,先选择高级,再选择新建规则。
| 字段 | 值 |
|---|---|
| 条件写法 | 选择 |
| 依据 | 完整域名 |
| 值 | example.com |
| 出站 | proxy |
| 插入位置 | 最后(fallback 之前) |
选择对话框中的新建规则,立即写入并重载。检查新规则已生效通知及新增规则:
domain(full: example.com) -> proxy
保留 fallback: direct。添加功能不可用时,见路由规则条件。
4. 定义 DNS 上游
快速启动没有 DNS 区块。打开配置 → 配置文件,在配置文件中选择 /etc/honk/config.dae,将以下区块追加到现有区块之后。保留刚才创建的订阅、组和路由规则。
# 通过代理组发送指定的 DNS 请求。
dns {
# 使用数字服务器地址,避免依赖其域名的初始解析。
upstream {
remote_dns: 'https://1.1.1.1/dns-query' -> proxy
}
# 保留其他请求的原目标。
routing {
request {
fallback: asis
}
}
}
选择应用,等待文件已写入、配置已重载的通知。重新打开文件,检查 remote_dns 是否存在。编辑器或应用不可用时,见配置写入条件。
5. 添加并应用 DNS 规则
打开规则 → DNS 规则,在request 规则中选择新建规则。将依据设为完整域名,在值中填写 example.com,在动作中选择 remote_dns,将插入位置设为最后(fallback 之前)。
选择新建规则以写入并重载。检查新规则已生效通知及请求规则:
qname(full: example.com) -> remote_dns
两条规则现已应用。路由规则选择流量使用的组;DNS 规则选择解析器,该解析器的请求也经过此组。以上每次保存都会单独生效。添加功能不可用时,见 DNS 规则条件。
6. 用追踪模拟验证规则
在规则页打开追踪模拟。将网络协议设为 TCP,域名填写 example.com,目标端口填写 443。目标 IP留空,在解析模式中选择不解析(none),再选择开始追踪。
结果应匹配你的域名规则,出站为 proxy,节点链中包含 harbor 的节点。改用 example.net 再执行一次,出站应为 direct。追踪只模拟规则评估,不建立连接,也不能证明代理可以访问网站。控件不可用时,见路由追踪条件。
7. 观察真实连接
发出请求前先打开连接页。在网关执行:
curl --http1.1 --limit-rate 32 https://example.com/ -o /dev/null
传输期间,在连接页找到 example.com 并打开对应行。检查节点链是否包含 proxy 和 harbor 的某个节点。短连接可能在查看前已经结束,必要时再次发出请求。传输成功表明此路由能承载真实流量。页面不可用时,见连接条件。
代理流量由用户空间处理,会出现在连接页。直连流量由内核转发,不会出现在该页。使用追踪检查直连回退,或查看配置参考中的完整文件示例。