Linux系统如何查看本地端口是否打开的详细操作步骤呢?

在Linux系统中,端口是网络通信的入口,服务是否正常运行、网络连接是否正常,都与端口状态密切相关,查看本地端口是否打开,通常需要确认两个层面:一是服务是否正在监听该端口(进程监听),二是防火墙是否允许该端口的流量通过(策略放行),本文将详细介绍多种查看端口状态的方法,涵盖命令行工具、防火墙检查及端口连通性测试。

linux如何查看本地端口是否打开

使用netstat命令(传统工具)

netstat是Linux系统中经典的网络状态查看工具,尽管在较新系统中逐渐被ss替代,但仍因其广泛的兼容性被使用,通过netstat可以查看端口监听状态、连接状态及关联进程信息。

基本语法

netstat [选项]

常用参数及作用

参数 作用
-t 显示TCP端口
-u 显示UDP端口
-l 仅显示监听状态的端口
-p 显示占用端口的进程ID(PID)和程序名
-n 以数字形式显示地址和端口,避免DNS解析,加快查询速度

示例

查看所有监听的TCP和UDP端口,并显示关联进程:

netstat -tulnp

输出结果解析:

  • Proto:协议类型(TCP/UDP)
  • Local Address:本地IP地址和端口(0.0.0表示监听所有IP,0.0.1表示仅本地监听)
  • State:端口状态(LISTEN表示监听中)
  • PID/Program name:占用端口的进程ID和程序名(如nginx: worker process

若需查看特定端口(如80端口)是否监听:

netstat -tulnp | grep :80

使用ss命令(推荐,更高效)

ssiproute2工具包的一部分,作为netstat的替代品,ss在查询大量连接时性能更优,输出信息也更简洁。

基本语法

ss [选项]

常用参数及作用

参数 作用
-t 显示TCP端口
-u 显示UDP端口
-l 仅显示监听端口
-n 数字形式显示,避免DNS解析
-p 显示进程ID和程序名
-a 显示所有端口(包括监听和非监听)

示例

查看所有监听的TCP/UDP端口及进程:

ss -tulnp

输出结果与netstat类似,但列更清晰,

  • State:端口状态(LISTENESTABLISHED等)
  • Recv-Q/Send-Q:接收队列和发送队列长度
  • Local Address:Port:本地IP和端口
  • Process:进程名和PID

过滤特定端口(如22端口):

ss -tulnp | grep :22

使用lsof命令(通过文件描述符查看)

lsof(list open files)用于列出系统打开的文件,包括网络连接、设备文件等,通过lsof可以查看指定端口被哪个进程占用。

基本语法

lsof -i :端口号

示例

查看8080端口占用情况:

lsof -i :8080

输出结果:

linux如何查看本地端口是否打开

  • COMMAND:进程名(如java
  • PID:进程ID
  • USER:进程所有者
  • FD:文件描述符(IPv6IPv4表示协议类型)
  • TYPE:网络类型(IPv4IPv6
  • DEVICE:设备标识
  • SIZE/OFF:文件大小
  • NODE:节点标识
  • NAME:端口和协议(如*:8080 (LISTEN)

若端口未被占用,则输出为空。

使用telnet或nc测试端口连通性

netstatss主要用于查看端口监听状态,而telnetnc(netcat)可用于测试本地或远程端口是否可达(即服务是否响应)。

使用telnet

telnet 本地IP 端口号

示例:测试本地80端口是否可访问

telnet localhost 80
  • 若端口开放,显示Connected to localhost.,并进入交互界面;
  • 若端口关闭,显示Connection refused

使用nc

nctelnet更灵活,支持多种模式,安装方式:

  • CentOS:yum install nc
  • Ubuntu:apt install netcat

基本语法:

nc -zv 本地IP 端口号

参数说明:

  • -z:扫描模式,不传输数据,仅连接测试
  • -v:显示详细输出

示例:测试3306端口

nc -zv localhost 3306

成功输出:Connection to localhost 3306 port [tcp/mysql] succeeded!
失败输出:Connection refused

检查防火墙状态(端口是否被阻止)

即使服务正在监听端口,若防火墙未开放该端口,外部仍无法访问,需根据系统使用的防火墙工具进行检查。

firewalld(CentOS 7+/RHEL 7+)

查看已开放的端口:

firewall-cmd --list-ports

查询特定端口是否开放(如8080/tcp):

linux如何查看本地端口是否打开

firewall-cmd --query-port=8080/tcp

返回yes表示开放,no表示未开放。

ufw(Ubuntu/Debian)

查看防火墙状态及规则:

ufw status

输出示例:

Status: active
To                         Action      From
--                         ------      ----
80/tcp                     ALLOW       Anywhere
8080/tcp                   ALLOW       Anywhere

iptables(传统防火墙)

查看所有规则(-L列出规则,-n数字形式,-v显示详细信息):

iptables -L -n -v

关注ACCEPT规则的端口,例如ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80表示允许80端口访问。

常用端口查看命令对比

命令 适用场景 优点 缺点
netstat 传统系统,兼容性需求高 参数直观,输出易理解 性能较差,新系统逐渐弃用
ss 新系统(CentOS 7+/Ubuntu 16.04+) 高效,输出简洁,支持更多过滤 参数较netstat复杂
lsof 查看端口占用进程 精准定位进程,支持文件描述符 仅显示监听端口,不区分连接状态
telnet/nc 测试端口连通性 直观反映端口是否可达 需额外安装,仅测试连通性

注意事项

  1. 端口状态区分LISTEN表示服务正在监听,等待连接;ESTABLISHED表示已有连接建立;CLOSED表示端口未开启。
  2. 防火墙优先级:即使服务监听端口,若防火墙阻止,仍无法访问,需结合防火墙工具检查。
  3. 系统差异:不同Linux发行版默认工具不同(如CentOS用firewalld,Ubuntu用ufw),需根据系统选择命令。

相关问答FAQs

Q1:为什么端口显示“LISTEN”,但外部设备仍无法连接?
A:可能原因有两个:一是防火墙未开放该端口(如firewalld、ufw或iptables阻止了流量),二是服务监听的IP地址非0.0.0(如仅监听0.0.1,则仅本地可访问),可先通过telnet 本地IP 端口测试本地连通性,再检查防火墙规则,确保服务监听地址为0.0.0或正确绑定公网IP。

Q2:如何查看所有已开放的端口及对应服务列表?
A:结合ssgrep可快速整理,查看所有监听端口及对应服务(过滤掉PID和内核线程):

ss -tulnp | grep -v "kernel" | awk '{print $5, $7}' | sort | uniq

输出格式为“IP:端口 进程名”,便于快速定位服务,若需更详细的服务信息(如端口号对应的服务名称),可结合/etc/services文件(如grep ":80" /etc/services查看80端口对应的标准服务名)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/29456.html

(0)
酷番叔酷番叔
上一篇 2025年9月24日 10:12
下一篇 2025年9月24日 10:36

相关推荐

  • 你的CPU支持硬件虚拟化吗?

    在Linux系统中,查看虚拟化功能是否启用是部署虚拟机(如KVM、VirtualBox)或容器(如Docker、LXC)的关键前提,以下详细介绍多种专业方法,帮助您全面检测CPU虚拟化支持(如Intel VT-x或AMD-V)及当前虚拟化环境状态,通过 /proc/cpuinfo 文件运行命令查看CPU标志位……

    2025年6月16日
    14000
  • Linux改root密码如何避免风险?

    当前用户拥有sudo权限(推荐)适用场景:已知普通用户密码且该用户已被加入sudo组(如Ubuntu默认配置),步骤:打开终端,执行命令: sudo passwd root输入当前用户的登录密码(验证sudo权限),输入两次新的root密码(输入时无星号提示,属正常现象),出现 passwd: password……

    2025年7月23日
    16100
  • 如何用快捷键快速清屏?

    在Linux系统中,清屏是日常操作中频繁使用的功能,无论是为了隐藏敏感信息、整理混乱的终端界面,还是提升工作效率,掌握多种清屏方法都至关重要,以下详细介绍五种主流方法,涵盖快捷键、命令及底层原理,适用于不同场景和用户需求,操作:按下 Ctrl + L(所有主流终端通用),部分终端(如GNOME Terminal……

    2025年8月7日
    13400
  • 如何将Linux系统制作成镜像?

    制作Linux系统镜像是一个将完整系统环境封装为可部署文件的过程,常用于虚拟机部署、云平台迁移或嵌入式设备开发,以下是详细步骤,涵盖环境准备、系统构建、配置优化及最终打包,准备环境与工具首先需要一台运行Linux的主机(如Ubuntu Server),并安装必要的工具,以Debian/Ubuntu为例,通过以下……

    2025年10月2日
    9700
  • Linux系统下如何在终端输入或文件命名中正确使用下划线?

    在Linux系统中,下划线(_)是一种常见的字符,广泛应用于文件命名、变量定义、配置文件编写等多个场景,其使用不仅符合Linux的命名规范,还能提升标识的可读性,以下从文件与目录命名、命令行与脚本变量、配置文件编写等角度,详细说明如何在Linux中正确使用下划线,文件与目录命名中的下划线使用Linux文件系统允……

    2025年10月5日
    11300

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信