Ivan's Blog

使用 Surge Ponte 实现便捷的内网穿透

一直没机会尝试 Surge 这款软件的 Ponte 功能,最近家里闲置了一台之前的 M1 芯片 MacBookPro,所以想试试看 Surge 的内网穿透的效果。

如果你不知道什么是 Surge,可以先去 官网 看一下,简单的说,这是一个网络优化与调试的软件,集各种功能于一身的 Mac 平台下的全能网络工具,多数使用者仅仅用的是它的分流代理功能,但那只是其众多功能的一小部分。

如果你还不太了解内网穿透,则可以看这篇:聊一聊内网穿透

之前的方案

在这之前,家中的内网穿透用过以下 3 种方案:

  1. 使用路由器直接进行端口的服务一对一映射
  2. 使用 nginx 反向代理,对外暴露 81 端口 + 域名的方式访问家中各服务
  3. 使用 routerOS 的 l2tp VPN 服务器

几个方案各有优缺点。

第一种端口映射的方案不方便记忆服务的名称与端口号,且每次操作映射略微麻烦,但却是使用成本最低的方案,只需要家中宽带有公网的 IP,即便是普通的家用路由器,也可以轻松实现。

第二种 nginx 反向代理的方案除了要配置反代的域名,还要解析一个二级域名出来,看似比纯端口映射还麻烦,但是通过使用 nginx-proxy-manager DDNS-GO 这两个开源项目,可以实现快速删减服务。重要的是,在某些需要 https 的场景下,似乎也是唯一的解决方法。

而 VPN 方案相比之下,看似可以一劳永逸,但是在客户端使用的时候,很难保证建立一个长期不断的连接,这时候那些需要始终保证稳定传输的服务,就不如前两种方案,只适合临时需要接入家中内网的情况使用。

Surge Ponte

我的主力 VPN 工具是 Surge,无论是电脑还是手机的客户端,几乎都是 24 小时开启,因此可以尝试 Surge 的 Ponte 功能做内网穿透。

为什么说是尝试而不是直接替换原来的方案,是因为这里会有几个弊端:

  1. 家中作为服务器中枢的 Surge 硬件设备要保证稳定的网络连接,目前我是使用一台旧的 M1 笔记本,且是采用 WiFi 网络连接,稳定性与传输速率都很难保障;
  2. 使用 Surge Ponte 替代其它方案,会致使没有 Sugre 客户端的设备无法进行内网访问,因此该方案只能作为补充,而不能替代。

第一个问题可以通过购买一台 Mac mini 硬件作为家中网络中枢长期稳定使用,但第二个问题却无法克服。

服务端配置

无论哪种穿透方案,都必须依赖公网 IP,如果自家的宽带没有提供,就只能找一台服务器做数据中转。Surge Ponte 提供了 3 种穿透方式:

  1. 直接 NAT 穿透
  2. 使用代理穿透
  3. 路由器端口转发

image.png

第一种要求你的设备本身就处于公网,第三种要求你家的宽带有公网 IP,而第二种只需你有公网的代理即可。我使用的是第三种方式,通过设置路由器端口转发,实现将 Surge 设备的 6208 端口暴露在公网即可(记得协议是使用 UDP)。

至此,服务端的服务器就配置好了。

客户端配置

接下来客户端的 [Rule] 规则下要添加一条:

IP-CIDR,10.0.0.0/24,DEVICE:M1

以上意思是:增加设置一条规则,通过 10.0.0.* 这个 IP 网段的流量都走 Ponte 服务,所以记得设置家中网段的时候,可以设置不常用的那种,比如 192.168.150.* 这样的,避免跟你的设备所处的真实内网网段有冲突,后边的 M1 是我在配置 Ponte 服务端时候起的名字。

这样配置之后,只要 Surge 是打开的状态,访问所有家中的所有位于该网段的内网地址,都会自动走 Ponte 服务进行穿透直连。

该使用方式的客户端配置还需要注意这么两点:

首先,General 下的 skip-proxy 配置项,要避开你的内网网段,否则你要访问的穿透端内网网段会被直接跳过代理规则进行直连,而不走 Ponte,因此,配置文件的开头应该这样修改:


如果 skip-proxy 为下方
skip-proxy = 192.168.0.0/24, 172.16.0.0/12, 127.0.0.1, 10.0.0.0/8

则应改为这样
skip-proxy = 192.168.0.0/24, 172.16.0.0/12, 127.0.0.1

其次,[Rule] 的规则部分要放在合适的位置,否则会与其它规则冲突,比如要至少放在以下规则的上方才能生效(如果没有该规则则可以忽略):

RULE-SET,LAN,DIRECT

最终我的规则是这样的: image.png

以上方式是为了在公网上,直接使用内网的原服务 IP 地址访问的方式,更容易避免冲突的使用自定义域名的方式访问可以参考 官方文档 进行配置。

最后

以上便是 Surge Ponte 功能的简单使用,可以看出,该方案与 VPN 方案十分类似。要说有什么优势的话,那么应该是利用 iCloud 减少了一次在家庭的公网 IP 变动时,利用 DDNS 实现的域名到公网 IP 的解析。同时,对于 Apple 全家桶用户来说,常年开启 Surge 软件的使用者,可以无须额外开启其它的 VPN 客户端了,且因其规则自动分流的特性,24 小时开启也不会对访问其它网络资源产生影响。

#网络 #内网穿透 #VPN

PREV Figma 20240508 更新 - 原型交互支持修改变量模式
NEXT 使用 Bitwarden 统一管理密码