有一个名为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行为的任何想法吗?