Mac下安装及配置 ProxyChains-NG 实现终端下代理

ProxyChains-NG

项目主页:https://github.com/rofl0r/proxychains-ng
官方说明:

proxychains ng (new generation) - a preloader which hooks calls to sockets in dynamically linked programs and redirects it through one or more socks/http proxies. continuation of the unmaintained proxychains project.

安装

使用 Homebrew 安装

brew install proxychains-ng

配置

编辑配置文件

sudo vim /usr/local/Cellar/proxychains-ng/4.10/etc/proxychains.conf

在 [ProxyList] 下面(也就是末尾)加入代理类型,代理地址和端口
注释掉原来的代理并添加

socks5  127.0.0.1 1080

ps: 默认的socks4 127.0.0.1 9095是tor代理,而socks5 127.0.0.1 1080是shadowsocks的代理。

如果所在的网络很复杂,可能需要在配置文件中启用
dynamic_chain - 按照列表中出现的代理服务器的先后顺序组成一条链,如果有代理服务器失效,则自动将其排除,但至少要有一个是有效的,然后在 [ProxyList] 下添加多个代理。

默认是:
strict_chain - 按照后面列表中出现的代理服务器的先后顺序组成一条链,要求所有的代理服务器都是有效的。

ps: 4.10 是proxychains-ng的版本好,具体参看自己的版本。

用法:

proxychains4 curl twitter.com

补充alias

vim ~/.bash_profile
插入

alias gfw='proxychains4'
alias sudogfw='sudo proxychains4'
使~/.bash_profile生效

source ~/.bash_profile

配置示例

strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
localnet 127.0.0.0/255.0.0.0

[ProxyList]
socks5 127.0.0.1 1080

Mac OS 10.11 恢复模式下 关闭 SIP

Command + R 进入恢复模式,选择Terminal 执行

csrutil enable --without debug

Apple Internal: enabled
Kext Signing: enabled
Filesystem Protections: enabled
Debugging Restrictions: enabled
DTrace Restrictions: enabled
NVRAM Protections: enabled

disable 是把 5 个都关了。。。

目测 proxychains 之类的需要加入 LD_PRELOAD 进行动态 HOOK
debug 那个就是保护了关键路径上的 bin 不被劫持

其他都是字面意思

保护的只有 rootless.conf 定义的目录文件

参考:

https://eliyar.biz/code/proxy-for-mac-terminal/

http://yanghui.name/blog/2015/07/19/make-all-command-through-proxy/

https://www.v2ex.com/t/225043

梦想还是要有的,万一实现了呢?