如何让 CentOS 正确列出开放端口?

如何让 CentOS 正确列出开放端口?

我正在使用托管一组 docker 容器的 CentOS 7 操作系统。

通过使用 Web 浏览器,我可以访问端口 80 上的服务并得到响应。一点本地知识可以帮助我理解响应来自一个 docker 容器。

但是,我有一个大问题:我似乎找不到操作系统指示端口 80 已打开的方法。这是我尝试过的(全部与root用户一起):

  • netstat -tulnp | grep 80列表没有什么监听80端口
  • ss -nutlp | grep 80列出没有在端口 80 上侦听的内容
  • lsof -i -P | grep 80还列出了端口 80 上没有侦听的内容
  • wget 127.0.0.1成功获取index.html

审问码头工人直接通过docker ps并不是我真正想要的答案,因为我们必须能够询问操作系统并查看哪个进程负责处理对端口 80 的请求。这也没有帮助,因为docker ps返回一些PORTS 列中具有以下条目的容器:

PORTS
80/tcp
8080/tcp
80/tcp

再说一遍,我不想去泊坞窗寻找答案,因为必须有一种方法来询问操作系统并识别负责处理端口 80 的进程。

我唯一的猜测是泊坞窗安装某种低级驱动程序来拦截此类网络请求。

任何有关如何让 CentOS 分发此信息以及命令行命令的建议,我们将不胜感激!

答案1

您确定 docker 主机正在侦听端口 80 吗?它可能会从端口 80 重定向到它所在的任何端口使用内置防火墙监听。

如果您正在运行 IPTABLES,您可以使用以下命令进行检查:

iptables -L -t nat

然后你会看到一个名为 DOCKER 的链,它会告诉你有哪些重定向,类似于:

Chain DOCKER (2 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere            
DNAT       tcp  --  anywhere             anywhere             tcp dpt:http-alt to:172.17.0.3:80
DNAT       tcp  --  anywhere             anywhere             tcp dpt:4433 to:172.17.0.3:443
DNAT       tcp  --  anywhere             anywhere             tcp dpt:1688 to:172.17.0.4:1688

相关内容