使用 Surge Ponte 实现便捷的内网穿透
一直没机会尝试 Surge 这款软件的 Ponte 功能,最近家里闲置了一台之前的 M1 芯片 MacBookPro,所以想试试看 Surge 的内网穿透的效果。
如果你不知道什么是 Surge,可以先去 官网 看一下,简单的说,这是一个网络优化与调试的软件,集各种功能于一身的 Mac 平台下的全能网络工具,多数使用者仅仅用的是它的分流代理功能,但那只是其众多功能的一小部分。
如果你还不太了解内网穿透,则可以看这篇:聊一聊内网穿透。
之前的方案
在这之前,家中的内网穿透用过以下 3 种方案:
- 使用路由器直接进行端口的服务一对一映射
- 使用 nginx 反向代理,对外暴露 81 端口 + 域名的方式访问家中各服务
- 使用 routerOS 的 l2tp VPN 服务器
几个方案各有优缺点。
第一种端口映射的方案不方便记忆服务的名称与端口号,且每次操作映射略微麻烦,但却是使用成本最低的方案,只需要家中宽带有公网的 IP,即便是普通的家用路由器,也可以轻松实现。
第二种 nginx 反向代理的方案除了要配置反代的域名,还要解析一个二级域名出来,看似比纯端口映射还麻烦,但是通过使用 nginx-proxy-manager 与 DDNS-GO 这两个开源项目,可以实现快速删减服务。重要的是,在某些需要 https 的场景下,似乎也是唯一的解决方法。
而 VPN 方案相比之下,看似可以一劳永逸,但是在客户端使用的时候,很难保证建立一个长期不断的连接,这时候那些需要始终保证稳定传输的服务,就不如前两种方案,只适合临时需要接入家中内网的情况使用。
Surge Ponte
我的主力 VPN 工具是 Surge,无论是电脑还是手机的客户端,几乎都是 24 小时开启,因此可以尝试 Surge 的 Ponte 功能做内网穿透。
为什么说是尝试而不是直接替换原来的方案,是因为这里会有几个弊端:
- 家中作为服务器中枢的 Surge 硬件设备要保证稳定的网络连接,目前我是使用一台旧的 M1 笔记本,且是采用 WiFi 网络连接,稳定性与传输速率都很难保障;
- 使用 Surge Ponte 替代其它方案,会致使没有 Sugre 客户端的设备无法进行内网访问,因此该方案只能作为补充,而不能替代。
第一个问题可以通过购买一台 Mac mini 硬件作为家中网络中枢长期稳定使用,但第二个问题却无法克服。
服务端配置
无论哪种穿透方案,都必须依赖公网 IP,如果自家的宽带没有提供,就只能找一台服务器做数据中转。Surge Ponte 提供了 3 种穿透方式:
- 直接 NAT 穿透
- 使用代理穿透
- 路由器端口转发
第一种要求你的设备本身就处于公网,第三种要求你家的宽带有公网 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
最终我的规则是这样的:
以上方式是为了在公网上,直接使用内网的原服务 IP 地址访问的方式,更容易避免冲突的使用自定义域名的方式访问可以参考 官方文档 进行配置。
最后
以上便是 Surge Ponte 功能的简单使用,可以看出,该方案与 VPN 方案十分类似。要说有什么优势的话,那么应该是利用 iCloud 减少了一次在家庭的公网 IP 变动时,利用 DDNS 实现的域名到公网 IP 的解析。同时,对于 Apple 全家桶用户来说,常年开启 Surge 软件的使用者,可以无须额外开启其它的 VPN 客户端了,且因其规则自动分流的特性,24 小时开启也不会对访问其它网络资源产生影响。
PREV Figma 20240508 更新 - 原型交互支持修改变量模式
NEXT 使用 Bitwarden 统一管理密码