MENU

Surge 教程 | 入门篇

• November 29, 2019 • 教程·知识共享

[scode type="green"]2020/03/11更新:TF4.1.0(Build1475)已加入对Trojan协议的支持[/scode]

1. 简介

Surge 是基于 iOS 9 的新特性 Network Extension 开发的一款网络调试工具,工作原理是使用 Packet Tunnel Provider 给系统套上一个代理,Surge 有两个主要组件:Surge 代理服务器和 Surge TUN 接口。程序运行之后,Surge 会将自身设置为默认的 HTTP/HTTPS 代理服务器来处理所有的 HTTP/HTTPS 流量。针对一些不服从系统代理设置(如 Mail.app )的应用程序 ,将由 Surge 的 TUN 接口来进行处理。
Surge 会接管全局的(几乎)所有通信,所以所有网络方面的电量消耗都会被算在 Surge 头上,实际上 Surge 的运行功耗很少,使用中也不会感到 Surge 对电量有明显影响。

IMG_7152.PNG

2. 特点

  • 高性能、高稳定性和高效率:Surge可以使用最少的系统资源以工业级的稳定性平稳地处理所有网络流量。
  • 灵活的规则系统:您可以基于域名,IP CIDR,GeoIP等编写转发规则。Surge可以使用HTTP / HTTPS / SOCKS5 / SOCKS5-TLS / Shadowosocks协议自动将请求代理到其他服务器。
  • HTTPS解密:通过中间人攻击来解密HTTPS流量。证书生成器将帮助您生成操作系统信任的CA证书,以进行调试。
  • 本地DNS映射:Surge支持本地定制的DNS映射。它的多个功能模块,包括通配符,别名和自定义DNS服务器,将能够满足各种需求。
  • 代理组:您可以将多个代理分类为一个组,并且将根据该组采用策略。代理组可以配置为自动速度测试(基于基准URL访问速度的选择策略),SSID(基于Wi-Fi SSID的选择策略)和手动选择。
  • HTTP重写:您可以使用自定义规则将HTTP / HTTPS请求重写为另一个URL,也可以阻止请求。
  • 远程仪表板:Surge仪表板可以通过USB或网络连接到远程Surge iOS或Surge Mac实例。
  • 全面的IPv6支持:所有功能都可以在IPv6环境中使用。

点此查看 ss-libev 的支持情况:

目前 Surge 支持 ss-libev 3.0 的所有加密方式,包括:

  • rc4
  • rc4-md5
  • aes-128-cfb
  • aes-192-cfb
  • aes-256-cfb
  • aes-128-ctr
  • aes-192-ctr
  • aes-256-ctr
  • bf-cfb
  • camellia-128-cfb
  • camellia-192-cfb
  • camellia-256-cfb
  • cast5-cfb
  • des-cfb
  • idea-cfb
  • rc2-cfb
  • seed-cfb
  • salsa20
  • chacha20
  • chacha20-ietf
  • aes-128-gcm
  • aes-192-gcm
  • aes-256-gcm
  • chacha20-ietf-poly1305

推荐使用 chacha20-ietf-poly1305。

3. Surge iOS/iPadOS 独家功能

  • 所有功能都在蜂窝网络上运行。
  • 捕获来自设备上任何应用程序的所有HTTP / HTTPS / TCP通信,并遵循高度可配置的规则重定向到HTTP / HTTPS / SOCKS5 / Shadowosocks代理服务器,即使该应用程序不遵循系统代理设置。
  • 即使在蜂窝网络上,也可以覆盖系统DNS设置,并通过同时查询所有DNS服务器来提高性能。
  • 通过通过Wi-Fi或USB电缆将Surge仪表板连接到Surge iOS,可以监视和分析iOS设备上的网络请求。通过USB电缆连接时,您甚至可以检查蜂窝网络请求。

[scode type="lblue"]看到这里,吓到了吗?其实不必担心,不懂网络原理一样不影响使用翻墙功能。
请接着向下看。[/scode]

4. 下载与安装

Surge 目前最新版本为 Surge 4,可直接在非中国大陆区的 AppStore 搜到,免费下载安装。
Surge 的网络代理功能需要解锁 Pro 授权,可通过 AppStore 内购或访问其官网进行购买
iOS 3个设备的授权价格49.99美元。
[scode type="yellow"]免费版无法进行科学上网,无购买意愿的朋友可以关闭此页面。[/scode]
[scode type="lblue"]此教程初次编写时的系统环境
iPad 2018 (国行),128G / iPadOS 13.3 beta3 (17C5032d)
Surge 4, Build 1419[/scode]
[scode type="yellow"]文档中的某些内容可能随时间变化而失效。[/scode]

5. 快速设置

5.1 有订阅/托管链接的情况下:

请先在节点服务商的官网或其他渠道复制您的订阅/托管链接。

打开 Surge 4 软件,点击左上角下拉菜单。

IMG_7147.PNG

在弹出的窗口中选择 “从 URL 下载配置”

IMG_7148.PNG

将复制好的订阅/托管链接粘贴到文本框内。

IMG_7149.jpg

等待若干秒,可以看到刚下载的配置文件。(此处图片仅作为演示,请以实际情况为准)

IMG_7150.jpg

点击策略组可以确认是否成功加载。

IMG_7151.PNG

回到软件首页,点击左上角的 开始。首次启动时会提示是否创建 VPN 隧道,请点击 允许

IMG_7152.PNG

此时你的设备将默认连接节点列表中的第一个节点。

如何切换节点:

点击下边的策略组,然后点击展开想要更换节点的策略组。此处演示默认节点策略组 Proxy 。

点击 Proxy ,然后点击测试延迟。

想使用哪条线路,直接点击节点名字即可。一般选择延迟较低的。

IMG_7155.PNG

关于 Surge 的延迟测试:

Q:为什么Surge/Shadowrocket/Quantumult 测延迟差距这么大?
A:测试方式不同。
Surge 测试的是从目标 policy 返回 http response header 数据包的时间。
Shadowrocket 支持两种测速方式(ICMP/TCP),默认为 ICMP 模式(即 Ping)。
Quantumult 采用 SSH 测速模式(22 端口)。

5.2 在无订阅/托管链接情况下:

请参考进阶教程:https://merlinblog.xyz/wiki/surge1.html

6. Surge DNS 配置指南

[scode type="yellow"]DNS 服务器的作用:
在 IP 网络上(日常所使用的网络基本都是 IP 网络,包含 IPv4 网络和 IPv6 网络),必须使用 IP 地址才能访问另一个主机,但是由于 IP 地址难以记忆,且 IP 地址通常和地理位置相关不容易进行修改,所以一般我们使用域名去访问另一个主机,在访问的过程中通过 DNS 服务器将域名解析成 IP 地址。[/scode]

配置 Surge DNS 服务器的一些要点:

  • 速度与稳定性:DNS 服务器需要保证稳定性和速度,所以应尽量使用地理位置靠近的 DNS 服务器。
  • edns-client-subnet 支持:对于巨型网站(如 apple.com),一般在全世界都配置有 CDN 服务器,有 ECS 支持的 DNS 服务器可以根据访问源 IP 地址,返回最合适的服务器 IP 地址。(但这种设计会有隐私泄露的可能,所以 1.1.1.1 并不支持。)
  • 无需考虑使用代理策略的主机:如果请求使用了代理策略,那么并不会在本地执行 DNS 查询,所以不需要为该类网络考虑 DNS 问题。(且只有代理服务器在远端执行 DNS 查询,才能确保得到一个最适合该代理服务器的 CDN 节点服务器地址。)

综上,对于中国用户,推荐的 DNS 配置如下

  • 如果经常使用的网络没有 DNS 劫持问题:配置为使用系统 DNS 配置并追加 223.5.5.5 和 114.114.114.114 作为冗余。
  • 如果经常使用的网络存在 DNS 劫持问题:配置为仅使用 223.5.5.5 和 114.114.114.114。

8.8.8.8 和 1.1.1.1 在国内连通性不稳定,速度慢,且对国内网站的 CDN 支持不佳,不推荐使用。


7. 关于规则匹配过程的进阶说明

除了在使用 DIRECT 策略时需要使用 DNS 查询外,在进行规则匹配时也可能触发 DNS 查询,Surge 会按照规则顺序从上至下依次测试规则,如果一个使用域名的请求遇到了一个 IP 类型规则(IP-CIDR/IP-CIDR6/GEOIP)且该规则不带有 no-resolve 选项,那么将触发 DNS 查询。

所以应将所有非 IP 类规则置于规则的顶部,将 IP 类规则置于尾部,避免并不需要进行本地 DNS 查询的请求产生额外的 DNS 查询。

8. 关于部分APP提示代理的说明

部分应用在启动时会检查是否配置了代理,如果检查到代理就会停止工作(如浦发银行)。这是一种不专业的做法,代理不会既不会降低安全性,也是在公司网络下一种常见的配置。

Surge 在启动时,为了实现多种复杂功能,会同时配置虚拟代理设置和虚拟 VPN,从而引发上述应用的反代理检查。(部分同类应用没有此问题是因为只配置了虚拟 VPN)

该问题可通过开启 Surge 的兼容性模式 VIF Only 解决,但是开启后会导致 HTTP 相关高级功能失效,不推荐。

9. 拓展阅读

《Surge 官方中文指引:理解 Surge 原理》
Official Guidance:Understanding Surge

Last Modified: October 4, 2020
Archives Tip
QR Code for this page
Tipping QR Code
Leave a Comment

14 Comments
  1. 1111 1111

    您好,surge都支持什么协议

    1. @1111你好。Surge目前支持Shadowsocks/VMess/Trojan/Snell/SOCKS5/SOCKS5-TLS/HTTP/HTTPS这些协议。

    2. 1111 1111

      @Sabrina好的谢谢

    3. @1111不客气。

  2. Hope Hope

    屋主问下,刚换ios,希望推荐一款 vpn app,目前使用的是 Trojan

    1. @Hope你好,建议使用小火箭吧:
      https://merlinblog.xyz/wiki/shadowrocket.html
      实惠好用,性价比很高。

  3. jj jj

    最后错误:No route to host
    显示这个是为什么呢?

    1. @jj不太清楚,还没有遇到过。建议到surge群里问问看:https://t.me/loveapps

  4. pc pc

    不懂就问,surge为什么这么贵?50美金竟然还不是买断,后续每年还需要15美金。它能够做到什么其他代理软件做不到的事情么

    1. @pcSurge的基础功能是买断制,只是大版本更新是需要后续订阅的。如果觉得更新的功能自己并不需要,也可以选择不订阅。Surge的定位是网络调试工具,代理功能算是个附属品吧,如果是开发者,会很喜欢这款工具,用来干活挺不错的。如果只是用来代理上网,那有点大材小用了。只翻墙,可以选择定位本来就是翻墙的Shadowrocket或者QuantumultX等,性价比更高。

    2. 高凯毅 高凯毅

      @Sabrina我才刚买。看了你的文章我想改用Shadowrocket 了
      本来就只是翻个墙。不知道还能不能退,给售后发邮件也没有回复我,或者您这边有需要的朋友吗。我可以转卖的

    3. @高凯毅哈哈哈,还是等邮件吧。我身边暂时没有需要Surge的。

  5. 头铁呀,备案博客敢发翻墙教程,牛逼哟