共享 macOS 上的 ShadowSocks 代理给其他设备

前言

先看一个 ShadowSocks repo 的 issue https://github.com/shadowsocks/shadowsocks-iOS/issues/119
......
OS X 的内核没有提供这样的功能。也就是说用 macOS 的无法像 Windows 的客户端一样点一个选项就轻松共享代理给局域网内的其他设备。
ShadowSocks GUI

How to start

在 macOS 中,我们需要借助 Privoxy 代理本机的 SOCKS5 连接来实现 ShadowSocks 的共享,实施步骤如下:

安装 Privoxy
  • 使用 Homebrew 安装
brew install privoxy  
将 Privoxy 添加到开机启动中
# 添加开机启动:
ln -sfv /usr/local/opt/privoxy/*.plist ~/Library/LaunchAgents  
# 启动 Privoxy:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.privoxy.plist  
# 如果不需要用 launchctl 就直接运行:
privoxy /usr/local/etc/privoxy/config  
修改 Privoxy 配置
vim /usr/local/etc/privoxy/config  
  1. 在 vim 中搜索 forward-socks5t /
    去掉注释,将端口改为 1080 (Shadowsocks 默认的 SOCKS5 端口)
    forward-socks5t / 127.0.0.1:1080
  2. 搜索 listen-address 127.0.0.1:8118
    去掉注释,把 127.0.0.1 改为 0.0.0.0(否则只能作用于本机),端口号默认或选择一个未占用的端口
    listen-address 0.0.0.0:6666
    我用的端口号为 6666,下面 iOS 代理设置中会用到
  3. 修改这两处后,保存并退出即可

Tips:

  • vim 两种模式:
    默认为命令行模式,按 i 键进入 insert 模式
  • 在命令模式下输入冒号搜索:
    :/listen-address 按回车后向上搜索
    :?forward-socks5t 按回车后向下搜索
    n 继续搜索,N 反向搜索
  • 命令行模式按两次 u 撤销
  • 命令行模式输入 :wq 保存并退出
运行 Privoxy
cd /usr/local/sbin/  
./privoxy –no-daemon /usr/local/etc/privoxy/config &
# 最后的 `&` 是为了让 privoxy 在后台运行
# 参见 http://ju.outofmemory.cn/entry/251730
# http://my.oschina.net/u/994235/blog/296702
查看本机 IP

两种方法:

  1. ifconfig
  2. 网络偏好设置

我的 IP 为 192.168.1.100

在 iOS 设备上使用代理
  1. 将 iOS 和 Mac 置于同一局域网下,即连接同一个 Wifi
  2. 点击已连接 Wifi 右侧的 ℹ️ 按钮,进入 Wifi 详情
  3. 设置 HTTP 代理为手动,并填写服务器为 192.168.1.100,端口为 6666
    Wifi info
最后结果

result

正在加载 Disqus 评论组件...