有一个很酷的实用程序叫做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
:
- 为环回接口创建自定义别名
127.0.0.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(使用前将#替换为@)