macOS 上使用 Shadowsocks 时shell的配置
在 macOS 上使用 Shadowsocks 时,浏览器能访问而 Shell(终端)无法访问网站,通常是因为代理设置未正确应用于终端环境。以下是逐步排查和解决方案:
1. 确认 Shadowsocks 的代理类型和端口
- Shadowsocks 默认使用 SOCKS5 代理,通常监听在
127.0.0.1:1080
或 1086
(具体端口以客户端设置为准)。
- 打开 Shadowsocks 客户端,检查 本地端口(Local Port)配置。
2. 为终端配置代理
Shell 默认不会继承系统或浏览器的代理设置,需手动配置:
方法 1:临时通过环境变量设置
export http_proxy="socks5://127.0.0.1:1086" # HTTP 流量
export https_proxy="socks5://127.0.0.1:1086" # HTTPS 流量
export all_proxy="socks5://127.0.0.1:1086" # 所有流量
- 测试是否生效:
curl -v https://www.google.com
- 缺点:关闭终端后失效,需每次重新设置。
方法 2:写入 Shell 配置文件(持久化)
将环境变量添加到 ~/.zshrc
(Zsh)或 ~/.bash_profile
(Bash):
echo 'export all_proxy="socks5://127.0.0.1:1080"' >> ~/.zshrc
source ~/.zshrc
3. 检查代理是否生效
- 执行以下命令,查看返回的 IP 是否与代理服务器一致:
curl -x socks5://127.0.0.1:1080 https://api.ipify.org?format=json
- 如果失败,可能是代理端口错误或 Shadowsocks 未正常运行。
4. 其他可能原因
-
DNS 污染:终端可能直接使用系统 DNS,绕过代理。尝试以下方法:
curl --socks5-hostname 127.0.0.1:1080 https://www.google.com
(--socks5-hostname
会通过代理解析 DNS)
-
工具不支持代理:如 ping
等底层工具不走代理,需改用 curl
或 wget
测试。
-
Shadowsocks 配置问题:
- 确认客户端已开启 全局模式 或 PAC 规则正确。
- 重启 Shadowsocks 客户端。
有话要说