CentOS如何查看web服务端口是否开放?

在管理和维护基于 CentOS 的服务器时,了解如何查看当前系统上哪些 Web 端口正处于监听状态是一项至关重要的基本技能,无论是进行故障排查、安全审计,还是部署新的网络服务,快速准确地获取端口信息都能极大地提高工作效率,本文将系统性地介绍在 CentOS 系统中查看 Web 端口的几种常用且高效的方法,并辅以实例解析,帮助您全面掌握这一技能。

CentOS如何查看web服务端口是否开放?

Web 服务通常依赖于 TCP/IP 协议栈,通过特定的端口号来提供访问,最常见的 Web 端口是用于 HTTP 协议的 80 端口和用于 HTTPS 协议的 443 端口,任何应用程序都可以配置为监听其他非标准端口,我们需要使用系统工具来探查这些端口的实时状态。

使用 netstat 命令

netstat(Network Statistics)是一个经典且功能强大的网络工具,虽然在一些最新的 Linux 发行版中逐渐被 ss 替代,但它因其广泛的兼容性和直观的输出,至今仍被许多系统管理员频繁使用,要查看所有处于监听状态的 TCP 端口,并结合进程信息,可以使用以下组合参数:

sudo netstat -tlpn

让我们来解析这个命令的各个部分:

  • -t:显示 TCP 协议的连接。
  • -l:仅显示处于监听状态的套接字。
  • -p:显示监听端口的进程 ID(PID)和程序名称。
  • -n:以数字形式显示地址和端口号,而不是尝试解析成服务名或主机名,这能显著提高执行速度。

执行该命令后,您会看到类似以下的输出:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1148/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1321/master
tcp6       0      0 :::80                   :::*                    LISTEN      2845/nginx: master
tcp6       0      0 :::443                  :::*                    LISTEN      2845/nginx: master

从上表中,我们可以清晰地看到 nginx 主进程(PID 为 2845)正在监听 80 和 443 这两个 Web 端口。::80 表示它监听在所有 IPv6 地址上,在通常的双栈网络配置下,这也等同于监听所有 IPv4 地址,如果您只想查看特定端口,可以结合 grep 命令进行过滤,例如查看 80 端口:

sudo netstat -tlpn | grep :80

使用 ss 命令

ss(Socket Statistics)是 netstat 的现代替代品,它直接从内核空间获取信息,执行速度更快,尤其是在连接数量庞大的服务器上,其优势更为明显。ss 的参数与 netstat 非常相似,这使得熟悉 netstat 的用户可以轻松上手,要实现与上述 netstat 命令相同的功能,可以使用:

sudo ss -tlpn

其输出格式与 netstat 类似,但信息展示更为紧凑:

CentOS如何查看web服务端口是否开放?

State    Recv-Q   Send-Q      Local Address:Port      Peer Address:Port   Process
LISTEN   0        128               0.0.0.0:22             0.0.0.0:*       users:(("sshd",pid=1148,fd=3))
LISTEN   0        100             127.0.0.1:25             0.0.0.0:*       users:(("master",pid=1321,fd=13))
LISTEN   0        128                  [::]:80                [::]:*       users:(("nginx",pid=2845,fd=6))
LISTEN   0        128                  [::]:443               [::]:*       users:(("nginx",pid=2845,fd=7))

同样,您也可以使用 grep 来过滤结果:

sudo ss -tlpn | grep :443

对于 CentOS 7 及以后版本,推荐优先使用 ss 命令。

使用 lsof 命令

lsof(List Open Files)是一个用途极其广泛的工具,它遵循“在 Linux 中,一切皆文件”的哲学,网络连接也被视为文件,lsof 也可以用来查看端口占用情况,要查看特定端口(80 端口)被哪个进程占用,可以直接执行:

sudo lsof -i :80

该命令的输出会非常直观地显示出所有与 80 端口相关的网络活动:

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   2845   root    6u  IPv4  25334      0t0  TCP *:http (LISTEN)
nginx   2845   root    7u  IPv6  25335      0t0  TCP *:https (LISTEN)

这里的 -i 标志用于过滤网络文件,80 则指定了端口号。lsof 的优点在于它可以直接针对特定端口进行查询,无需再手动过滤大量输出,非常精准。

检查防火墙规则

仅仅确认服务在监听某个端口是不够的,如果服务器的防火墙(如 firewalld)阻止了对该端口的访问,外部客户端依然无法连接,检查防火墙配置是排查 Web 服务不可达问题的关键一步,在 CentOS 7 及更高版本中,默认使用 firewalld

要查看当前活动区域(通常是 public)开放的所有端口,可以运行:

CentOS如何查看web服务端口是否开放?

sudo firewall-cmd --zone=public --list-ports

如果您的 Web 服务是作为标准服务添加的,查看开放的服务列表会更清晰:

sudo firewall-cmd --zone=public --list-services

如果输出中包含 httphttps,则表示防火墙已经允许了 80 和 443 端口的流量,如果没有,您需要使用以下命令临时添加:

sudo firewall-cmd --zone=public --add-service=http --add-service=https

确认无误后,再永久保存规则:

sudo firewall-cmd --runtime-to-permanent

命令小编总结与对比

为了方便您快速选择合适的工具,下表小编总结了上述几种方法的特点:

命令 主要用途 常用示例 特点
netstat 全面查看网络连接、路由表、接口统计 netstat -tlpn 经典、兼容性好,但性能稍逊
ss 查看套接字统计信息 ss -tlpn 现代替代品,速度快,信息详细
lsof 列出进程打开的文件,包括网络连接 lsof -i :80 精准定位特定端口,功能强大
firewall-cmd 管理防火墙规则 firewall-cmd --list-services 确认外部访问是否被允许,排查网络问题

相关问答FAQs


解答: 这是一个非常常见的问题,服务在本地监听只完成了工作的一半,外部无法访问通常有两个主要原因:1. 服务器防火墙:如上文所述,您需要检查 firewalldiptables 是否放行了 80 端口的流量,请确保相应的服务(http)或端口(80/tcp)已添加到防火墙规则中,2. 云服务商安全组:如果您的 CentOS 服务器部署在云平台(如阿里云、腾讯云、AWS 等),这些平台还有一个虚拟的“安全组”或“网络 ACL”作为额外的防火墙层,您必须登录云服务商的控制台,在对应实例的安全组规则中,入方向添加一条允许 80 端口流量通过的规则。


解答: 这是因为查看其他用户进程的详细信息需要 root 权限,这两个命令在调用 -p 参数时,需要访问 /proc 文件系统中的敏感信息,当您以普通用户身份执行时,系统出于安全考虑,会隐藏这些信息,要查看完整的进程信息,请在命令前加上 sudosudo netstat -tlpnsudo lsof -i :80,这样,您就能获得所有进程的完整 PID 和程序名了。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-04 12:20
下一篇 2025-10-04 12:22

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信