MacOS 使用 Surge 的网关方案
Surge on MacOS
Surge on MacOS

目的

局域网内(家/办公室),只需要有一台 MacOS 安装 Surge,配置好,内网其它设备都不用再安装任何代理工具(比如不方便安装代理的 AppleTV、电视棒、Switch、XBox、Oculas),都可以使用 MacOS 当网关,自动分流上网。

相比于软路由等方案,成本会更高,但配置更轻松、维护方便、使用过程有图形界面,Mac 运行稳定性仅次于 Linux 可以长期动行,几乎不怎么需要重启,除非操作系统版本升级。

一. 简介

  • 在 MacOS 上运行 Surge,推荐使用一台 24 小时开机的 MacMini
  • 允许局域网内的其它设备将 MacOS 当作网关使用
  • 分组内自动 URL Test 选择延迟最低的节点,节点故障时自动切换
  • 网络数据经 Surge on MacOS 自动分流(可以手动选择不同分组对应的分流策略)
    • 国内的走国内直连
      • 国内的搜索引擎、APP、聊天、视频服务等,GoogleFCM 服务也应该是直连的
    • 国际的走机场代理
      • Google, YouTube, Spotify, Netflix, Twitter, Discord, Twitter 等

二. 成本

$99

购买 Surge4 的 5 个授权(这个选项性价比最高,可用于 5 台 MacOS 设备)

$xx

代理服务 (机场不要太过于在意成本,成本太低的机场往往线路质量不稳定,有集体坠机的风险)

三. 相关链接

Surge 官网

四. 使用自动代理分组和优化规则生成工具

  • 自动获取节点配置列表
  • 生成代理分组(自动测试线路可用性)
  • 生成分流规则
  • 导出配置文件到 iCloud 文件夹(Surge 配置可以跨设备自动同步)

1. 下载和安装依赖

安装最新 LTS 版本的 Node.js

安装最新版本的 git

2. GitHub

-- 这一步不需要操作,如果你有能力优化贡献代码,欢迎欢迎 --

  • 这个工具是自己写的
  • 自动导出代理分组和分流规则配置文件
  • 我自己正在使用的配置文件就是用这生成的

3. 下载、初始化、编辑配置

打开 Terminal 打开命令行工具

# 这一个区块的内容,熟悉命令行的用户不用管,直接跳到下一段

# 进入用户文件夹
$ cd ~

# 新建一个专用文件夹,<dir-name> 换成自己想起的名字
$ mkdir <dir-name>

# 进入这个文件夹
$ cd <dir-name>
# 下载库
$ git clone https://github.com/web3jt/rules

# 进入文件夹
$ cd rules

# 自动安装依赖包
$ npm install

# 创建配置文件
$ cp config.sample.yaml config.yaml

# 编辑配置文件,或者不用 nano 工具,用任何文本编辑工具编辑这个 config.yaml 文件都可以
$ nano config.yaml

4. 编辑配置文件 config.yaml

SURGE_PROVIDER: "https://example.com/subscribe/<key>?protocols=smart&list=surge"

SURGE_OUTPUT: "/Users/<username>/Library/Mobile Documents/iCloud~com~nssurge~inc/Documents/<profile-name>.conf"
  • SURGE_PROVIDER 填入机场提供的代理配置列表 URL
  • SURGE_OUTPUT 中将 <username> 修改成 Mac 的用户名,也就是 Terminal 里命令提示符 @ 前边的名字
  • SURGE_OUTPUT 中将 <profile-name> 修改成你想要的配置文件名,我自己用的就是机场的英文名
  • 如果 iCloud 里没有这么一个文件夹,那么随便指定到任何一个文件夹,起个名字,都行
附图,我正在使用的机场可导出的节点列表的地方
附图,我正在使用的机场可导出的节点列表的地方

5. 运行脚本,自动获取代理列表并导出配置文件

$ node surge.js
Saved...

运行完毕后,配置文件会自动导出到 iCloud 文件夹

以后每次想重新获取最新节点列表,并再次生成配置文件覆盖的时候,只执行这一条命令就行了……

或者写一个 cron 每天运行一次

五. 在 Surge 中应用刚刚导出的配置文件

Surge 主窗口 - More (左下) - Profile - 切换配置文件为刚刚导出的 profile-name

六. 设置 Surge 为系统代理并开启增强模式

  • Surge 主窗口 - Activity (左上)- 开启 System Proxy (右下)
  • Surge 主窗口 - Activity (左上)- 开启 Enhanced Mode (右下)

七. 将 MacOS 的 IP 地址设为固定

  • 防止 MacOS 每次连入路由器、或路由器重启时,MacOS 被分配随机的 IP 地址
  • 进入路由器设置,在 DHCP 相关设置里,找到 Mac/IP 绑定 然后将 Mac (网卡物理地址)与想要设置的 IP 地址进行绑定
  • 推荐使用 192.168.x.254 这种 .254 结尾的子网内最末一个 IP (因为一般家用路由器的 DHCP 分配规则都是小于 200,如果进入路由器设置页面进行绑定,你是可以看到 DHCP 的分配规则的,这里的 IP 没有确定之规,只要不在自动分配范围里就行,但一定要在路由器所在的子网网段里,如果路由器的 IP 是 192.168.1.1 那么就不要把 MacOS 的 IP 设置为非 192.168.1.x 的)
  • 或者手动在 Mac 网络选项里设置 TCP/IPIPv4 地址
    (更推荐上一条在路由器里设置 Mac/IP 绑定,除非你连路由器的管理密码都忘了)

八. 设置局里网里的其它设备

比如:电脑、手机、Switch、XBox、Oculas、AppleTV、Amazon 电视棒、Google 音箱等

  • 进入 WiFi 设置
    • 手动编辑网关地址为刚刚绑定的 192.168.1.254
    • 手动编辑 DNS 地址为 198.18.0.2
      (这是 Surge 提供的内网专用 DNS,使用 Surge 为网关时,必须使用此 DNS 才能正常访问网络)
  • LAN 设置,同理

九. 进阶

如果你希望某一批设备,只要连接 WiFi 就能自动使用你的 Surge on MacOS 为网关的话:

  • 在主路由 LAN 口上再插另外一台路由器(以下称之为 2 号路由
  • 2 号路由的 WAN 口上网模式设置为 DHCP 自动分配
  • 将 MacOS 连入 2 号路由器(最好用网线,比 WiFi 延迟低)
  • 固定 MacOS 的 IP 地址
  • 2 号路由设置,将 DHCP 服务下发 IP 配置时的 网关地址 设定为 MacOS 的 IP 地址

如此,可以做到:

  • 家里有两个 WiFi 热点可以使用
  • 所有接入 2 号路由的设备都自动将 Surge on MacOS 当作网关,所有网络访问自动分流
  • 某个设备如果不需要自动分流(直连网络),那么接入 1 号路由就行了

如果你使用商用路由 + AP/AC 甚至多层交换的解决方案,就像我一样用 vLAN 吧,多个子网,想互通就互通,想隔离就隔离,家人、访客、出海、工作、电视和游戏、物联网、监控,都能有相当舒服的姿势

有商用路由的也不需要我这里哔哔了,诸神可借鉴思路、动动手指轻松搞定

写在最后

欢迎打赏,给啥都行,不嫌多不嫌少,哈哈

  • ETH/BSC 钱包地址 0x66666666f6d4Eef3bF30A60DDe1Bf50Ce056e87f
  • ENS 域名 lota.eth

祝大家刷绿码!收红包!!

Subscribe to John Torres
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.