透明代理网关在macOS中需打通网络层重定向、代理服务启动与快捷键触发:一、启用IPv4转发并识别共享网卡(如bridge100);二、用pf配置rdr规则将80/443流量重定向至127.0.0.1:8080;三、通过iTerm2热键全屏唤出终端并自动执行诊断命令;四、启动mitmproxy透明模式,客户端安装并信任证书。
要在 macos 中配置一个支持热键快速唤出、用于透明代理网关诊断的系统级环境,核心是把「网络层重定向」、「代理服务启动」和「快捷键触发」三者打通。这不是单纯开个代理,而是让本机变成局域网设备的“中间网关”,且能一键进入全屏终端执行诊断或手动干预。
一、启用 IPv4 转发并确认共享网卡
这是透明代理生效的前提。没有它,流量无法在本机路由转发。
- 运行命令开启转发:sudo sysctl -w net.inet.ip.forwarding=1
- 验证是否生效:sysctl net.inet.ip.forwarding → 返回 1 即成功
- 查出热点所用网卡(通常是 Wi-Fi 共享生成的虚拟接口):
ifconfig | grep "^[a-z]" | awk '{print $1}' | sed 's/://' | grep -E "^(bridge|ap)"
常见结果如 bridge100 或 ap1,记下这个名称,后续规则中要用到
二、配置 pf 流量重定向规则
macOS 用 pf 替代 iptables 实现透明劫持。目标是把入向的 HTTP/HTTPS 流量导向本地代理端口(如 8080)。
- 创建专用规则文件:
echo "rdr pass on bridge100 inet proto tcp to any port {80, 443} -> 127.0.0.1 port 8080" | sudo tee /etc/pf.anchors/mitmproxy - 加载该规则到主配置:
echo "load anchor \"mitmproxy\" from \"/etc/pf.anchors/mitmproxy\"" | sudo tee -a /etc/pf.conf - 重载并启用 pf:
sudo pfctl -f /etc/pf.conf && sudo pfctl -e - 检查是否加载成功:sudo pfctl -s nat → 应看到对应 rdr 规则行
三、绑定热键唤出全屏终端并自动运行诊断命令
推荐使用 iTerm2,它原生支持热键窗口 + 全屏 + 启动命令一体化,响应快、无需辅助功能授权。
- 安装 iTerm2(官网 iterms2.com),首次启动完成初始化
- 打开 Preferences → Keys → Hotkey:
✔ 勾选 “Show/hide iTerm2 with a system-wide hotkey”
→ 录制组合键(如 Control + Option + P)
→ 在 “Window arrangement” 中选 Fullscreen - 切换到 Profiles → General → Command:
将 Shell 改为:
/bin/zsh -c "networksetup -listallhardwareports; echo '---'; sudo pfctl -s nat | head -5; echo '---'; curl -s https://1.1.1.1/cdn-cgi/trace | grep ip; exec zsh"
这样每次热键唤出即全屏,并自动显示网卡、pf 规则、公网出口 IP,留出交互空间继续操作
四、启动透明代理并准备客户端信任证书
终端唤出后,你可手动启动 mitmproxy;若希望进一步自动化,可在上述命令末尾追加:
&& mitmproxy --mode transparent --showhost &(注意后台运行需处理输出重定向)
- 确保已安装 mitmproxy:brew install mitmproxy 或 pip3 install mitmproxy
- 启动命令(建议先测试):
mitmproxy --mode transparent --showhost - 其他设备连接本机热点后,访问 http://mitm.it 下载并安装证书,再在「设置 → 通用 → 关于本机 → 证书信任设置」中启用完全信任(iOS/macOS 均需此步)


















