一、配置文件的整体结构一份 Surge 配置文件通常由以下几个 [Section] 组成,按照书写顺序排列,但实际生效顺序有各自的规则(详见后文):模块作用`[General]`全局参数:DNS、日志、监听端口、跳过代理的地址段等`[Proxy]`定义每一个代理节点(服务器信息)`[Proxy Group]`把若干节点组合成"策略组",供规则调用`[Rule]`决定什么流量走哪个策略组或直连/拒绝`[Host]`域名的自定义解析(类似本地 hosts)`[URL Rewrite]` / `[Header Rewrite]`请求重写(可选)`[Script]` / `[MITM]`脚本与中间人解密(可选,进阶功能)理解这个结构后,写配置的思路就是:先定义"有哪些出口"(Proxy / Proxy Group),再定义"什么流量走哪个出口"(Rule),General 和 Host 则是打底的基础设置。二、[General]:全局设置这一段决定 Surge 本身的行为,常见且重要的字段包括:DNS 相关:dns-server 指定 Surge 使用的 DNS 服务器;hijack-dns 可以把设备上写死的 DNS(比如某些 App 内置的 8.8.8.8)强制劫持到 Surge 的 DNS 栈,避免绕过分流规则。**跳过代理 skip-proxy**:局域网地址段(192.168.0.0/16、10.0.0.0/8 等)和本机地址一般都要加入,否则局域网设备互访也会被代理拦截。测试与探测:internet-test-url、proxy-test-url 用于连通性检测和节点测速,建议使用国内外都能稳定访问的地址(如 Gstatic、Cloudflare 的 204 探测地址)。IPv6:如果你的网络环境或代理节点对 IPv6 支持不完善,建议关闭 ipv6 = false,减少连接异常。端口监听:http-listen / socks5-listen 用于 Mac 端本地代理端口,一般保持监听 127.0.0.1 即可,除非需要给局域网内其他设备共享代理。写这一段的原则是:先保证稳定连接和不误伤局域网流量,再考虑其他细节优化。三、[Proxy]:定义节点每一行代表一个代理节点,基本格式是:複製节点名 = 协议类型, 服务器地址, 端口, 参数1=值1, 参数2=值2, ...以常见的 Snell 协议为例:複製🇺🇸US-Example = snell, 1.2.3.4, 12345, psk=your_psk_here, version=5, reuse=true, tfo=truepsk 是预共享密钥,由你的机场或自建服务器提供;reuse=true 开启连接复用,减少握手开销;tfo=true 开启 TCP Fast Open,提升建连速度;如果服务端叠加了 Shadow-TLS 做流量伪装,还需要加上 shadow-tls-password、shadow-tls-sni、shadow-tls-version 等参数。Surge 支持 Shadowsocks、VMess、Trojan、Snell、HTTP/SOCKS5 等多种协议,具体参数请以对应协议文档为准。这里的信息通常来自你的代理服务商或自建服务器,不要把它写死分享给别人。四、[Proxy Group]:组织策略组单个节点不便于管理,Surge 用"策略组"把节点组合起来,供规则统一调用。常见的组类型:**select**:手动选择型,你可以在 App 里手动切换使用哪个子选项(可以是节点,也可以是别的策略组,实现"组中组")。**smart / url-test**:自动测速选优,Surge 会按照 url(探测地址)和 interval(探测间隔)定期测试各节点延迟,自动选择最优节点。**fallback**:主备模式,主节点失效自动切换备用节点。**load-balance**:负载均衡,多节点分摊流量。写法示例:複製节点选择 = select, 自动选择, 自建节点, DIRECT 自动选择 = smart, include-other-group="自建节点", url=http://cp.cloudflare.com/generate_204, interval=600, tolerance=50实用技巧:可以按地区(美国、日本、香港……)建立自动测速分组,再按业务场景(AI 服务、流媒体、电报等)建立引用地区分组的上层分组,这样流量分流会更精细,也方便后续维护。五、[Rule]:分流规则规则决定"这条流量该走哪里",Surge 按从上到下的顺序匹配,命中第一条规则后立即生效,因此规则的排列顺序非常关键。常见规则类型:**DOMAIN / DOMAIN-SUFFIX / DOMAIN-KEYWORD**:按域名或域名后缀、关键字匹配;**RULE-SET**:引用一个规则集文件(本地或远程 URL),可以一次性导入大量规则,是最常用的写法;**GEOIP**:按 IP 所属国家/地区匹配,GEOIP,CN,DIRECT 是很常见的"国内 IP 直连"兜底规则;**FINAL**:必须放在最后一行,表示所有规则都未命中时的默认策略。排列建议的通用顺序(从上到下):对 DNS 敏感或必须直连的特殊流量(如 NTP 时间同步、局域网、私有服务)广告/恶意域名拦截规则分应用、分场景的代理规则(AI、流媒体、社交软件等)国内 IP/域名直连的兜底规则FINAL 兜底策略这个顺序背后的逻辑是:越"特殊"、越怕被误伤的流量,规则要放得越靠前;越"通用"的兜底规则,放得越靠后。六、[Host]:自定义域名解析作用类似系统的 hosts 文件,用于指定某个域名解析到固定 IP,或者强制走系统 DNS(server:system)。常见用途是解决时间同步、内网服务解析等对 DNS 解析路径比较敏感的场景。七、编写建议与常见坑先写 General 和 Host 打好基础,再写 Proxy/Proxy Group,最后写 Rule,逐步验证,不要一次性堆太多规则再排查问题。规则集尽量用远程 RULE-SET 而不是手写大量域名,社区维护的规则集(如 blackmatrix7、Loyalsoldier 等仓库)更新及时、覆盖全面。敏感信息(节点地址、密钥、订阅链接)不要出现在分享给他人的配置里,可以用占位符代替,让对方自行填写。FINAL 规则一定要写,且只能有一条,否则可能出现无法匹配到策略、连接失败的情况。调整规则顺序后建议重新测试关键业务(如即时通讯、支付类 App),避免因规则顺序变化导致误代理或误直连。八、可直接使用的配置模版下面是一份已经去除个人节点、订阅链接等私密信息的通用模版,结构覆盖了本文提到的所有模块,可以作为你自己配置的起点。使用前请:在 [Proxy] 中填入你自己的节点信息;把 订阅节点 分组里的 policy-path 换成你自己的订阅链接;把 自建节点 分组里的 DIRECT 替换为你自己添加的节点名称。INI[General] # > 日志级别与错误显示 loglevel = notify show-error-page-for-reject = true # > 访问控制 allow-wifi-access = false allow-hotspot-access = false # > 混合网络并发 all-hybrid = false # > 测试超时 test-timeout = 5 # > 连通性测试 URL internet-test-url = http://connectivitycheck.platform.hicloud.com/generate_204 proxy-test-url = http://connectivitycheck.gstatic.com/generate_204 # > DNS 设置 # 移除 system,避免混入运营商 DNS 造成解析污染/不稳定 dns-server = 223.5.5.5, 119.29.29.29 # 补充劫持国内常见硬编码 DNS(114 DNS / 阿里云 DNS),防止 App 绕过 Surge DNS 策略 hijack-dns = 8.8.8.8:53, 8.8.4.4:53, 114.114.114.114:53, 223.5.5.5:53 read-etc-hosts = true exclude-simple-hostnames = true # > IPv6 ipv6 = false ipv6-vif = off # > iOS 路由与流量接管 # 以下三个细分开关仅在 include-all-networks = true 时生效;当前全部关闭以保持兼容性 include-local-networks = false include-apns = false include-cellular-services = false include-all-networks = false # 节点不支持 UDP 时走直连,优先保证语音、游戏、QUIC 等场景不断流;若更重视防泄露,可改为 REJECT udp-policy-not-supported-behaviour = DIRECT # > Surge Mac HTTP/SOCKS5 监听 # 仅监听本机;iOS 的局域网访问由 allow-wifi-access / allow-hotspot-access 控制 http-listen = 127.0.0.1:6152 socks5-listen = 127.0.0.1:6153 # > Web Dashboard http-api-web-dashboard = false # > 跳过代理列表 skip-proxy = 127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, 169.254.0.0/16, 162.14.0.0/16, 211.99.96.0/19, 162.159.192.0/24, 162.159.193.0/24, 162.159.195.0/24, 17.0.0.0/8, 224.0.0.0/4, 255.255.255.255, fc00::/7, fe80::/10, ::1, ::/128, localhost, *.local, captive.apple.com # > 真实 IP 映射 always-real-ip = *.msftncsi.com, *.msftconnecttest.com, *.srv.nintendo.net, *.stun.playstation.net, xbox.*.microsoft.com, *.xboxlive.com, *.battlenet.com.cn, *.battlenet.com, *.blzstatic.cn, *.battle.net, *.turn.twilio.com, *.stun.twilio.com, stun.syncthing.net, stun.*, 127.*.*.*.sslip.io, 127-*-*-*.sslip.io, *.127.*.*.*.sslip.io, *-127-*-*-*.sslip.io, 127.*.*.*.nip.io, 127-*-*-*.nip.io, *.127.*.*.*.nip.io, *-127-*-*-*.nip.io # > GeoIP 数据库 geoip-maxmind-url = https://github.com/Hackl0us/GeoIP2-CN/raw/release/Country.mmdb disable-geoip-db-auto-update = false [Proxy] # ------------------------------------------------------------ # 在此处填入你自己的节点。 # 示例(请替换为你自己的服务器信息,协议不限于 snell): # 🇺🇸US-Example = snell, 1.2.3.4, 12345, psk=your_psk_here, version=5, reuse=true, tfo=true # 🇯🇵JP-Example = snell, 5.6.7.8, 23456, psk=your_psk_here, version=5, reuse=true, tfo=true, shadow-tls-password=xxx, shadow-tls-sni=www.microsoft.com, shadow-tls-version=3 # 🇭🇰HK-Example = snell, 9.10.11.12, 34567, psk=your_psk_here, version=5, reuse=true, tfo=true # ------------------------------------------------------------ [Proxy Group] # > 核心策略 节点选择 = select, 自动选择, 自建节点, 订阅节点, DIRECT, icon-url=https://raw.githubusercontent.com/lige47/QuanX-icon-rule/main/icon/02ProxySoftLogo/Surge(1).png 自动选择 = smart, include-other-group="订阅节点,自建节点", url=http://connectivitycheck.gstatic.com/generate_204, interval=600, timeout=5, tolerance=50, icon-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Auto.png # 自建节点:请在 [Proxy] 中添加你自己的节点后,把节点名称填入下面这一行 自建节点 = select, DIRECT, icon-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Daily.png # 订阅节点:将 policy-path 替换为你自己的订阅链接 订阅节点 = select, policy-path=https://your-subscription-url-here, policy-regex-filter=(?i)^(?!(?:剩余流量|套餐到期)[:]).+, update-interval=86400, icon-url=EMOJI::🥬 # > PT 专用分组(建议至少配置一个海外落地节点用于 PT 场景) PT专用 = select, 自建节点, 订阅节点, no-alert=1, icon-url=https://raw.githubusercontent.com/lige47/QuanX-icon-rule/main/icon/05icon/NAS(2).png # > 精简业务分流 AI服务 = select, 美国节点, 新加坡节点, 日本节点, 节点选择, DIRECT, icon-url=https://raw.githubusercontent.com/lige47/QuanX-icon-rule/main/icon/04ProxySoft/chatgpt(white1).png 国外服务 = select, 节点选择, 香港节点, 美国节点, 新加坡节点, 日本节点, DIRECT, icon-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/United_Nations.png 流媒体 = select, 香港节点, 美国节点, 新加坡节点, 日本节点, 节点选择, icon-url=https://raw.githubusercontent.com/Rabbit-Spec/Surge/Master/Conf/icon/GlobalMedia.png 电报信息 = select, 新加坡节点, 香港节点, 节点选择, icon-url=https://raw.githubusercontent.com/lige47/QuanX-icon-rule/main/icon/04ProxySoft/telegram(blue1).png 苹果微软 = select, DIRECT, 节点选择, icon-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Apple.png # > 地区自动筛选 # 测速 URL 按地区分散到两个不同的探测端点,避免单一探测地址异常时影响所有分组评分 香港节点 = smart, include-other-group="订阅节点,自建节点", policy-regex-filter=(?i)(?:^🇭🇰|香港|Hong(?:[\s_-]*Kong)?|(?:^|[-_/|\s])HK(?:G)?(?:[-_/|\s]|$)), url=http://connectivitycheck.gstatic.com/generate_204, interval=600, timeout=5, tolerance=50, icon-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Hong_Kong.png 美国节点 = smart, include-other-group="订阅节点,自建节点", policy-regex-filter=(?i)(?:^🇺🇸|美国|美國|United[\s_-]*States|(?:^|[-_/|\s])US(?:A)?(?:[-_/|\s]|$)), url=http://cp.cloudflare.com/generate_204, interval=600, timeout=5, tolerance=50, icon-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/United_States.png 日本节点 = smart, include-other-group="订阅节点,自建节点", policy-regex-filter=(?i)(?:^🇯🇵|日本|Japan|(?:^|[-_/|\s])JP(?:N)?(?:[-_/|\s]|$)), url=http://connectivitycheck.gstatic.com/generate_204, interval=600, timeout=5, tolerance=50, icon-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Japan.png 新加坡节点 = smart, include-other-group="订阅节点,自建节点", policy-regex-filter=(?i)(?:^🇸🇬|新加坡|Singapore|(?:^|[-_/|\s])SG(?:P)?(?:[-_/|\s]|$)), url=http://cp.cloudflare.com/generate_204, interval=600, timeout=5, tolerance=50, icon-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Singapore.png 韩国节点 = smart, include-other-group="订阅节点,自建节点", policy-regex-filter=(?i)(?:^🇰🇷|韩国|韓國|한국|Korea|(?:^|[-_/|\s])KR(?:[-_/|\s]|$)), url=http://connectivitycheck.gstatic.com/generate_204, interval=600, timeout=5, tolerance=50, icon-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Korea.png 德国节点 = smart, include-other-group="订阅节点,自建节点", policy-regex-filter=(?i)(?:^🇩🇪|德国|德國|Germany|Deutschland|(?:^|[-_/|\s])DE(?:U)?(?:[-_/|\s]|$)), url=http://cp.cloudflare.com/generate_204, interval=600, timeout=5, tolerance=50, icon-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Germany.png 英国节点 = smart, include-other-group="订阅节点,自建节点", policy-regex-filter=(?i)(?:^🇬🇧|英国|英國|United[\s_-]*Kingdom|Britain|(?:^|[-_/|\s])(?:UK|GB|GBR)(?:[-_/|\s]|$)), url=http://cp.cloudflare.com/generate_204, interval=600, timeout=5, tolerance=50, icon-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/United_Kingdom.png [Rule] # ============================================================ # 优先级: # ① PT 统一走 PT专用分组(最高,防 DNS 泄露,可故障切换) # ② 微信强制直连(聊天、图片、头像、小程序) # ③ LAN 直连 # ④ NTP 时间服务器直连(Shadow-TLS 时钟同步关键) # ⑤ 安全拦截(Firewall + 广告) # ⑥ 精简分流(AI / YouTube / Netflix / 电报 / 平台) # ⑦ 国内直连 # ⑧ 兜底代理 # ============================================================ # > 1. PT 站点统一走 PT专用分组(最高优先级,no-resolve 防 DNS 泄露) RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/PrivateTracker/PrivateTracker.list,PT专用,"update-interval=86400",no-resolve # > 2. 微信强制直连(优先于广告、国外代理及国内大规则集) RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/WeChat/WeChat.list,DIRECT,extended-matching,"update-interval=86400",no-resolve # 微信图片/头像/CDN 兜底:远程 WeChat 规则未覆盖这两个域名 DOMAIN-SUFFIX,gtimg.cn,DIRECT,extended-matching DOMAIN-SUFFIX,myqcloud.com,DIRECT,extended-matching # > 3. LAN 直连 RULE-SET,LAN,DIRECT # > 4. NTP 时间服务器直连 DOMAIN,time.apple.com,DIRECT DOMAIN,time.windows.com,DIRECT DOMAIN,time.nist.gov,DIRECT DOMAIN,ntp.aliyun.com,DIRECT DOMAIN,cn.pool.ntp.org,DIRECT DOMAIN,pool.ntp.org,DIRECT # > 5. Aegis Firewall 安全拦截(高优) RULE-SET,https://raw.githubusercontent.com/Thoseyearsbrian/Aegis/main/rules/Malware_IOC_Block.list,REJECT,"update-interval=86400",no-resolve RULE-SET,https://raw.githubusercontent.com/Thoseyearsbrian/Aegis/main/rules/Phishing_Block.list,REJECT,"update-interval=86400",no-resolve # > 6. 广告拦截 DOMAIN-SET,https://ruleset.skk.moe/List/domainset/reject.conf,REJECT,extended-matching,"update-interval=86400" RULE-SET,https://ruleset.skk.moe/List/non_ip/reject.conf,REJECT,extended-matching,"update-interval=86400" # > 7. 精简分流 RULE-SET,https://raw.githubusercontent.com/Rabbit-Spec/Surge/Master/Rules/AIGC.list,AI服务,"update-interval=86400" RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/YouTube/YouTube.list,流媒体,"update-interval=86400" RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/Netflix/Netflix.list,流媒体,"update-interval=86400" RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/Telegram/Telegram.list,电报信息,"update-interval=86400" RULE-SET,https://raw.githubusercontent.com/Rabbit-Spec/Surge/Master/Rules/TelegramASN.list,电报信息,"update-interval=86400" RULE-SET,https://raw.githubusercontent.com/Rabbit-Spec/Surge/Master/Rules/Apple.list,苹果微软,"update-interval=86400" RULE-SET,https://raw.githubusercontent.com/Rabbit-Spec/Surge/Master/Rules/Microsoft.list,苹果微软,"update-interval=86400" RULE-SET,https://raw.githubusercontent.com/Rabbit-Spec/Surge/Master/Rules/Google.list,国外服务,"update-interval=86400" RULE-SET,https://raw.githubusercontent.com/Thoseyearsbrian/Aegis/main/rules/GitHub.list,国外服务,"update-interval=86400" RULE-SET,https://raw.githubusercontent.com/Thoseyearsbrian/Aegis/main/rules/Proxy.list,国外服务,"update-interval=86400" # > 8. 国内直连兜底(放在专项代理规则之后) RULE-SET,https://raw.githubusercontent.com/Rabbit-Spec/Surge/Master/Rules/China.list,DIRECT,"update-interval=86400" RULE-SET,https://raw.githubusercontent.com/Rabbit-Spec/Surge/Master/Rules/ChinaCIDR.list,DIRECT,"update-interval=86400",no-resolve GEOIP,CN,DIRECT # > 9. 兜底 FINAL,节点选择,dns-failed [Host] # > 阿里 DNS 加速 dns.alidns.com = 223.5.5.5 # > NTP 时间服务器使用 system 解析 time.apple.com = server:system time.windows.com = server:system time.nist.gov = server:system ntp.aliyun.com = server:system cn.pool.ntp.org = server:system pool.ntp.org = server:system展開 · 172 行複製结语Surge 的配置本质上是一套"分组 + 规则"的声明式系统,一旦理清 [Proxy]、[Proxy Group]、[Rule] 三者之间"节点 → 分组 → 规则调用分组"的关系,再复杂的配置也是可以逐段理解和调试的。建议先从一份精简模版开始,跑通基本的直连/代理分流后,再逐步叠加广告拦截、分应用规则等进阶功能。
一、配置文件的整体结构
一份 Surge 配置文件通常由以下几个 [Section] 组成,按照书写顺序排列,但实际生效顺序有各自的规则(详见后文):
模块
作用
`[General]`
全局参数:DNS、日志、监听端口、跳过代理的地址段等
`[Proxy]`
定义每一个代理节点(服务器信息)
`[Proxy Group]`
把若干节点组合成"策略组",供规则调用
`[Rule]`
决定什么流量走哪个策略组或直连/拒绝
`[Host]`
域名的自定义解析(类似本地 hosts)
`[URL Rewrite]` / `[Header Rewrite]`
请求重写(可选)
`[Script]` / `[MITM]`
脚本与中间人解密(可选,进阶功能)
理解这个结构后,写配置的思路就是:先定义"有哪些出口"(Proxy / Proxy Group),再定义"什么流量走哪个出口"(Rule),General 和 Host 则是打底的基础设置。
二、[General]:全局设置
这一段决定 Surge 本身的行为,常见且重要的字段包括:
写这一段的原则是:先保证稳定连接和不误伤局域网流量,再考虑其他细节优化。
三、[Proxy]:定义节点
每一行代表一个代理节点,基本格式是:
以常见的 Snell 协议为例:
Surge 支持 Shadowsocks、VMess、Trojan、Snell、HTTP/SOCKS5 等多种协议,具体参数请以对应协议文档为准。这里的信息通常来自你的代理服务商或自建服务器,不要把它写死分享给别人。
四、[Proxy Group]:组织策略组
单个节点不便于管理,Surge 用"策略组"把节点组合起来,供规则统一调用。常见的组类型:
写法示例:
实用技巧:可以按地区(美国、日本、香港……)建立自动测速分组,再按业务场景(AI 服务、流媒体、电报等)建立引用地区分组的上层分组,这样流量分流会更精细,也方便后续维护。
五、[Rule]:分流规则
规则决定"这条流量该走哪里",Surge 按从上到下的顺序匹配,命中第一条规则后立即生效,因此规则的排列顺序非常关键。常见规则类型:
排列建议的通用顺序(从上到下):
这个顺序背后的逻辑是:越"特殊"、越怕被误伤的流量,规则要放得越靠前;越"通用"的兜底规则,放得越靠后。
六、[Host]:自定义域名解析
作用类似系统的 hosts 文件,用于指定某个域名解析到固定 IP,或者强制走系统 DNS(server:system)。常见用途是解决时间同步、内网服务解析等对 DNS 解析路径比较敏感的场景。
七、编写建议与常见坑
八、可直接使用的配置模版
下面是一份已经去除个人节点、订阅链接等私密信息的通用模版,结构覆盖了本文提到的所有模块,可以作为你自己配置的起点。使用前请:
结语
Surge 的配置本质上是一套"分组 + 规则"的声明式系统,一旦理清 [Proxy]、[Proxy Group]、[Rule] 三者之间"节点 → 分组 → 规则调用分组"的关系,再复杂的配置也是可以逐段理解和调试的。建议先从一份精简模版开始,跑通基本的直连/代理分流后,再逐步叠加广告拦截、分应用规则等进阶功能。