使用PF端口转发传出请求


3

我正在尝试将本地计算机上端口843上的所有传出流量重定向到端口1234上的本地服务。

因此,当我向例如发送请求时1.2.3.4:843,我希望它连接到127.0.0.1:1234(透明地发送到发出请求的应用程序)。

我在OS X上,因此尝试使用来实现pf

这是我所拥有的:

ext_if = "en0"
int_if = "lo0"

rdr on $ext_if inet proto tcp from self to any port 843 -> 127.0.0.1 port 1234

现在,当我这样做时,我telnet 1.2.3.4 843期望本地服务上有连接(在端口1234上运行)。

但是,它似乎无法正确重定向。使用tcpdumpI,我可以看到数据包被放置在与目标接口上1.2.3.4

如果我只执行本地主机规则,例如

rdr on $int_if inet proto tcp from self to any port 843 -> 127.0.0.1 port 1234

然后telnet localhost 843按预期方式工作,我从侦听port的本地服务获得响应 1234

我不确定自己在做什么错,现在我茫然无措。任何帮助/指针表示赞赏。

编辑:

我进行了更多测试,似乎与最后一条规则一样,落在回送接口上的任何请求都可以正常工作。因此telnet 127.2.3.4 843也正确重定向。

我尝试添加$ext_if到上面

rdr on { $ext_if $int_if } proto tcp from any to any port 843 -> 10.0.1.10 port 1234

但是没有成功。我还添加了sysctl转发。什么也没做。

sudo sysctl -w net.inet.ip.forwarding=1
sudo sysctl -w net.inet6.ip6.forwarding=1

1
有同样的问题,回答了在这里: serverfault.com/questions/421261/...
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.