我在我的 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 可以工作或不使用。