Support | 微信 & TG: @scomper

Surge 的增强模式(TUN)

2016.12.01 08:45

以前讨论过如何让终端走代理的话题,通过修改 ~/.zshrc 配置文件让终端的网络访问能够通过 HTTP 代理访问网络,但是「终端」中的网络访问这些「不走寻常路」的只能借助 Proxifier 强制其走代理服务。这样的结果就是要完全无障碍的访问网络,至少需要 Surge + Proxifier 这样两个应用才能实现。不过升级到 Surge 2.1.0 (311) 版本以后这个问题终于解决了,启用 Surge 新的 Enhanced Mode(TUN 模式)后就不再需要安装 Proxifier。

启用 TUN 模式

TUN 模式是以按需要开关的菜单项方式提供的,勾选菜单项中的 Enhanced Mode 就是启用,去掉勾选就是关闭(TUN 总开关,全局和规则模式都受此项控制)。需要注意的是启用 TUN 模式前,Surge 配置中需要定义 dns-server 参数,因为启动 TUN 后不能获取到系统的 DNS 配置

Mac 版的 TUN 模式与 Surge iOS 版本的原理基本一致,对于所有来自 TUN 的 DNS 请求,都会返回一个 Fake IP(假 IP),从而让网络访问走自己的 TUN 通道,Surge Mac TUN 并没有声明为 default 路由,仅声明了 Fake IP 段,所以不影响其他的 IP 访问。不过也因为这种工作原理的原因,某些直接使用 IP 进行访问的应用 Surge 的 TUN 模式也无能为力。

TUN 模式的配置


dns-server = system, 114.114.114.114, 223.5.5.5, 119.29.29.29

配置中包含 dns-server 参数,菜单项勾选 Enhanced Mode,以上条件满足就启用了全局 TUN 模式,它会对所有域名都启动了 TUN 支持模式。

如果只想针对具体的域名而不是所有域名进行 Fake IP,避免干扰,可以进一步修改配置,启用 TUN 规则模式的参数,通过规则判断从而让具体域名走 TUN 模式。

TUN 规则匹配模式,除了 dns-server 参数 ① 以外,需要在 General 参数段添加一行 enhanced-mode-by-rule = true ② ,告诉 Surge 现在是 TUN 规则匹配模式而不是全局模式,同时具体的 Rule 参数段针对性的规则后添加上 enhanced-mode 参数 ③。


dns-server = system, 114.114.114.114, 223.5.5.5, 119.29.29.29
enhanced-mode-by-rule = true


DOMAIN-SUFFIX,bintray.com,Proxy,enhanced-mode//Terminal
DOMAIN-SUFFIX,github.com,Proxy,enhanced-mode//Terminal

配置启用 TUN 模式后,如果依旧遇到无法访问的网络问题,推荐先切换成全局模式(enhanced-mode-by-rule = false)判断是否访问正常,然后通过 Dashboard 面板查看当前的访问里的 TCP 条目,检查对应的规则后是否已添加 enhanced-mode 参数。

例如,系统词典的维基百科查询、终端的网络访问(GitHub等)对应的域名规则后都已添加 Enhanced Mode 参数,通过 Surge 的 Dashboard 能观察到这些访问的 Method 显示的也都是 TCP(Method:HTTPS、HTTP、SOCKS、TCP)。

针对个别域名的 Enhanced Mode 模式有可能会导致这个域名 handle 不到其他请求,所以如无必要直接从菜单中选择全局 Enhanced Mode,用完了再关闭。

Comments
Write a Comment