你已经能独立维护自己的代理核心与路由。仅定位修改器模式只安装定位修改器、证书与接线示例,由你把自己的入站接入。实现不限定代理协议或核心,本页使用一套现成配置作为可验证示例。
不安装代理核心、不创建代理入站、不开放端口、不改 UFW、不写 TCP 调优——只装回环定位修改器、城市识别与选点、私有 CA 与 iOS 描述文件、hle 运维命令,以及一份代理核心接线示例。
curl -fsSL https://raw.githubusercontent.com/Loading886/Home-Location-Endpoint/v0.3.0/install.sh \
| sudo env HLE_VERSION=v0.3.0 bash -s -- --mode modifier-only同一台机器后续只能用相同模式重跑安装器,不会在 full、advanced 与 modifier-only 间自动迁移,以免覆盖你自管的代理配置。
安装输出会给你:CA 描述文件与 SHA-256、回环监听地址 127.0.0.1:10451、以及接线示例文件路径。不生成代理节点链接。
把 CA 描述文件装到手机的方式与新手一致:交互式安装完成后会自动启动一次性令牌链接(默认 100 分钟、下载一次即失效)。以后需要重新生成时运行 sudo hle profile serve;如需覆盖入口地址,使用 --host 手机可访问的地址。详见 新手教程第 4 步。
你的代理核心负责解密与承载手机流量;本项目负责「定位域名 → 回环拦截器」这一小段。
必须启用嗅探,并只把嗅探结果用于路由(routeOnly: true),否则会改写真实目的地址、破坏其它流量。
"sniffing": { "enabled": true, "destOverride": ["http", "tls", "quic"], "routeOnly": true }
把示例文件里的两个 outbound 原样并入你现有的 outbounds,tag 必须保持为 location-interceptor 与 block-location-quic。
{
"tag": "location-interceptor",
"protocol": "freedom",
"settings": {
"domainStrategy": "AsIs",
"redirect": "127.0.0.1:10451",
"finalRules": [
{ "action": "allow", "network": "tcp",
"ip": ["127.0.0.1/32"], "port": "10451" }
]
}
},
{ "tag": "block-location-quic", "protocol": "blackhole", "settings": {} }不要把代理的外层加密连接直接 DNAT 到 10451。定位修改器无法解析外层传输协议——它只处理解密后、指向定位域名的内层 TCP。
把这两条规则按原顺序放在任何可能提前匹配 Apple 域名的宽泛规则之前。第一条只阻断定位域名的 UDP/443;第二条才把 TCP/443 送到回环拦截器。
{
"type": "field", "network": "udp", "port": "443",
"domain": [
"full:gs-loc.apple.com",
"full:gs-loc-cn.apple.com",
"regexp:^gspe85(-[0-9]+)?(-cn)?-ssl\\.ls\\.apple\\.com$"
],
"outboundTag": "block-location-quic"
},
{
"type": "field", "network": "tcp", "port": "443",
"domain": [
"full:gs-loc.apple.com",
"full:gs-loc-cn.apple.com",
"regexp:^gspe85(-[0-9]+)?(-cn)?-ssl\\.ls\\.apple\\.com$"
],
"outboundTag": "location-interceptor"
}删掉第一条 UDP 规则会重新引入未改写的 QUIC 直出;把域名集合扩大则会误伤普通流量。保持原样最安全。
新版 Xray 默认阻止来自 VLESS 入站、指向私网/保留地址的 freedom 连接。定位出站必须访问回环拦截器,因此配置只显式放行这一个本地服务:
{ "action": "allow", "network": "tcp",
"ip": ["127.0.0.1/32"], "port": "10451" }普通 direct 出站没有增加 allow-all,因此仍保留 Xray 对私网目标的默认保护。
示例以一种常见代理核心展示,但任何核心只要具备下面这组等价能力都可以接入:
定位修改器与代理核心相互独立:它只监听 127.0.0.1:10451。把解密后的 Apple 网络定位 TCP 流量交给它即可,其余流量保持原来的出站。
合并配置后,先用你自己核心的配置检查命令校验并重启,然后:
sudo hle verify
sudo hle status
sudo journalctl -u home-location-endpoint --since '10 minutes ago'hle verify 只能验证定位修改器与接线示例本身,无法证明你已把片段正确合并进第三方配置。所以务必:从客户端真实发起一次定位请求,确认日志出现 TRANSLATE / WIFITILE_TRANSLATE;并确认普通网站没有进入定位拦截器日志。
默认 fail-closed:解析不确定时拦截器不会悄悄返回真实坐标,而是返回错误。排障时留意 TRANSLATE_FAIL_CLOSED / WIFITILE_FAIL_CLOSED。
暂停改写:sudo hle pause 会保留你的代理核心、路由和回环拦截器,只把 Apple 原始响应直接返回;sudo hle resume 恢复改写。两者都无需重启代理核心,状态跨重启和重复安装保留。
| 项 | 值 |
|---|---|
| 改写的定位域名 | gs-loc.apple.com, gs-loc-cn.apple.com, gspe85(-\d+)?(-cn)?-ssl.ls.apple.com |
| 回环拦截器 | 127.0.0.1:10451(仅本机,不对公网开放) |
| 叶证书 SAN | 两个 gs-loc 域名 + *.ls.apple.com |
| 处理内容 | Apple 网络定位响应中的坐标;普通网站和其它 App 流量不经过定位修改器 |
| 暂停行为 | hle pause 后使用手机请求的原始 Apple host,并返回未改写响应;代理流量不中断 |
其余安全边界与完整模式一致:叶私钥位于落地机、Apple 仍收到原始请求、只覆盖网络定位、需全隧道否则绕过。详见 安全与局限 与 仓库 MODIFIER-ONLY 文档 ↗。
落地机在 NAT 后、需要 Realm 中转或链式代理?请看 前置配置指引。