使用PF和Internet共享重定向流量


8

简短版本:

在OS X Mountain Lion(10.8)中启用Internet共享后,如何将所有流量从en2端口80/443重定向到127.0.0.1:8080?

一些背景:

我正在做一篇硕士论文,我将在此评估各种智能手机应用程序的通信安全性。我选择使用新的MacBook Air作为路由器。

我已通过USB以太网将Air连接到Internet,并将Internet共享设置为Wifi。这很好。我可以通过wifi将其他设备连接到Air并访问Internet。大!

现在,我想拦截此流量并即时对其进行修改。我认为我需要一个代理来执行此操作,但是我需要一个透明的代理,无需在设备上进行任何配置。我发现mitmproxy恰好提供了这些功能。所以我让它运行在127.0.0.1:8080上,准备拦截流量。

不幸的是,我一直试图将来自端口80和443上的wifi(en2)的流量重定向到127.0.0.1:8080。mitmproxy文档建议为pfctl配置,但它不起作用。我注意到Apple为Internet共享提供了一些配置,从而启用了NAT。因此,如果我不使用它们的配置,则Internet共享将停止工作。当我尝试将rdr行添加到它们的配置中时,它没有生效(尝试在文件/etc/pf.conf中的几个位置)。我的流量只是绕过mitmproxy传递到了Internet。

Answers:


6

我找到了答案。

我将规则作为锚的一部分加载,该锚com.apple/100.InternetSharing/natpmp是用于Internet共享的锚。

该文件mitm.pf.conf包含以下规则:

rdr on bridge0 proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr on bridge0 proto tcp from any to any port 443 -> 127.0.0.1 port 8080`

使用Internet共享锚点加载它:

sudo pfctl -a com.apple/100.InternetSharing/natpmp -f mitm.pf.conf

0

在类似的情况下,我使用防火墙将流量从一个NIC重定向到代理。您可以使用类似这样的方法:

$ sudo ipfw add fwd 127.0.0.1,8080 tcp from not me to any 80 in via en1
$ sudo ipfw add fwd 127.0.0.1,8080 tcp from not me to any 443 in via en1

如果为我工作正常。

您也可以使用免费的WaterRoof程序作为GUI来配置防火墙。它不会向ipsw命令添加任何内容,它只是使您可以更轻松地访问所有选项。

该页面对我的设置设置有很大帮助:

http://lucumr.pocoo.org/2013/1/6/osx-wifi-proxy/


我确实尝试过,但是由于某种原因它没有起作用。它彻底破坏了Internet共享。另外,据我了解,Apple正在从FreeBSD转向ipfw,转而由OpenBSD转向pf。
Christoffer Reijer 2013年

此答案仅适用于旧Mac。苹果已经放弃了IPFW。
布雷迪
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.