我需要将任何地址端口 22 的所有连接转发到不同的网关(即非默认网关)。首先我打算使用 ipfw 来执行此操作:
sudo ipfw add 5 fwd $EXTERNAL_IP,22 tcp from any to any 22 keep-state
但在 Mac OS X Lion 上它似乎不起作用。无论如何,查看 ipfw 文档我发现它已被弃用,我应该使用 pfctl。
所以我修改了/etc/pf.conf
文件:
rdr proto tcp from $internal_ip to any port 22 -> $external_ip port 22
但没有运气。
有谁知道如何将本地应用程序生成的所有连接转换或转发到除端口 22 之外的任何地址到不同的网关/IP 地址?
更新
根据 Jake 的建议,我尝试仅指定目标 IP,因此我将 rdr 规则转换为 mac os x 语法:
rdr proto tcp from any to any port 22 -> $external_ip port 22
即使在这种情况下,我也没有得到预期的结果,即我可以通过 ssh 连接到我的服务器,但通过默认网关。
答案1
rdr pass on $internal_ip inet proto tcp from any to any port 22
无论如何,我都不是专家,但我认为应该这样做。长的我已经使用过 iptables 以外的任何东西很久了 :)
答案2
您可以尝试找到一个端口rinetd适用于 Mac OS X。