iOS 9 有个激动人心的新特性 Network Extension 弥补了 iOS 长久以来无法定制底层网络 app 的不足。APN 代理不安全,成本高;虚拟专网速度不佳,爱掉线,阻塞问题严重…

surge

那么对于专业用户来说比较完美的方案必须是安全的,可低成本的,最大网络速度,无连接状态,国内外分流完美的 iOS 方案,那么现在这个堕落的愿望已经实现了,感谢苹果公司这么给(chi)力(dao)的 API 和 app 开发大牛。

Surge.app (App Store)是一款给专业用户使用的网络调试工具,使用比较复杂。它的工作原理是使用 packet tunnel provider,然后给系统套上一个代理,后端转发支持 http 代理,SSL 代理,和 Socks 代理。如果 app 尊重系统代理,就会走这个代理,如果不尊重,我们也可以通过规则强制流量走系统 tun 设备达到支持全部 app 的目的。用代理的好处是可以跟踪和调试网络,容易分流,ACL 功能更多,弹性更大更方便。

简单的开始可以直接导入一份 conf 文件(URL 或者 iTunes),例如这里的,对于不求甚解的用户来说你可以直接使用完事(但是你还是要改改服务器地址用户名什么的。。或者直接从供应商处获取导入 URL)。

配置的结构大概是这样,对于专业用户来说,理解应该不难

(rules) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[General]
# warning, notify, info, verbose
loglevel = notify

[Proxy]
# http, https, socks5
# SSLedge 使用 https,老式 APNp 用 http
Proxy = https, server, port, username, password, ciphers 

[Rule]
# 域名关键字,干掉不想要的请求
DOMAIN-KEYWORD,umeng.co,REJECT
...

# 常用网站优先匹配,加快速度。使用代理转发,完全没有 CDN 被干扰的问题~
DOMAIN-SUFFIX,cn,DIRECT
DOMAIN-SUFFIX,qq.com,DIRECT
DOMAIN-SUFFIX,ls.apple.com,DIRECT
DOMAIN-SUFFIX,apple.com,Proxy
...

# 强制这些不尊重系统代理的请求走 packet-tunnel-provider,解决 Twitter.app 和 Mail.app 收发邮件问题
DOMAIN-KEYWORD,twitter,Proxy,force-remote-dns
DOMAIN-KEYWORD,gmail,Proxy,force-remote-dns
# instagram.app 也没问题
DOMAIN-KEYWORD,instagram,Proxy,force-remote-dns
# Telegram.app 也没问题
IP-CIDR,91.108.56.0/22,Proxy,force-remote-dns
...

# LAN
IP-CIDR,192.168.0.0/16,DIRECT
...

# 其余的请求使用 GEOIP 判断服务器所在地,如果是国内的,走直连,搞定
GEOIP,CN,DIRECT

# 最后 Matchall,丢给代理
FINAL,Proxy

通过规则定义和组合,必然可以满足专业用户的需求,非常强大。配置可以使用 app 自带的 GUI,当然也有文本编辑方式。

由于 Surge 的核心和是个 http proxy,有些处理不了的请求我们可以强制 bypass 掉,走系统接口,这个可以在代理设置-高级处设置,如果你不太懂,请不要随意设置。