通过 ProxyChains-NG 实现终端代理

对于技术人员来说,通过 shadowsocks 实现代理是一件很轻松的事情。但是却不能代理终端程序,这就很难受了,这里我们可以通过 ProxyChains-NG 来实现终端下的代理。

首先,确保你的 Mac 已经安装了 Hombrew,如果还没有,点击这里:安装 Homebrew

# 1. 关闭 SIP

macOS 10.11 以后由于开启了 SIP(System Integrity Protection) 会导致命令行下 proxychains-ng 代理的模式失效,如果你要使用 proxychains-ng 这种简单的方法,就需要先关闭 SIP

具体的关闭方法如下:

1
2
3
4
1. 重启Mac,按住Option键进入启动盘选择模式,再按⌘ + R进入Recovery模式。
2. 菜单栏 -> 实用工具(Utilities)-> 终端(Terminal)。
3. 输入命令 `csrutil disable`。
4. 重启进入系统后,终端里输入 `csrutil status`,结果中如果有 `System Integrity Protection status:disabled`. 则说明关闭成功。

# 2. 通过 Homebrew 安装 ProxyChains-NG

1
brew install proxychains-ng

# 3. 进行一些简单的配置

1
2
3
4
5
vim /usr/local/etc/proxychains.conf
# proxychains.conf
...
[ProxyList]
socks5 127.0.0.1 1080 # 你的代理地址

proxychains-ng 支持多种代理模式,默认是选择 strict_chain

1
2
3
4
dynamic_chain     #动态模式,按照代理列表顺序自动选取可用代理
strict_chain #严格模式,严格按照代理列表顺序使用代理,所有代理必须可用
round_robin_chain #轮询模式,自动跳过不可用代理
random_chain #随机模式,随机使用代理

# 4. 使用方法

proxychains-ng 用法非常简单,命令格式如下:

1
proxychains4 [exec] [args]

# 5. 测试

1
proxychains4 curl ip.cn

1
proxychains4 curl myip.ipip.net 

# 6. 全局代理

通过 proxychains-ng 直接调用 SHELL

1
proxychains4 -q /bin/bash

# Mac 下 proxychains 无法生效解决办法

2017 年 7 月 22 日 系统自定义

proxychains 安装命令:

1
brew install proxychains-ng

原因:使用 proxychains4 nmap 的时候发现走的并非代理,而执行命令 proxychains4 curl ifconfig.io 的时候,获取到的 ip 地址的确是本地的。无论怎么设置,都无法生效,流量就是不走设置好的 socks5 代理。
处理方法:关闭 mac 电脑 System Integrity Protection (SIP) 系统完整性保护,而在 10.11 版本之前是没有的,所以需要关闭。

操作如下:

1. 关机

2. 开机的时候按住 command+R 按钮,进入恢复模式,其实并不是去恢复系统,而是进入恢复界面,找到 CMI 命令行界面,这个类似 windows 进入了 PE 系统,这样子操作就可拥有对系统最大化的修改权,类似在 windows 下你删除 system32 文件,显然是删不了的。但是在 PE 下就可以,这个进入恢复模式也是类似如此。

3. 执行命令:csrutil disable

这样子即可关闭,如果开启,执行如上操作,再次输入 csrutil enable 即可。

4. 检测命令:proxychains4 curl www.google.cn

Done

# 修改苹果 SIP(System Integrity Protection)设置

如果是 Linux 系的 此时你应该成功代理了 忽略下文

macOS 10.11 后,苹果加入 SIP 设置就会导致部分命令是执行不成功的,就包括使用 socks 的 proxychains4。如果我们要解决这个问题,我们就要关掉 SIP。

  • 重启 Mac,按下 Command+R 直到出现 Apple Logo。
  • 选择 实用工具 -> 终端
  • 输入命令 csrutil disable 。出现类似于 “成功禁用 SIP” 的意思就表示成功了。

如果还要打开 SIP,最后的步骤 csrutil enable 即可