我正在对一个 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
,和en1
是en2
Mac 上的主要传出接口。
pf
最后,我使用以下命令启动:
sudo pfctl -vf pf.conf
sudo pfctl -e
但是,什么都没有发生。当我列出当前正在运行的规则时,pf
它pfctl -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 文件来执行此操作(继续...)