shadowsocks simple guild
一 服务器安装 shadowsocks
服务器安装 shadowsocks 的教程网上挺多的,这里就不多介绍了,下面这个链接是 github, github1 上的,然后最好在服务器上开启bbr 加速,教程链接。
二 安装 shadowscoks 客户端
这里用的是 mac 的客户端 shadowsocks-X,可以直接在 github 的 release 下载客户端。还有个客户端的版本是 shadowsocks-NG,可以支持本地的终端 http 和 https 的代理,但是在我本子上不能用,所以就直接 pass 掉了,然后用了 privoxy 去做终端的代理,下面会具体介绍他。关于客户端的配置应该也挺简单的,不详细介绍啦。
三 privoxy 支持终端 http 代理
3.1 安装
-
brew install privoxy -
配置 privoxy 配置
vi /usr/local/etc/privoxy/config -
将 listen-address 默认的
8118端口改成你想要的,我这里就不做改动了。listen-address 127.0.0.1:8118 -
增加一行, 代表把所有匹配 / 的请求 (也就是所有请求),以 sock5 协议转发到
127.0.0.1:1080, 最后一个. 代表不转发到 http 代理forward-socks5 / 127.0.0.1:1080 . forward 192.168.*.*/ . forward 10.*.*.*/ . forward 127.*.*.*/ . forward hello.test.com/ .这里解释下上面的配置:第一行就是把所有的代理请求以 sock5 协议转发到
127.0.0.1:1080。然后我为了方便直接在在全局变量里面把 http 代理设置成 privoxy 的地址了。export http_proxy=http://127.0.0.1:8118 export https_proxy=http://127.0.0.1:8118这样会导致一个问题,就是一些本地或者是公司局域网的请求也会全部代理到 ss 服务器上,你就会发现这些请求失败了。所以下面的几行就是表示这些地址不做转发。
-
启动 privoxy,
brew services start privoxy -
记得把上面代理的命令加到文件
~/.zshrc或者~/.bashrc文件里面去,然后执行source ~/.zshrc或者source ~/.bashrc,看具体用户使用的终端而定。
这样终端的代理就好了,当你使用 git、go get 之类的命令再也不用担心被墙了。
3.2 docker 代理
现在会有写小伙伴会在自己的本子上安装 docker,但是在拉去镜像的时候是不是也经常遇到拉去失败的情况,有了 privoxy 和 ss 就能解决这个问题啦。打开 docker 应用的 preferences 选项,选中 proxies ,下面有 http 和 https 代理选项,把 http://127.0.0.1:8118 填入就可以很顺利的拉到被墙的镜像了。
3.3 minikube 代理
在本地安装 minikube 之后也会遇到被墙的情况。
基本思路也是和上面的一样,去走 http 代理,所以问题是怎么让 minikube 走代理呢。
步骤如下:
-
修改
minikube的配置文件~/.minikube/machines/minikube/config.json"HostOptions": { "Driver": "", "Memory": 0, "Disk": 0, "EngineOptions": { "ArbitraryFlags": null, "Dns": null, "GraphDir": "", "Env": [ "HTTP_PROXY=http://192.168.1.58:8118", "HTTPS_PROXY=http://192.168.1.58:8118" ], "Ipv6": false, "InsecureRegistry": [ "10.96.0.0/12" ], "Labels": null, "LogLevel": "", "StorageDriver": "", "SelinuxEnabled": false, "TlsVerify": false, "RegistryMirror": [ "https://registry.docker-cn.com" ], "InstallURL": "" },需要修改的 json 配置就是
HostOptions.EngineOptions.Env,加上当前的代理。ip即位本机 ip,然后重启minikube。
这里需要注意的一个问题就是需要改下 privoxy 的 listen-address 配置。之前的是这样的
listen-address 127.0.0.1:8118
这监听的本机的应用,对于别的虚拟机访问会被拒绝。所以要进行如下修改:
listen-address 0.0.0.0:8118
四 其他 app 科学上网
mac 本子还有不少其他 app,这部分不支持 http 代理,比如邮件之类的,这个怎么办呢,就需要 proxifier 这个应用了。
这个应该也蛮简单的,教程在 这里, 暂时就先不整理啦。
五 分布式
到这里为止基本上就实现了 mac 全局翻墙了,但是抱着折腾的心态,最后再加个 nginx 代理吧。
nginx 支持了 tcp 层的转发,所以也可以支持 socket5,步骤如下:
-
brew install nginx -
修改配置文件
/usr/local/etc/nginx/nginx.conf,加入以下配置:stream{ upstream shadows { server shadowsocks.com max_fails=3 fail_timeout=10s; } server{ listen 10080; proxy_connect_timeout 20s; proxy_timeout 5m; proxy_pass shadows; } }其中
shadowsocks.com就是实际的服务器地址。 -
brew services start nginx -
把客户端的地址对应修改下