Scu_laji

我为什么偏爱surge之类的规则代理

我大概从两年前开始使用surge,自此也发现了一些surge使用上的便利之处,从此也爱上了这种能够控制电脑中流量走向的感受。

在这篇blog中,我想与你分享的是

  1. surge为什么这么好用,以及它能做什么,并为你推荐一个开源的替代工具

  2. 一篇文章解决你在使用mac时遇到的代理问题。

surge为什么好用

surge是什么

按照surge for mac官网上的说法,surge是为高级用户提供的一个网络工具箱, surge是一个HTTP/SOCKS5 代理server。surge分为两部分,一个是程序主体部分,用来控制你的计算机中的网络流量走向。另一个是DashBoard部分,用于调试你的网络流量。

why surge

在使用surge之前,我使用的是Shadowsocks-NG, 一个Mac上的ss代理工具,当时我并没有同时连接多个ss server的需求,只是单纯的上上网,所以那时候感觉surge也没什么,虽然0xmuhe师傅向我们强烈推荐了surge,但当时surge并未击中我的痛点,所以我也没有买。一切直到我开始在学校管理社团的服务器开始发生变化。当时,我校服务器虽然有公网ip,但是是需要先过一道防火墙的。于是我想了一个想法,先将内网一台服务器的ss端口映射到公网服务器上,这很容易就能做到(FRP),然后ssh通过这个公网的ss链接到内网中,既满足了加密需求,有很难以爆破。但是这样一来,管理服务器时,我需要经常的访问Google,于是经常性的需要手动切换代理。

关键是手动切换代理之后内网的ssh连接会断开,这就令我十分不爽了。有些人可能会习惯将ssh端口转发到公网上,这样就没问题了。但是这样不仅存在安全性的隐患,还可能被学校网管发现(溜了溜了)。

于是我开始尝试surge,不得不说surge完美的解决了我遇到的上述问题。

surge方便的配置文件, 基于域名和cidr的规则代理。能很好的满足我多网络环境下免切换代理,能够顺畅的访问Google与各地的内网服务器.

怎么使用surge

不讲了,网上的文章多了去了.

clash

一个开源的基于rule的tunnel,除了有些不稳定,和某些诡异的bug以外(至少在我的使用中),以及一些跨平台导致无法适配Mac的特殊功能外(譬如:读取系统dns列表,增强模式),跟surge没什么太大的差别。毕竟开源免费,开源万岁。

mac下的代理问题

我坚信,授人以鱼不如授人以渔。但是,我还是想先授人一丢丢的鱼。

什么是系统代理

系统中的一个特殊设置,用于告诉系统中的软件对于一些特殊的情况要进行代理链接。这里有几个坑。

1. 软件不一定要遵守你的代理连接方式。
2. ping 不走代理,注意。
3. 如果在软件中设置了代理地址,那么会无视你的系统代理设置。

常用软件的代理设置

git, curl, brew, pip 以及一系列命令行工具

1
export https_proxy=http://127.0.0.1:6152;export http_proxy=http://127.0.0.1:6152;export all_proxy=socks5://127.0.0.1:6153

ssh

1
2
Host *
ProxyCommand nc -X 5 -x 127.0.0.1:6153 %h %p

具体可见mac ssh 通过代理链接服务器

docker

docker会使用com.docker.vpnkit来使用你系统代理中的内容,所以一般不需要换源(ps: 不建议在开发机上做任何换源操作)

邮件

mac的邮件服务会默认走系统的socks5代理,请务必保证配置了这个代理。

proxychains-ng

这个软件可以劫持动态链接库使得某些不走代理的软件强制走代理

surge增强模式

终极大招,开启surge增强模式。

如何排查mac下的网络问题

首先,你得大学计算机网络修过。或者理解一个请求的发起流程。

我将mac下的网络问题分为两类,其一是软件不遵守代理设置,其二是软件经过了代理却发现连不上的问题。

如何区分这两种情况呢。对于surge来说很简单,只需要打开dashboard,就能看到所有经过surge的请求流量。

软件不遵守代理设置

  1. 可以使用我上面所述的两种方法来强制不走代理的软件走代理。
  2. 合理使用搜索工具

代理失败

首先,可以在日志中找到这个请求,一般来说日志里都会有失败的原因。

譬如说这个请求就是因为dns失败了。

dns失败

确认一下nslookup 域名能不能正常解析,不行的话可以尝试使用dig @域名服务器ip地址 域名尝试一下能否正常解析。如内网特殊的域名服务器。

触发了某些特殊规则

也可以在surge dashboard中找到触发了哪一条规则。

在surge中触发了某些特殊规则,连接到了其他服务器导致连不上。解决办法是配置一个特殊规则使它连接到正确的服务器上。

代理服务器连不上

这其实不是这篇blog的重点,也就是如何判断一个服务器是否被墙了。一般来说,有以下几种判断方法。

ping大法

从本机ping服务器,确认一下能不能ping通,然后再去ipip.net确认一下全国ping的情况,能大致判断是否被墙。

telnet

本机telnet连接服务器ip和port,能连上说明问题不大。可能是配置问题。

加钱

上专线你会被墙嘛??????

总结

surge是一个十分棒的网络工具,对于windows用户,Linux用户也可以尝试它的开源替代品: clash。以及一些想尝试surge的用户,也可以先试试clash,如果能满足需求的话就不要浪费💰了。