Surge配置怎么导入和排查?从订阅、节点到规则的完整教程
简答:Surge 配置通常是以 [General]、[Proxy]、[Proxy Group]、[Rule] 组成的 .conf 文件。新手先导入配置或订阅,再确认策略组有节点,最后检查规则顺序和 FINAL;iOS、macOS 的入口不同,托管配置也不能直接本地修改。
定义:Surge 配置是用于定义代理节点、策略组、分流规则、DNS 和系统接管方式的文本配置文件,常见扩展名为 .conf。
先完成这三步:导入、选组、看日志
如果你只是想让 Surge 先工作,不要一开始就改几十条规则。按下面顺序操作:先导入配置或订阅,确认配置列表中出现新文件;再进入策略组,确认当前选择的策略不是空组;最后启动 Surge,打开请求列表或日志,查看请求命中了哪个策略。
| 现象 | 优先检查 | 判定标准 |
|---|---|---|
| 节点列表为空 | [Proxy] 或托管节点资源 | 策略组中能看到至少一个可选节点 |
| 能启动但网页打不开 | 当前出站模式、策略组和 [Rule] | 请求日志显示命中了预期策略 |
| 订阅更新失败 | 订阅 URL、返回内容和托管配置状态 | 重新下载后仍是完整的 [Section] 配置 |
| 局域网设备无法访问 | LAN 规则、系统代理和增强模式 | 局域网地址命中 DIRECT 或对应内网策略 |
Surge 的配置文件采用类似 INI 的分段结构;官方文档把 [General]、[Proxy]、[Proxy Group] 和 [Rule] 作为最常见的基础段落。可以先阅读 Surge Quick Start 和 Profile Format 对照自己的文件。
iOS 和 macOS 如何导入 Surge 配置
iOS:从配置列表下载 URL
- 打开 Surge,进入首页的配置列表,点击当前配置名称或配置管理入口。
- 选择“从 URL 下载配置”或名称相近的 URL 导入选项。
- 粘贴配置链接,确认下载;如果系统提示安装配置,返回配置列表,点选刚下载的配置。
- 启动 Surge 后,进入策略组检查节点是否出现,再打开请求列表确认是否有命中记录。
如果应用内找不到对应入口,也可以使用 Surge 的 URL Scheme 安装配置:在浏览器或系统快捷指令中打开 surge:///install-config?url=经过百分号编码的配置URL。具体格式见 Surge URL Scheme。不同版本的中文菜单名称可能略有变化,应以当前界面为准。
macOS:从配置文件列表安装
- 打开 Surge Mac,进入配置文件列表或 Profiles 页面。
- 使用添加配置、从 URL 安装或导入本地文件的入口;如果配置已经下载为 .conf 文件,也可以直接选择本地文件。
- 安装完成后选中该配置并设为当前配置,然后启动 Surge。
- 若 macOS 使用增强模式或虚拟网卡接管流量,首次启用时按系统提示在“隐私与安全性”中放行相关组件;启动后再从请求列表检查进程是否被捕获。
macOS 与 iOS 可以共用 [Proxy]、[Proxy Group]、[Rule] 等段,但 [General] 往往需要按平台分别设置。官方的 Profile Format 也说明了使用 #!include 拆分配置段的方式。
最小可用配置:单节点、策略组和分流规则
下面的示例不包含真实服务器、密码或订阅地址,只用于说明结构。把示例中的占位内容替换成你实际获得的节点参数;如果手里已有完整托管配置,不要把整份订阅重复粘贴进本地配置。
[General]
dns-server = system
[Proxy]
MyNode = https, server.example, 443, username, password
[Proxy Group]
Proxy = select, MyNode, DIRECT
Auto = url-test, MyNode, DIRECT, url = http://www.apple.com/library/test/success.html
[Rule]
DOMAIN-SUFFIX,example.com,Proxy
GEOIP,CN,DIRECT
RULE-SET,SYSTEM,DIRECT
RULE-SET,LAN,DIRECT
FINAL,Proxy三者关系可以这样理解:
- Proxy:声明单个代理策略,例如服务器地址、端口、协议和认证信息。
- Proxy Group:把多个节点或内置策略组合起来,供用户手动选择或自动测试。
- Rule:根据域名、IP 或规则集,把请求交给某个节点、策略组、DIRECT 或 REJECT。
select 适合手动选择;url-test 会按测试结果选择可用策略;fallback 更适合按顺序使用可用策略。策略组名称必须和 [Rule] 中最后一列完全一致,包括大小写、空格和符号。官方说明见 Rules Overview 与 Understanding Surge。
规则按照从上到下的顺序匹配,第一条命中的规则会决定策略;FINAL 是兜底规则,建议放在规则段末尾。若把过于宽泛的规则放在前面,后面的精确规则就不会再执行。规则集可用 RULE-SET 引用内置、内嵌或外部资源,具体格式见 Rule Sets。
订阅、托管配置和单节点应该怎么选
| 方式 | 适合场景 | 注意事项 |
|---|---|---|
| 完整配置 URL | 服务商已经准备好节点、策略组和规则 | 配置可能是托管类型,本地修改可能无法保存或会被远程更新覆盖 |
| 外部节点列表 | 自己维护 [General]、[Proxy Group] 和 [Rule] | 需要确认列表内容确实是 Surge 支持的节点格式 |
| 单个节点 | 只测试一个服务器或排查连接问题 | 需要手动填写协议、地址、端口和认证信息 |
| 模块 | 对主配置做局部调整 | 模块不是完整配置,且不能任意修改 [Proxy] 和 [Proxy Group] |
机场或服务商常见的是完整托管配置,而不是只提供一个 policy-path 节点列表。若文件首行带有 #!MANAGED-CONFIG 或配置被标记为托管配置,应把它视为远程维护文件:先复制为普通配置,再做本地调整;否则更新时可能覆盖手工修改。官方配置指引明确区分了普通配置、托管配置和企业配置,可参考 Surge 配置文件指引。
订阅链接、节点地址、用户名、密码和远程规则 URL 都属于敏感信息。分享截图或配置前,至少删除订阅 URL 的完整查询参数、节点密码、认证字段和个人域名;不要把含有真实凭据的 .conf 文件提交到公开仓库。MITM 证书只在明确理解用途和风险时启用,普通分流配置不需要为了“让规则生效”而开启它。
常见故障:按顺序排查,不要先重写整份配置
- 节点为空:先下载或打开原始配置,确认是否真的存在 [Proxy] 段;再检查 [Proxy Group] 是否引用了正确的节点名。若使用外部资源,先单独刷新资源并查看错误提示。
- 订阅更新失败:在浏览器或下载工具中检查 URL 是否仍能返回文本;返回内容应以 [General]、[Proxy] 等配置段开始,而不是登录页、JSON 错误或 HTML 页面。托管配置的更新间隔和远程状态以提供方配置为准。
- 规则不生效:确认当前出站模式是基于规则,而不是全局直连或全局代理;然后在请求日志中查看实际命中的规则和策略。检查更早的宽泛规则是否已经抢先匹配,并确认 FINAL 没有放在需要执行的规则前面。
- 局域网无法访问:先确认局域网网段、设备地址和端口;再检查 LAN 或私有地址是否命中 DIRECT。macOS 还要检查增强模式、虚拟网卡和系统权限;iOS 则要检查 VPN 接管状态及配置中的局域网相关规则。
skip-proxy只处理系统代理层面的绕过,不能替代完整的 LAN 规则配置。 - 启动后完全没有请求:确认 Surge 已启动、系统 VPN 或增强模式已建立,并从请求列表检查是否有流量进入。macOS 端如果权限提示被忽略,先退出 Surge,在“隐私与安全性”中重新放行后再测试。
排查时建议一次只改一个变量:先用单节点和简单的 select 策略组验证连接,再增加自动测速、外部规则集和复杂模块。这样更容易判断问题来自节点、订阅内容、规则顺序还是系统接管。
FAQ:Surge 配置最容易弄错的几个问题
Surge 配置文件必须叫什么名字?
完整配置通常使用 .conf 扩展名,但真正决定能否解析的是内容结构,而不是文件名。至少应使用正确的 [Section] 段落和对应语法;不要把纯节点列表、HTML 页面或 JSON 响应直接当成完整配置导入。
为什么导入后看不到节点?
常见原因是导入的只是规则文件、托管配置加载失败,或 [Proxy Group] 引用了不存在的节点名。先打开配置内容确认 [Proxy] 是否存在,再检查外部资源更新结果和策略组引用名称。
可以直接修改托管配置吗?
托管配置通常由远程 URL 更新,本地修改可能不可编辑,也可能在下一次更新后被覆盖。需要长期自定义时,应先复制为普通配置,或用适合的模块、分离配置段处理局部调整。
select、url-test 和 fallback 怎么选?
想手动指定节点,用 select;想依据测试结果自动选择,用 url-test;想按预设顺序使用可用节点,用 fallback。排查阶段优先使用 select,因为它的行为最容易复现。
为什么 FINAL 会导致规则看起来失效?
Surge 按顺序匹配规则,FINAL 会立即结束匹配并处理剩余请求。如果 FINAL 出现在某条精确规则之前,后面的规则就不会执行。把 FINAL 保持在规则段末尾,并在日志中确认实际命中的策略。
常见问题
Surge 配置文件必须叫什么名字?
完整配置通常使用 .conf 扩展名,但真正决定能否解析的是内容结构。至少应使用正确的 [Section] 段落和对应语法。
为什么导入后看不到节点?
先确认配置中存在 [Proxy] 段,再检查外部资源是否更新成功,以及 [Proxy Group] 引用的节点名称是否完全一致。
可以直接修改托管配置吗?
托管配置通常由远程 URL 更新,本地修改可能不可编辑,也可能在下一次更新后被覆盖。需要自定义时应先复制为普通配置。
select、url-test 和 fallback 怎么选?
手动指定节点用 select,按测试结果自动选择用 url-test,按预设顺序使用可用节点用 fallback。排查阶段优先使用 select。
为什么 FINAL 会导致规则失效?
规则从上到下匹配,FINAL 会立即结束匹配。把 FINAL 放在规则段末尾,并通过请求日志确认实际命中的策略。
相关阅读
参考资料
- Quick Start · Surge(manual.nssurge.com)
- Profile Format · Surge(manual.nssurge.com)
- URL Scheme · Surge(manual.nssurge.com)
- Rules Overview · Surge(manual.nssurge.com)
- Rule Sets · Surge(manual.nssurge.com)
- Surge 配置文件指引 · Surge Tech Community(community.nssurge.com)
- Understanding Surge · Official Guidance(manual.nssurge.com)