Surge Mac as Gateway

TL;DR

升级到 2.6.0 Beta 版本开启 Enhanced Mode,子网内其他设备网关设置为 Mac 的 IP,DNS 设置为 198.18.0.2。

以下是完整说明。

— — — — — — — — — —

先前版本中 Surge Mac 只支持以 HTTP/SOCKS5 代理方式向 LAN 内其他设备提供服务,但是代理方式有一些明显弊端,如:

  • 代理协议本身不支持 UDP;
  • 很多设备不支持配置代理;
  • 部分支持配置代理的设备,也有很多流量不走代理;
  • 部分设备走代理会出现连接异常断开的问题(如 Apple TV 和 PS4);

对于这些设备,最好还是以配置网关的形式去接管流量,但是大部分软件实现上都是 IP 层单纯转发+NAT,一没有考虑 DNS 处理,二不支持复杂规则。实际用起来有会遇到很多问题。

macOS 10.13 后完善了 Kernel 的转发机制,使得 Surge Mac 也可以用来当做网关了。详细操作方式如下:

  1. 升级到 2.6.0 Beta 版本,该版本 Helper 已升级,会提示重新安装;
  2. 使用静态 IP 或者 DHCP 固定住 Mac 的 IP 地址;推荐在内网内单独用一个设备当做网关以避免干扰;
  3. 开启 Enhanced Mode;
  4. 修改需要接管流量的设备的网络设置,将网关地址设置为 Surge Mac 设备的地址,DNS 地址修改为 198.18.0.2;
  5. 观察 Surge Dashboard 里是否可以看到对应流量。

测试系统版本为 macOS 10.13.4,请反馈其他系统的测试情况。

另外还可以配置独立的 SSID + VLAN + DHCP,实现自动化配置。

— — — — — — — — — —

另外有一些注意事项:

  • Surge 会对所有 DNS 请求返回 198.18.X.X 的 IP,部分比较呆的设备在切换网络会不会去清空 DNS 缓存,如果设备换到另一个网络后不正常,请重启设备。
  • 暂时还不支持 ICMP(ping)转发。