Surge Ponte 教程:Mac 服务端连接 iPhone 的配置与排错
简答:Surge Ponte 需要用 Surge Mac 作为服务端、iPhone 或 iPad 作为客户端,并登录同一 iCloud。先在 Mac 开启 Ponte,再按 NAT 检测结果选择直连、代理中继或端口转发,最后用 sgponte 主机名或 DEVICE 规则测试。
定义:Surge Ponte 是 Surge Mac 与 iOS 设备之间建立的端到端加密私有网络,用于远程访问 Mac 服务或经 Mac 转发访问家庭内网。
先看结论:Mac、iPhone 和网络条件分别负责什么
如果你搜索“Surge Ponte 教程”是因为想在外出时访问家里的 Mac、NAS、Home Assistant、网页服务或 SSH,最重要的判断是:Mac 才能作为 Ponte 服务端,iPhone 和 iPad 主要作为客户端。官方文档说明,Surge Mac 可以同时承担服务端和客户端角色,而 Surge iOS 只能作为客户端使用。设备信息与加密密钥通过 iCloud 同步,连接本身保持端到端加密;是否经过代理,取决于你选择的连接方式。
官方资料:Surge Ponte 指引、Surge Ponte 官方手册。
| 项目 | Mac | iPhone/iPad | 你需要确认的条件 |
|---|---|---|---|
| 角色 | 服务端,也可作为客户端 | 客户端 | 设备登录同一 iCloud,或使用官方支持的设备共享方式 |
| 访问 Mac 自身服务 | 提供服务,例如网页、文件共享或 SSH | 通过 <设备名>.sgponte 访问 | Mac 上的服务确实监听对应端口 |
| 访问家庭内网 | 作为跳板访问 NAS、家庭 DNS 或其他内网设备 | 使用 DEVICE:<设备名> 策略转发 | Mac 能正常访问目标内网地址,规则顺序正确 |
| 直连穿透 | 需要 Full Cone NAT 或可用的 IPv6 直连条件 | 自动尝试连接 | 路由器、防火墙和运营商网络允许相关流量 |
| 代理 NAT 穿透 | 选择支持 UDP 中继的代理 | 可按网络情况配置客户端侧代理 | 代理本身不能处于未正确配置的 NAT 或防火墙之后 |
| 静态端口转发 | 在有公网 IP 时手动配置路由器 | 自动使用已配置的服务端 | 你能管理路由器、端口和防火墙 |
开始前准备:先确认设备、账号和服务端条件
- 准备一台运行 Surge Mac 的 Mac。它是本教程的 Ponte 服务端核心。Mac 需要保持开机、联网,并且 Surge 处于能够工作的状态。
- 准备一台运行 Surge iOS 的 iPhone 或 iPad。它用于从外部网络连接 Mac 或家庭内网。若设备列表无法同步,先检查两端是否登录了同一个 iCloud。
- 确认 Mac 上的目标服务已经运行。例如,访问网页服务前,要先知道服务监听的端口;访问文件共享前,要先在 macOS 的“系统设置—通用—共享”中开启文件共享。
- 确认家庭内网网段。例如 NAS 位于
192.168.1.20,家庭网段可能是192.168.1.0/24。如果外出网络也使用相同网段,可能产生地址冲突;官方建议家庭内网尽量使用不常见的子网。 - 准备可选的 UDP 中继代理。如果 NAT 检测不是 Full Cone NAT,或者直连经常失败,需要使用支持 UDP 转发或 UDP 中继的代理。Surge 官方指引列出了 Snell、Shadowsocks、Trojan、SOCKS5 和 WireGuard 等可选类型,但具体支持情况仍以 Surge 当前界面检测结果为准。
不要先急着写规则。先确认 Mac 本地能访问目标服务,再进行 Ponte 配置;否则远程失败时无法区分是服务本身、Mac 防火墙还是 Ponte 通道问题。
Mac 端开启 Surge Ponte:按向导完成服务端配置
- 打开 Surge Mac,在侧边栏进入“概览”。
- 打开“Surge Ponte”开关并点击下一步。
- 等待 Surge 测试当前网络的 NAT 类型。不要跳过这一步,因为后面的连接方式选择依赖检测结果。
- 如果结果为 Full Cone NAT,可以选择直连穿透,也可以改用代理 NAT 穿透或静态端口转发。
- 如果结果属于其他 NAT 类型,优先选择支持 UDP 中继的代理;如果你拥有公网 IP 且能配置路由器,也可以选择静态端口转发。
- 为当前 Mac 设置设备名称,例如
MyMacMini。名称只能使用字母、数字、下划线和连字符,并且后续规则中的设备名要保持一致。 - 等待 Surge 完成设备注册,然后在 iPhone 或 iPad 上打开 Surge Ponte 页面查看该 Mac。
如果你使用代理 NAT 穿透,服务端代理必须通过 Surge 的检测。官方文档特别提醒,代理服务器不能位于未正确配置的 NAT 或防火墙之后;只支持 TCP 而不支持 UDP 的代理,不能满足 Ponte 的 UDP 中继要求。
Surge 的官方手册还说明,Ponte 的大部分设备记录、密钥和端口信息由 iCloud 与应用数据管理,通常不需要手动编辑配置文件。只有在需要指定客户端或服务端代理策略时,才可能涉及 [Ponte] 配置段。
iPhone 或 iPad 端连接:先发现设备,再做最小测试
- 在 iPhone 或 iPad 上打开 Surge,进入 Surge Ponte 页面。
- 确认列表中出现刚才命名的 Mac。设备名称不一致时,先回到 Mac 端检查设备名称和 iCloud 登录状态。
- 先测试 Mac 自身服务,而不是直接测试复杂的家庭内网规则。假设 Mac 上有一个 HTTP 服务监听 8080 端口,可访问
http://mymacmini.sgponte:8080/。 - 如果测试成功,再测试家庭内网设备,例如 NAS、Home Assistant 或家庭网页服务。
- 每次只改变一个变量:先换网络,再换代理,再调整规则。这样更容易定位是移动网络、UDP、NAT 还是规则匹配问题。
<设备名>.sgponte不是公开 DNS 域名,而是 Surge 在 Ponte 网络中动态处理的设备主机名。官方手册说明,它也可以对应到 DEVICE:<设备名> 策略,因此适合访问服务端 Mac 上的服务。
如果你访问的是 Mac 本机服务,先确认服务监听地址和端口。例如服务只监听 127.0.0.1,官方指引说明通过 Ponte 设备主机名仍可访问;但如果服务根本没有启动,或者端口被防火墙拦截,Ponte 本身不会替你修复应用层问题。
访问家庭内网:DEVICE 规则、DNS 映射和规则顺序
访问 Mac 自身服务使用设备主机名;访问 Mac 所在家庭网络里的其他设备,则使用 DEVICE:<设备名> 作为策略。最简单的网段规则如下:
IP-CIDR,192.168.30.0/24,DEVICE:MyMacMini
把示例中的网段换成你的家庭内网,把 MyMacMini 换成 Mac 端实际设备名。规则应放在更宽泛的直连、代理或兜底规则之前,否则请求可能先被其他规则匹配,导致没有经过 Ponte。
如果只想访问一台设备,可以缩小范围,例如:
IP-CIDR,192.168.1.20/32,DEVICE:MyMacMini
如果你希望通过域名访问家庭设备,可以在 Surge Mac 配置 DNS 映射,例如把 nas.myhome 映射到 192.168.1.20,然后在客户端使用:
DOMAIN-SUFFIX,myhome,DEVICE:MyMacMini
这条域名规则要放在会触发解析的 IP 类规则之前。官方指引解释了原因:客户端本身无法直接解析该家庭域名,如果先触发普通 IP 规则,可能无法按预期交给 Ponte 设备处理。
| 目标 | 访问方式 | 示例 | 优先检查 |
|---|---|---|---|
| Mac 网页服务 | 设备主机名加端口 | http://mymacmini.sgponte:8080/ | Mac 服务是否启动、端口是否监听 |
| Mac 文件共享 | 系统文件 App 连接服务器 | macbook.sgponte | macOS 文件共享和账号权限 |
| NAS | IP-CIDR 或 DNS 映射 | nas.myhome | Mac 能否访问 NAS、规则是否命中 |
| Home Assistant | 单 IP 或域名规则 | 192.168.1.50/32 | 服务端口、家庭 DNS、内网地址 |
| SSH | 目标 IP 交给 DEVICE 策略 | ssh 192.168.1.30 | SSH 服务、端口、防火墙和账号 |
连接失败排查:按设备、NAT、UDP、规则四层定位
- 设备列表看不到 Mac:检查两端 iCloud 账号、网络连接和 Surge 登录状态;确认 Mac 端 Ponte 已开启,并等待设备同步完成。
- NAT 检测不是 Full Cone NAT:不要反复只尝试直连。改用支持 UDP 中继的代理,或在确有公网 IP 的情况下配置静态端口转发。
- 代理检测失败:确认代理支持 UDP 转发,且代理服务器没有被未配置的 NAT 或防火墙挡住。代理类型名称能被选择,不等于当前节点一定符合 Ponte 要求,应以 Surge 的合格检测为准。
- 设备显示在线但访问超时:先测试 Mac 自身的
sgponte主机名,再测试家庭内网 IP。若前者成功、后者失败,重点检查 Mac 到家庭设备的路由、防火墙和目标服务。 - 规则没有生效:查看请求日志中命中的策略,确认确实命中了
DEVICE:MyMacMini,而不是 DIRECT、REJECT 或其他代理组。规则顺序尤其要检查域名规则是否位于相关 IP 类规则之前。 - UDP 丢包或连接不稳定:先确认服务是否真的依赖 UDP,再检查服务端代理和客户端网络是否允许 UDP。官方资料指出,客户端也可以配置代理来帮助应对某些网络环境下的 UDP 流量封锁,但这不是所有场景的必选项。
- 同一局域网能用,外网不能用:同 LAN 时 Ponte 会自动优先使用局域网连接,因此本地成功不能证明 NAT 穿透或代理中继正常。请关闭 Wi-Fi,使用移动网络重新测试。
- 网段冲突:如果你在酒店、公司或移动热点中也使用相同的
192.168.x.x网段,访问可能被本地路由抢先处理。可重新规划家庭网段,或用更精确的规则和 DNS 映射减少冲突。
官方发布说明还提到,Ponte 可以同时启用多种穿透模式和多条代理线路,并自动选择连接通道;因此排障时不要只盯着某一种通道,先确认当前客户端和服务端版本、代理条件以及日志中的实际命中情况。
一个可复用的最小配置流程
- 在 Mac 上确认本地服务或家庭设备能正常访问。
- 开启 Surge Mac 的 Ponte,完成 NAT 检测并命名设备。
- 在 iPhone 或 iPad 上确认设备出现。
- 先用
<设备名>.sgponte:端口测试 Mac 自身服务。 - 再添加单个内网 IP 的
IP-CIDR,/32,DEVICE:<设备名>规则。 - 查看请求日志中的实际策略命中,再扩展到整个内网段。
- 如果失败,按“设备同步—NAT—UDP—规则—目标服务”的顺序逐层排查,不要同时修改多个设置。
这套顺序的好处是每一步都有明确判定标准:设备能否发现、通道能否建立、Mac 能否访问目标、规则是否命中,以及目标服务是否响应。完成基础链路后,再考虑 DNS 映射、多个网段或客户端侧代理。
常见问题
Surge Ponte 必须使用同一个 iCloud 账号吗?
同一 iCloud 账号是官方文档描述的自动注册方式。官方手册也提到设备可以通过确认码共享给其他 iCloud 账号,具体入口以当前 Surge 界面为准。
Surge Ponte 一定需要代理吗?
不一定。Full Cone NAT 或满足条件的直连通道可以不使用代理;如果 NAT 类型不适合直连,通常需要支持 UDP 中继的代理,或者使用公网 IP 配置静态端口转发。
为什么 iPhone 能看到 Mac,但访问 NAS 失败?
先确认 Mac 本身能访问 NAS,再检查是否使用了 DEVICE 规则、规则是否命中,以及家庭网段是否与当前外部网络冲突。可以先用单个 IP 的 /32 规则测试。
sgponte 主机名是公共 DNS 域名吗?
不是。官方手册将它描述为由 Surge 处理的 Ponte 设备主机名,格式通常为 <code><设备名>.sgponte</code>,用于访问对应设备或转交 DEVICE 策略。
Ponte 连接失败时,先查规则还是先查 NAT?
先确认设备能否互相发现,再看 NAT 或代理通道,随后确认 Mac 到目标内网的连通性,最后检查规则命中。这样可以避免把网络通道问题误判成规则问题。
相关阅读
参考资料
- Surge Ponte 指引(kb.nssurge.com)
- Surge Ponte 官方手册(manual.nssurge.com)
- Surge Mac 6.0 Release Note(kb.nssurge.com)
- Surge iOS Release Notes(kb.nssurge.com)