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

我正在做一些Web应用程序的可用性testing,并尝试使用mitmproxy作为透明代理来debugging和logging一些SSL会话,由于某种原因,Mac OS X Mountain Lion下的pf没有设置透明redirect。

首先,我启用转发:

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

接下来,我创build一个简单的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的远程主机, en1en2是Mac上的主要出站接口。

最后,我用下面的命令启动pf

 sudo pfctl -vf pf.conf sudo pfctl -e 

但是,没有任何反应。 当我用pfctl -sr列出当前正在运行的pf规则时,它不会显示任何内容。

我已经证实, pf可以在机器上工作,通过给它一个阻止所有出站访问端口80的工作。

任何我需要做什么提示,以启用pfredirect到Mac OS X山狮的透明代理networkingstream量?

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

现在,如果您完成上述设置,您将注意到没有任何实际的工作。 原因是OS X内核中的一个Bug,它需要将net.inet.ip.scopedroute标志翻转为0.我不完全确定它做了什么,但是互联网报告它通过用户首选项打破了networking共享。 无论如何它修复了基于ipfw的转发,所以你可以用sysctl来翻转它:

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

不幸的是,在OS X Lion中,这个标志实际上不能从用户空间翻转,所以你需要将它设置为引导参数,然后重新启动计算机。 您可以通过编辑/Library/Preferences/SystemConfiguration/com.apple.Boot.plist文件(续…)