我正在做一些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的远程主机, en1和en2是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文件(续…)