【问题标题】:Trouble setting up port forwarding for transparent proxy on Mac OS X在 Mac OS X 上为透明代理设置端口转发时遇到问题
【发布时间】:2013-12-24 10:51:46
【问题描述】:

我正在尝试在我的 Mac OS X Lion (10.7.5) 上设置透明代理,因此我可以使用 mitmproxy(拦截来自 Android 应用程序的 SSL 流量)。我按照mitmproxy docs for setting up port forwarding with pf on Mac OS X 中的步骤进行操作,都没有任何错误:

$ sudo sysctl -w net.inet.ip.forwarding=1
Password:
net.inet.ip.forwarding: 0 -> 1

$ sudo pfctl -f pf.conf
No ALTQ support in kernel
ALTQ related functions disabled

$ sudo pfctl -e
No ALTQ support in kernel
ALTQ related functions disabled
pf enabled

但它似乎没有任何效果。当我在浏览器中访问网站时,它会发出直接请求,并且不会通过我指定的端口。这是pf.conf 文件(en1 是我的wifi):

rdr on en1 inet proto tcp to any port 80 -> 127.0.0.1 port 4500
rdr on en1 inet proto tcp to any port 443 -> 127.0.0.1 port 4500

【问题讨论】:

  • 您是否将客户端设备配置为使用代理的主机作为默认网关?

标签: macos networking proxy portforwarding mitmproxy


【解决方案1】:

感谢您今天访问 IRC 频道。我已经对此进行了追踪,基本问题是 rdr 规则适用于入站流量。这意味着他们不会重定向来自盒子本身的流量。如果你仔细想想,这是不可避免的:我们无法区分来自非 mitmproxy 应用程序的出站连接和来自 mitmproxy 本身的出站连接。我们可以使用 route-to 将流量发送到 lo0,然后将其重定向,但这会导致无限循环,其中 mitmproxy 自己的出站连接也被重定向回 mitmproxy。

因为我对您的用例有所了解,所以我建议您探索使用 VirtualBox 的方法。一个攻击计划是将 VirtualBox 网络设置为桥接模式,然后使用匹配源地址的 pf 规则将流量重定向到 mitmproxy。那应该做你想做的,而不是由于无限重定向而导致时间和空间上的奇点。

如果您需要更多帮助,请再次访问 IRC 频道。

【讨论】:

  • 听起来好像只使用我的实际 Android 手机(使用 USB 文件传输下载 mitmproxy 证书)而不是模拟器可能更容易?
  • 是的,这是更常见的用例,您当前的设置应该“正常工作”。
  • 我也有同样的问题。但是,我使用的是我的真实手机,而我的 mitmproxy 根本没有接收任何流量
  • @user1048138 这实际上听起来像是一个不同的问题。也许网关没有在电话上正确配置?如果您需要帮助,请访问 IRC 频道(irc.oftc.net 上的#mitmproxy)。
【解决方案2】:

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

现在,如果您完成上述设置,您会注意到 实际上没有任何效果。造成这种情况的原因是 OS X 内核中的错误 这需要将 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 文件 (续...)

【讨论】:

    【解决方案3】:

    您使用的是端口 4500,而不是默认端口 8080。 您是否使用端口规范启动 mitmproxy?: mitmproxy -T --host -p 4500

    您是否按照步骤在 Android 设备中设置证书? http://mitmproxy.org/doc/certinstall/android.html

    另一个问题可能是您的 android 手机上的网关:首选项 - Wifi - 保留您正在使用的网络 - 编辑网络 - 高级选项 - 使用 mitmproxy 将机器的 ip 设置为网关。

    顺便说一句,我有同样的警告,没有 ALTQ 功能,但它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-13
      • 2011-11-28
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      • 2014-02-26
      • 2013-06-17
      • 1970-01-01
      相关资源
      最近更新 更多