失去在 Mac 上绑定 80 端口的能力,如何调试?

失去在 Mac 上绑定 80 端口的能力,如何调试?

在过去的几天里,我失去了使用 docker 监听端口 80 的能力,并且不使用 sudo 就无法使用 nodejs 监听端口 80。

以前,我可以简单地在端口 80 上启动完全相同的 docker 容器,它就会绑定到端口 80。现在,它运行时没有错误,但实际上并没有监听端口。

sudo lsof -i -P | grep -i "80"没有显示。

我以前也可以使用 node.js 监听 80 端口,无需 sudo。现在,它给出了错误:

听 EACCES:权限被拒绝 0.0.0.0:80。

如果我执行 sudo node myapp 那么它就会像往常一样监听。

我唯一能想到的就是一些自动的 Mac 更新或几天前安装的 VirtualBox 的事实。

我该如何调试正在发生的事情?我尝试重新启动。没有区别。多年来,我一直在使用 docker 和 node.js 绑定端口 80,但它却随机停止工作。

答案1

在某些操作系统中,非特权用户被禁止绑定低于一定数量的端口,以帮助防止某些类型的攻击。

我相信在 Mac 上这种行为多年来已经发生了变化,所以也许它再次发生了变化,比如由于您猜测的更新。

一个简单的解决方案是将其绑定到更高的端口号,然后在操作系统防火墙中设置从 80 到更高端口的转发端口。

相关内容