Surge Guide — 轻松访问家中的网络服务

近期我开始写一些新手向的使用指引,介绍一些不常见的 Surge 使用方式。不定期更新。

相信各位在自己的家中都有一些长期联网的设备,在外出时可能需要访问,比如 NAS 等,通常有两个方式实现:

  1. 直接设置 NAT 端口转发
  2. 架设 VPN 服务器

方法 1 配置简单,但是问题在于直接将相应的服务暴露在公网上,安全性较低,且当增加服务时需要不断去维护转发表。

方法 2 配置起来比较麻烦,但是安全性高,连上之后可以直接访问内网内所有设备。但是 VPN 发动比较麻烦,对所处的网络也有一定要求。

利用 Surge iOS,可以做到无缝的远程安全访问内网设备。

首先我们需要做好以下准备:

  1. 内网中需要一个可以运行代理服务器的设备(如 RaspberryPi、路由器)
  2. DDNS 服务及客户端(DSM 可作为客户端,很多路由器也支持,服务推荐使用花生壳,老牌服务商一直很稳定,且个人使用免费)
  3. 一个可配置的域名

正式开始:

  1. 首先我们需要在内网建立一个代理服务器,由于大家都比较熟悉 ss-server,推荐使用,配置起来非常简单。具体按照配置方法可以参照其他教程。此处假设该设备 IP 为 192.168.1.4,端口号 8388。

2. 配置路由,将 8388 端口的 TCP 访问转发至 192.168.1.4 的 8388。

3. 配置域名指向设备的内网 IP,比如

diskstation.internal.home.yach.me -> 192.168.1.20

gen8.internal.home.yach.me -> 192.168.1.30

假设 DDNS 已经将公网 IP 对应到 home.yach.me

4. 配置 Surge 规则,首先加入相应的 Proxy 设置

[Proxy]
HomeProxy = custom, home.yach.me, 8388,……

然后,为了使的在内网中使用时,不再通过代理进行转发,可以使用 SSID Group。

[Proxy Group]
Home=ssid, default=HomeProxy, HomeSSID=DIRECT, HomeSSID2=DIRECT

最后加入相应的规则

[Rule]
DOMAIN-SUFFIX,internal.home.yach.me,Home,force-remote-dns

(鉴于大部分内网使用的服务使用的都是 raw TCP,请一定加上 force-remote-dns)

5. 搞定,启动 Surge。现在在任何地方访问 *.internal.home.yach.me 都畅通无阻了。

(注 1:不要使用 home.yach.me 这样的容易猜测的域名,有导致自己的公网 IP 暴露的可能性。)

(注 2:新版的 ss-server 使用的是内建的 DNS Client,且没有读取 /etc/hosts,导致无法手动配置域名映射,所以要求准备一个可配置的域名。如果用其他代理服务,那么其实不需要一个真正的域名。)