Support | 微信 & TG: @scomper

Surge Mac 3 配置变化

2018.10.09 08:19

Surge Mac 3 增加了很多新的功能,配置文件上也不少对应的变化。一方面绝大多数配置都可以在 UI 界面中完成,另一方面配置文件的结构也变的更简洁清晰。

新增加的规则集(RuleSet) 和策略组文件(GroupList)以 list 文件的方式独立存在,两者都可以通过 URL 的方式实现远程加载,便于分享和管理。本地的 list 文件和配置文件放在同一个目录,例如 iCloud 云盘的 Surge 目录下。

策略组文件

上面的图示里是适配 Surge Mac 3 后的配置文件内容和本地 iCloud 文件夹中的文件列表。Proxy Group 里使用了 GroupList 特性,按代理服务器所在的地域分别新建了几个 .list 文件,并以 policy-path=groupAuto.list 的方式进行调用。

[Proxy Group]
Proxy = select, Auto, Scene, HK, KT, TM
Scene = ssid, default = Auto, cellular = KT
Auto = fallback, policy-path=groupAuto.list, url = http://www.bing.com/
HK = url-test, policy-path=groupHK.list, url = http://www.bing.com/
KT = url-test, policy-path=groupKT.list, url = http://www.bing.com/
TM = select, policy-path=http://example.com/teamshare.txt

策略组有 4 种供选择的类型,其中自动测试(url-test)和 Fallback 组会自动定时访问指定的 URL(默认是 bing.com)来判断和选择合适的服务器,url-test 按访问的延时作为切换依据,Fallback 按是否可用为判断依据。

GroupList 文件是一个纯文本文件,每一行为一个代理声明(见下图所示),如果不知道具体的语法,可以到 UI 界面中添加好服务器,再另存为 list 文件。本地保存为 list,如果放在远端私有服务器保存为 txt,例如范例中的 TM 服务器组,小的团队共享上网可以采用这种方式,分发给所有人的配置文件都一样,专人维护 teamshare.txt 的内容就行( http://example.com/ 需直连可访问)。

配置文件中原来的 [Proxy] 可以和 [Proxy Group] 并存,如果按照上面的范例也可以只保留 [Proxy Group] ,全部从 list 文件读取服务器。 [Proxy Group] 包含 list 路径的语句中不支持嵌套,但是可以如范例一样和其它策略类型组合使用。

[Proxy] 和 [Proxy Group] 混合使用的范例,本地只添加一个 groupAuto.list ( 范例 https://github.com/scomper/surge-list) 文件用于 Auto 策略组的服务器选择。需要注意的是服务器的命名不能在 Proxy 和 Proxy Group 重复定义。

[Proxy]
HK = https, abc-hk.com, 443, username=username, password=123456
KT = ss, abc-kt.com, 443, encrypt-method=aes-128-gcm, password=123456
[Proxy Group]
Proxy = select, Auto, Scene, HK, KT
Scene = ssid, default = Auto, cellular = KT
Auto = fallback, policy-path=groupAuto.list, url = http://www.bing.com/

Proxy 服务器的写法上也有小的变化,以前的 custom 现在改成了 ss,后面的 ss.module 模块也不再需要。如果不知道具体怎么写可以到 UI 界面(代理-添加代理)中添加。

groupAuto.list 的内容就是一行一个服务器地址,保存在本地,也就是 iCloud/Surge 文件夹下即可。

ABC HK01 = https, abc-hk.com, 443, username=username, password=123456
ABC HK02 = https, abc-hk.com, 6663, username=username, password=123456
ABC KT02 = ss, abc-kt.com, 443, encrypt-method=aes-128-gcm, password=123456

单线路的配置范例,其它部分一样,Proxy 的部分只有一条线路。Rule 中所有指向代理的部分最后都是写 Proxy。下面的范例里增加了广告过滤的通过方式:Ad-GIF 拒绝并返回透明 GIF 图适合疯狂的请求,Ad-Block 直接拒绝,Ad-Pass 不拦截广告。

[Proxy]
Proxy = ss, abc-kt.com, 443, encrypt-method=rc4-md5, password=密码
Ad-Pass = direct
Ad-Block = reject
Ad-GIF = reject-tinygif

[Proxy Group]
AdBlock = select, Ad-GIF,Ad-Block,Ad-Pass

[Rule]
RULE-SET,https://github.com/scomper/surge-list/raw/master/video.list,Proxy

规则集文件

规则集文件实现了对以前版本规则的分割,可以按照规则用途将规则保存成一个个独立的 list 文件,通过 RULE-SET 的语句和原来的规则混合使用,所有的规则依旧按顺序加载,管理起来也更方便。规则集文件既可以保存在本地(iCloud 云盘的 Surge 目录下),也可以如下图所示访问远端的 URL。

单独处理的规则可以按原来的规则写法写在 RULE-SET 语句的前面,实现个人规则和共享规则的混合使用。因为规则是顺序执行的,所以即便 list 中包含的某些规则也可以通过前置的规则进行覆盖。例如下图所示的 DOMAIN-SUFFIX,scomper.me,DIRECT,notification-text="Welcome to scomper's blog.",只需将传统的规则语句放在 RULE-SET 语句前面。

规则语句中的 notification-text 是新的通知特性,可以在匹配规则条件后弹出系统通知,通知内容是 = 号后包含的字符串,可以用于域名或内外网访问调试。

规则集文件的写法和以前的规则写法基本一致,不同的是规则语句最后不需要写代理的名称,另外 Surge Mac 3 内置了部分规则 RULE-SET,SYSTEM,DIRECTRULE-SET,LAN,DIRECT,在 UI 界面点击内置策略集后面的 ? 图标查看。

远端的 list 文件默认的刷新周期是 24 小时,通过 UI 界面中的「代理-编辑代理规则-双击 list 规则」手动更新。Surge Mac 3 中 GeoIP(IP 地址和地理位置的接口数据库) 也提供了手动更新的交互,在「设置-通用」中可以手动更新。

[Rule]
URL-REGEX,^https?://www\.duokan\.com/pictures?,REJECT
URL-REGEX,^https?://www\.duokan\.com/promotion_day,REJECT
DOMAIN-SUFFIX,scomper.me,DIRECT,notification-text="Welcome to scomper's blog."
# Rulesets
RULE-SET,SYSTEM,DIRECT
RULE-SET,https://github.com/scomper/surge-list/raw/master/apple.list,Proxy
RULE-SET,https://github.com/scomper/surge-list/raw/master/adblock.list,REJECT
RULE-SET,https://github.com/scomper/surge-list/raw/master/reject.list,REJECT-TINYGIF
RULE-SET,https://github.com/scomper/surge-list/raw/master/cn.list,DIRECT
RULE-SET,https://github.com/scomper/surge-list/raw/master/video.list,HK
RULE-SET,https://github.com/scomper/surge-list/raw/master/blocked.list,Proxy
RULE-SET,https://github.com/scomper/surge-list/raw/master/telegram.list,Proxy
RULE-SET,LAN,DIRECT
# GeoIP CN
GEOIP,CN,DIRECT
FINAL,Proxy,dns-failed

范例中我按用途将规则分成了 7 个规则集文件,广告和隐私拦截的分别是 adblock.list 和 reject.list,YouTube 视频访问的规则单独放在 video.list 当中,顺序上排在 blocked.list 的前面,最后是单独针对 Telegram 的 telegram.list 规则集。

规则集之间也有顺序要求,如果你组合使用不同分享来源的规则集时需要注意。

规则集的另一个优势是可以选择性的加载或组合规则,例如,很多人觉得网站分享的 reject.list 过于严格,可以在配置里将这一句注释掉指向到本地自己的 reject.list。

把远程访问的这一句,
RULE-SET,https://github.com/scomper/surge-list/raw/master/reject.list,REJECT-TINYGIF 改成本地的 reject.list,下载上面链接的 list 文件,用文本编辑器编辑保存在 iCloud/Surge 目录,同时配置中改为下面的语句,这样既可以自动更新在线共享的规则集,也能实现个性化的过滤。
RULE-SET,reject.list,REJECT-TINYGIF

使用规则集后,控制台(dashboard)中匹配的规则会是规则集,不会显示规则集中对应的具体规则。

逻辑规则 AND, OR, NOT

逻辑规则提供了更灵活的判断模式,适用于复杂的需求场景。配合新的规则类型 SRC-IP, IN-PORT, DEST-PORT 能组合成更精确的判断。SRC-IP 匹配访问设备 IP,IN-PORT 匹配监听端口,DEST-PORT 匹配目标端口。

为了测试创建了一个简单的组合规则用于测试博客服务器的国内和国外访问,本机访问博客时走直连,PD 虚拟机访问时走代理。10.211.55.3 是虚拟机访问时的 IP。

[Rule]
AND,((SRC-IP,10.211.55.3),(DOMAIN-SUFFIX,scomper.me)),Proxy
DOMAIN-SUFFIX,scomper.me,DIRECT

逻辑规则还可以相互嵌套使用,例如:

AND,((SRC-IP,192.168.20.20), (OR,((URL-REGEX,^http:\/\/.*:81\/$), (URL-REGEX,^http:\/\/.*:80\/$)))),DIRECT

访问请求是 http:// :81 或(or 条件) http:// :80 任何一个开头,并且(and 条件)访问设备的 IP 地址是 192.168.20.20,匹配此规则直连。

UI 界面的「进程」「设备」以及 Dashboard 最近请求列表项上均可以右键添加规则。

计费模式

Surge Mac 3 新增加了「计费模式」,启用计费模式后会限制网络访问以节省流量,只有放行的应用可以访问网络。例如图示中启用「计费网络模式」后单独放行了 Telegram,从控制台能看到网络访问里其它的应用请求都被 reject,只有 Telegram 能连通。

计费网络服务适合用于连接热点网络的场景,例如,当连接到 iPhone 热点网络时自动打开计费模式(计费模式设置中添加 Wi-Fi 的 SSID)。

[SSID Setting]
"iPhone X" cellular-mode=true

自动开启计费模式的 SSID 会体现在配置文件 [SSID Setting] 段落,但是具体放行的进程只能在 UI 界面中操作,Surge 会保存最后的放行(开关项为绿色)设置项。

其它注意事项

1、list 文件和配置文件都需要保存在 iCloud/Surge 目录,可以在「设置-配置」中检查配配置目录是否是「保存在 iCloud Drive」,和 Surge iOS 共用配置需要先在 Surge iOS 版启用「更多-iCloud Drive 配置同步」。

2、目前 Surge iOS 最新的 TF 版(3.4.0 Build 1200)兼容 RULE-SET 特性(无法读取本地的 list 文件,URL 的方式没有问题),暂时不支持 policy-path 策略组特性,希望 Mac 和 iOS 共用同一个配置的用户修改配置时不引入 policy-path 特性即可。
3、 加载配置时提示「策略组包含未知策略」
出现这种问题,一般是在套用范例配置时有服务器名称没有指定,例如,下面的范例中 HK、KT 都有指定服务器,但是 US 没有定义过,所以 Proxy Group 在加载时会提示「策略组包含一个未知的策略:Proxy」,将 US 从其中删掉或者在 [Proxy] 部分指定服务器即可。

[Proxy]
HK = https, abc-hk.com, 443, username=username, password=123456
KT = ss, abc-kt.com, 443, encrypt-method=aes-128-gcm, password=123456
[Proxy Group]
Proxy = select, Auto, Scene, HK, KT, US
Scene = ssid, default = Auto, cellular = KT
Auto = fallback, policy-path=groupAuto.list, url = http://www.bing.com/

适用于 Surge Mac 3 的配置范例文件下载地址:
https://github.com/scomper

Comments
Write a Comment