在 Mac OS X Mountain Lion 上启用 pf 透明代理

在 Mac OS X Mountain Lion 上启用 pf 透明代理

我正在对一个 Web 应用程序进行一些可用性测试,并尝试使用mitmproxy透明代理来调试和记录一些 SSL 会话,但由于某种原因pf,Mac OS X Mountain Lion 没有设置透明重定向。

首先,我启用转发:

sudo sysctl -w net.inet.ip.forwarding=1

接下来,我创建一个pf.conf包含一行内容的简单文件:

rdr on {en1, en0} inet proto tcp to any port {80, 443} -> 192.168.1.40 port 3128

其中 192.168.1.40 是当前正在运行的远程主机mitmproxy,和en1en2Mac 上的主要传出接口。

pf最后,我使用以下命令启动:

sudo pfctl -vf pf.conf
sudo pfctl -e

但是,什么都没有发生。当我列出当前正在运行的规则时,pfpfctl -sr没有显示任何内容。

我已经确认pf可以通过给机器一个虚拟规则来阻止所有对端口 80 的出站访问,并且可以在机器上运行。

关于我还需要做什么才能pf将网络流量重定向到 Mac OS X Mountain Lion 上的透明代理,还有什么提示吗?

答案1

你试过了吗net.inet.ip.scopedroute=0?来自http://lucumr.pocoo.org/2013/1/6/osx-wifi-proxy/

现在,如果您完成上述设置,您会发现实际上什么都没有起作用。造成这种情况的原因是 OS X 内核中的一个 Bug,需要将 net.inet.ip.scopedroute 标志翻转为 0。我不完全确定它的作用是什么,但互联网报告称它会破坏通过用户偏好设置进行的网络共享。无论如何,它修复了基于 ipfw 的转发,因此您可以使用 sysctl 将其翻转:

$ sudo sysctl -w net.inet.ip.scopedroute=0

不幸的是,在 OS X Lion 中,此标志实际上无法从用户空间翻转,因此您需要将其设置为启动参数,然后重新启动计算机。您可以通过编辑 /Library/Preferences/SystemConfiguration/com.apple.Boot.plist 文件来执行此操作(继续...)

相关内容