在 OS X 中使用 PacketFilter 透明代理数据包 [关闭]

2024-04-30

有一个很酷的实用程序叫做sshuttle https://github.com/apenwarr/sshuttle。这取决于ipfw转发过去的数据包。看起来ipfw在 Mavericks 中大部分都被破坏了,建议现在使用 PacketFilter 来解决这个问题。

我花了一天的大部分时间查看 PacketFilter,它似乎ipfw有一个 PacketFilter 不支持的功能(希望我是错的)。

以下规则:

ipfw -q add 12300 fwd 127.0.0.1,12300 tcp from any to any not ipttl 42 keep-state setup

会将所有流量转发到 127.0.0.1 (localhost) 端口 12300。但是,它不会更改 TCP 数据包中的目标 IP 或端口。这对于 sshuttle 很重要,因为它使用有关原始目的地的信息将数据包转发到另一个网络。

我在 PacketFilter 世界中能找到的最接近的规则是:

rdr pass proto tcp from any to any -> 127.0.0.1 port 12300

此规则确实将流量发送到 127.0.0.1 (localhost) 端口 12300,但它还将目标地址重写为 127.0.0.1。

关于如何在 OS X 中获得行为 sshuttle 需求有什么想法吗?


为什么不尝试一下Loopback Alias:

  1. 为环回接口创建自定义别名127.0.0.2.
  2. 然后,将流量重定向到127.0.0.2:12300.

这样即使pf将目标 IP 重写为 127.0.0.2,这与127.0.0.1。这或许可以让您区分 IP 地址之间的流量。

ifconfig lo0 alias 127.0.0.2

那么对于你的pf规则,你可以这样做:

rdr pass proto tcp from any to any -> 127.0.0.2 port 12300

如果这不起作用,是否可以使用第三方包,例如redsocks https://github.com/darkk/redsocks?请记住,这不会是确切的替代品ipfw但是,通过一些配置和可能的一些脚本编写,也许可以用于实现类似的目的。

如果您的主要目标是与sshuttle具体来说,我建议研究该项目可能出现的任何更新或分支,以解决 macOS 的更改,如前所述。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 OS X 中使用 PacketFilter 透明代理数据包 [关闭] 的相关文章

随机推荐