Macos 在OSX中使用PacketFilter透明地代理数据包

Macos 在OSX中使用PacketFilter透明地代理数据包,macos,networking,osx-mavericks,firewall,openbsd,Macos,Networking,Osx Mavericks,Firewall,Openbsd,有一个很酷的实用程序叫做。过去它依赖于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(

有一个很酷的实用程序叫做。过去它依赖于
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(本地主机)端口12300。但是,它不会更改TCP数据包中的目标IP或端口。这对sshuttle很重要,因为它使用原始目的地的信息将数据包转发到另一个网络

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

rdr pass proto tcp from any to any -> 127.0.0.1 port 12300
此规则确实将通信发送到127.0.0.1(本地主机)端口12300,但它也将目标地址重写为127.0.0.1


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

您是否在内核中设置了转发标志(即:
sudo sysctl-w net.inet.ip.forwarding=1
)?问题中的IP地址是什么,即:客户端、路由器/计算机的外部和内部以及目标IP?在没有任何重定向规则的情况下,您是否尝试将您的客户机配置为将您的Maverick机器用作网关(即:在客户机上
route add-net-Mask 255.255.255 gw
?您找到了吗?如果找到了,您介意回答您的问题吗?谢谢!也许可以在rdr之前标记数据包,然后根据标记进行路由?