服务器测评网
我们一直在努力

服务器怎么查看端口是否打开,Linux端口检测命令有哪些

在服务器运维与网络管理中,确认端口是否处于正常打开及监听状态是排查服务故障的首要环节,要准确判断端口状态,必须从服务器内部监听状态外部网络连通性两个维度进行综合检测,核心上文归纳是:首先在服务器本地使用系统命令确认服务进程是否正在监听目标端口,随后从客户端或外部网络发起连接测试,验证防火墙与安全组是否放行流量,只有当内部进程处于监听(LISTEN)状态,且外部请求能成功建立连接时,才可判定该端口完全打开。

服务器怎么查看端口是否打开,Linux端口检测命令有哪些

Linux服务器内部端口状态检测

对于Linux系统,查看端口是否被进程占用和监听,最推荐使用ssnetstat命令,这两个工具能直接展示内核中网络协议栈的状态,具有极高的权威性。

使用ss命令(推荐)
ss(Socket Statistics)是现代Linux发行版默认提供的工具,相比netstat,它直接读取内核数据,执行速度更快,信息更详尽,要查看TCP端口是否在监听,可以使用以下命令:

ss -tulpn | grep <端口号>

命令参数解析:

  • -t:显示TCP套接字。
  • -u:显示UDP套接字。
  • -l:仅显示监听状态的套接字。
  • -p:显示使用该套接字的进程信息(PID和进程名)。
  • -n:以数字形式显示端口号,不解析服务名。

若输出结果中包含LISTEN状态,且对应的Local Address列显示为0.0.0:<端口>(监听所有网卡)或具体IP地址,则说明服务已成功在本地启动并监听,若没有任何输出,则意味着该服务未启动或配置了错误的端口。

使用netstat命令(传统方式)
在旧版系统中,netstat依然是常用的工具,虽然性能略逊于ss,但其功能完备,执行命令如下:

netstat -tulpn | grep <端口号>

该命令的输出结果与ss类似,重点关注State列是否为LISTEN,如果系统提示找不到netstat命令,通常需要安装net-tools软件包。

使用lsof命令
lsof(List Open Files)通过列出打开的文件来获取端口信息,因为Linux中“一切皆文件”,网络套接字也不例外。

lsof -i:<端口号>

此命令能清晰地显示是哪个具体进程占用了端口,对于快速定位冲突进程非常有帮助。

Windows服务器内部端口状态检测

在Windows Server环境下,主要通过命令提示符(CMD)或PowerShell进行端口查询。

使用netstat命令
Windows下的netstat命令与Linux版本参数略有不同,查看特定端口监听状态的常用命令为:

服务器怎么查看端口是否打开,Linux端口检测命令有哪些

netstat -ano | findstr <端口号>

参数解析:

  • -a:显示所有连接和监听端口。
  • -n:以数字形式显示地址和端口号。
  • -o:显示拥有该连接的进程ID(PID)。

如果输出中包含TCP 0.0.0.0:<端口> 0.0.0.0:0 LISTENING <PID>,则表示端口处于监听状态,获取PID后,可以通过任务管理器查看对应的具体应用程序,确认是否为预期服务。

使用PowerShell命令
PowerShell提供了更现代化的测试手段,特别是Test-NetConnection命令,它不仅能检测本地端口,还能进行远程连通性测试。

Test-NetConnection -ComputerName localhost -Port <端口号>

若结果中TcpTestSucceeded显示为True,则表明端口在本地是打开的。

外部网络连通性验证

确认服务器内部端口处于监听状态后,必须进行外部测试,很多时候服务已启动,但由于防火墙拦截,外部依然无法访问,这一步是验证服务器安全策略的关键。

使用telnet命令
telnet是最经典的TCP连接测试工具,在客户端终端执行:

telnet <服务器IP> <端口号>

如果屏幕显示Connected to...或直接跳转到黑屏,说明端口是通的,防火墙已放行,如果显示Connection refused,通常说明目标端口未监听;若显示Connection timed out,则极有可能是防火墙丢弃了数据包。

使用nc(netcat)命令
nc功能比telnet更强大,是运维人员的瑞士军刀。

nc -zv <服务器IP> <端口号>
  • -z:扫描模式,不发送数据。
  • -v:显示详细信息。
    成功时会返回succeeded,失败则会有明确的连接拒绝或超时提示。

使用nmap工具
nmap是专业的网络扫描器,能提供极其详细的端口状态报告。

nmap -p <端口号> <服务器IP>

输出结果中,STATE列若显示为open,则端口完全可达;若显示为filtered,则说明防火墙拦截了探测请求;closed则表示端口未开启。

服务器怎么查看端口是否打开,Linux端口检测命令有哪些

防火墙与云安全组策略排查

当外部测试显示timeout而内部监听正常时,问题必然出在网络边界防护上,这是服务器端口管理中最容易被忽视的环节。

系统级防火墙

  • Linux (iptables/firewalld/ufw):对于CentOS 7及以上系统,通常使用firewalld,需要检查防火墙状态及是否允许该端口,使用firewall-cmd --list-ports查看已开放的端口,对于Ubuntu,ufw status能列出规则,必要时,需执行firewall-cmd --add-port=<端口>/tcp --permanent并重载防火墙。
  • Windows Firewall:需要在高级安全Windows防火墙中,检查入站规则是否存在允许该端口的策略,且规则配置文件是否启用。

云平台安全组
如果服务器部署在阿里云、腾讯云或AWS等公有云平台,必须登录云控制台检查安全组设置,安全组作用于虚拟网卡之外,优先级高于系统内部防火墙,如果安全组未配置入站规则允许特定端口的流量,无论服务器内部如何配置,外部请求永远会被云厂商的网关拦截,这是现代云服务器运维中必须具备的专业认知。

常见问题与专业解决方案

在实际操作中,可能会遇到端口被占用或权限不足的情况,如果发现目标端口已被非预期进程占用,可以使用kill -9 <PID>(Linux)或taskkill /PID <PID> /F(Windows)强制结束进程,对于1024以下的特权端口,Linux服务必须以root权限启动才能成功监听,对于Web服务,建议结合curl -Iv http://IP:<端口号>命令,不仅验证TCP连通性,还能验证HTTP协议层面的响应状态,从而实现从网络层到应用层的全面体检。

相关问答

Q1:为什么在服务器本地能访问端口,但远程无法连接?
A: 这是一个典型的防火墙或网络访问控制列表(ACL)问题,首先检查服务器操作系统内部的防火墙(如iptables、firewalld或Windows防火墙)是否放行了该端口的入站流量,如果服务器位于云环境,必须检查云厂商控制台中的安全组设置,确认是否添加了对应的入站规则,还需检查服务器是否开启了SELinux,有时严格的SELinux策略也会阻止外部进程访问非标准端口。

Q2:如何查看服务器上所有正在监听的TCP端口?
A: 在Linux系统上,可以使用ss -tulpnnetstat -tulpn命令,这两个命令会列出所有处于LISTEN状态的TCP套接字,并显示对应的监听IP、端口以及进程信息,在Windows系统上,可以使用netstat -ano | findstr LISTENING来查看所有监听状态的端口及对应的进程ID(PID),这有助于快速梳理服务器当前开放的网络服务概况。

如果您在具体的端口检测过程中遇到报错或特殊环境下的配置问题,欢迎在评论区留言,我们将为您提供进一步的排查思路。

赞(0)
未经允许不得转载:好主机测评网 » 服务器怎么查看端口是否打开,Linux端口检测命令有哪些