端口转发在 mac osx 上不起作用

端口转发在 mac osx 上不起作用

我在我的 mac 上设置了端口转发,如下所示:

sudo sysctl net.inet.ip.forwarding=1
echo "rdr pass inet proto tcp from any to any port 445 -> 127.0.0.1 port 5441" | sudo pfctl -ef -

对于此设置,我正在运行一个服务器,nc如下所示:

$ nc -l 5441

当我尝试通过 telnet 连接到此服务器时,尝试失败并出现以下错误:

$ sudo telnet 127.0.0.1 445
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host

tcpdump在端口上运行445不会捕获任何数据包。我不确定发生了什么事,非常感谢所有的帮助。

答案1

Ardr只是一个重定向;还可能需要pass(或在系统偏好设置中进行适当的点击)以允许访问该端口。这对我有用(尽管我几乎完全禁用了 Mac OS X 10.11 笔记本电脑上的 Apple 防火墙规则)/etc/pf.conf

set skip on { lo0, vboxnet0 }
rdr pass inet proto tcp from any to any port 445 -> 127.0.0.1 port 5441
block in
pass in inet proto tcp from any to any port 445

然后sudo pfctl -f /etc/pf.conf加载它,然后测试nc -l 127.0.0.1 5441并从远程计算机连接到端口 445 显示访问权限。

唔!然而,本地Mac OS X 系统telnet 127.0.0.1 445失败,可能是由于skip lo0.skip如果需要本地主机访问重定向,可以通过不使用来纠正此问题:

set skip on vboxnet0
rdr pass inet proto tcp from any to any port 445 -> 127.0.0.1 port 5441
block in
pass on lo0
pass in inet proto tcp from any to any port 445

另请注意,这locahost可能意味着127.0.0.1::1可能还需要设置inet6相关规则,或确保连接始终使用 IPv4 完成,以便 IPv6 可以工作或不使用。

相关内容