我需要将所有连接到任何地址端口 22 转发到不同的网关(即没有默认值)。首先我想用ipfw来做:
sudo ipfw add 5 fwd $EXTERNAL_IP,22 tcp from any to any 22 keep-state
Run Code Online (Sandbox Code Playgroud)
但是对于 Mac OS X Lion,它似乎不起作用。无论如何,查看 ipfw 文档我发现它已被弃用,我应该使用 pfctl。
所以我修改了/etc/pf.conf文件:
rdr proto tcp from $internal_ip to any port 22 -> $external_ip port 22
Run Code Online (Sandbox Code Playgroud)
但没有运气。
有谁知道如何将本地应用程序生成的所有连接转换或转发到任何地址,但端口 22 到不同的网关/IP 地址?
更新
按照 Jake 的建议,我尝试仅指定目标 IP,因此我将 rdr 规则转换为 mac os x 语法:
rdr proto tcp from any to any port 22 -> $external_ip port 22
Run Code Online (Sandbox Code Playgroud)
即使在这种情况下,我也没有得到预期的结果,即我可以通过 ssh 连接到我的服务器,但通过默认网关。