mihomo(clash) 无法访问 raw.githubusercontent.com 的解决方案

标签:翻墙

前几天在使用 brew 安装 im-select 时发现从 raw.githubusercontent.com 下载失败了,而 brew 是用 curl 下载的,我已经在 ~/.curlrc 里配置了 socks5 = "127.0.0.1:1080",理论上它应该走本地代理,怎么会失败呢?
于是我直接执行 curl 看看:
curl -v https://raw.githubusercontent.com/daipeihust/im-select/master/macOS/out/apple/im-select
*   Trying 127.0.0.1:1080...
* Connected to 127.0.0.1 (127.0.0.1) port 1080
* Host raw.githubusercontent.com:443 was resolved.
* IPv6: (none)
* IPv4: 0.0.0.0
* SOCKS5 connect to 0.0.0.0:443 (locally resolved)
居然在本地解析成 0.0.0.0 了,这不是应该走代理去解析的吗?

于是我查了一堆文章,发现需要配置 mihomo 的 dns。这玩意的配置项有点多,而且如果放在 53 端口还需要管理员权限才能运行,还需要配置本地 DNS 服务器到 127.0.0.1:53,如果在家和办公室等不同环境使用,上游的 DNS 服务器可能还需要调整,感觉不是特别优雅。
尝试半天后,我使用了最简单的处理方式:去墙外的服务器上执行 nslookup raw.githubusercontent.com,然后把结果写到 /etc/hosts 里。

一切都看似优雅地解决了,可是今天我又发现 s2.loli.net 也打不开,它被解析到了 127.0.0.1。
我想不能老这样改 /etc/hosts 吧,于是又研究了下 curl 是不是可以远程解析域名。
然后发现 curl 可以支持 ALL_PROXY 环境变量、-x--socks5 参数等方式来使用 socks5 代理。而平时常用的 ALL_PROXY=socks5://127.0.0.1:1080-x socks5://127.0.0.1:1080 是使用本地解析的,改成 ALL_PROXY=socks5h://127.0.0.1:1080-x socks5h://127.0.0.1:1080 就可以远程解析了。
于是我删除了 ~/.curlrc 里的 socks5 = "127.0.0.1:1080",改成了 -x socks5h://127.0.0.1:1080,并且删除了 /etc/hosts 里的额外配置。
这下 raw.githubusercontent.com 正常了:
curl -v https://raw.githubusercontent.com/daipeihust/im-select/master/macOS/out/apple/im-select
*   Trying 127.0.0.1:1080...
* Connected to 127.0.0.1 (127.0.0.1) port 1080
* SOCKS5 connect to raw.githubusercontent.com:443 (remotely resolved)
但是 s2.loli.net 仍然不行,查看了一下 mihomo 的日志,居然被 GEOSITE 判定成了中国网站,而我配置了 - GEOSITE,cn,DIRECT,所以就绕过了代理。于是增加了一条 - DOMAIN,s2.loli.net,PROXY,终于也正常了。

0条评论 你不来一发么↓

    想说点什么呢?