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

Linux查看端口开放状态有哪些方法?常用命令详解

Linux端口基础:理解端口与协议

在Linux系统中,端口是网络通信的“入口”,用于区分同一台主机上的不同服务或应用程序,每个端口通过端口号(0-65535)标识,其中0-1023为知名端口(如HTTP的80端口、SSH的22端口),1024-49151为注册端口,49152-65535为动态或私有端口,端口与协议绑定,主要分为TCP(传输控制协议,面向连接,可靠传输)和UDP(用户数据报协议,无连接,高效传输),例如DNS服务使用53端口(TCP/UDP),而HTTP服务默认使用80端口(TCP)和443端口(TCP,HTTPS)。

Linux查看端口开放状态有哪些方法?常用命令详解

查看端口状态本质是监控这些“入口”的占用情况、监听状态及关联进程,这有助于排查网络问题、发现服务异常或防范安全风险,当网站无法访问时,可能需要确认80端口是否被正确监听;当服务器出现异常连接时,可能需要分析哪些端口被未知进程占用。

核心命令:查看端口状态的三大工具

Linux提供了多种命令查看端口状态,其中最常用的是netstatsslsof,三者功能互补,适用于不同场景。

netstat:经典端口查看工具

netstat是传统的网络状态查看工具,几乎在所有Linux发行版中预装,功能全面,适合初学者理解端口状态。

  • 基础语法netstat [选项]
  • 常用选项与示例
    • netstat -tuln:查看所有监听(-l)的TCP(-t)和UDP(-u)端口,并以数字形式显示地址和端口(-n,避免DNS解析,加快速度),输出结果中,“Local Address”列显示监听地址和端口,“State”列显示端口状态(如LISTEN表示正在监听)。
    • netstat -tulp:在-tuln基础上,显示关联进程ID(-p)和进程名,方便定位服务。tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd表示22端口被SSH服务(进程ID 1234)监听。
    • netstat -an:显示所有(-a)端口(包括监听和非监听),以数字形式(-n)输出,可查看网络连接状态(如ESTABLISHED表示已建立连接,TIME_WAIT表示连接等待关闭)。

ss:高效替代netstat的现代工具

ssiproute2包中的工具,性能优于netstat,尤其在处理大量网络连接时速度更快,已成为现代Linux系统的默认选择。

  • 基础语法ss [选项]
  • 常用选项与示例
    • ss -tuln:与netstat -tuln功能相同,查看监听的TCP/UDP端口,输出更简洁,例如LISTEN 0 5 *:22 *:*表示22端口处于监听状态,等待队列长度为5。
    • ss -tulp:显示监听端口的进程信息,例如LISTEN 0 128 *:8080 *:* users:(("nginx",pid=1234,fd=6)),明确显示nginx进程占用8080端口。
    • ss -tan 'sport = :22':筛选源端口为22的连接(sport表示源端口),支持更复杂的过滤条件(如dport目标端口、state连接状态)。

lsof:以文件视角查看端口

lsof(list open files)用于列出系统打开的文件,在Linux中,网络连接也被视为文件,因此可通过lsof查看端口关联的进程。

  • 基础语法lsof [选项] [表达式]
  • 常用选项与示例
    • lsof -i :80:查看80端口的使用情况,输出包括进程ID、进程名、协议(TCP/UDP)和状态(如LISTEN)。
    • lsof -i -P -n:显示所有网络连接(-i),不解析端口名(-P)和主机名(-n),适合快速定位。
    • lsof -c nginx:查看nginx进程打开的所有文件(包括网络端口),-c后接进程名。

场景化实践:不同需求的端口查看方法

查看所有监听端口(服务是否启动)

若需确认系统当前运行的服务,可查看监听端口:

Linux查看端口开放状态有哪些方法?常用命令详解

# 使用ss(推荐)
ss -tulnp
# 使用netstat
netstat -tulnp

输出结果中,StateLISTEN的端口即为服务监听端口,结合PID/Program name列可确认服务状态(如sshdnginxmysqld等)。

查看特定端口占用(端口冲突排查)

当某个服务无法启动时,可能是端口被占用,可通过以下方法定位:

# 查看8080端口占用情况
ss -tulnp | grep 8080
# 或
lsof -i :8080

若输出显示端口被其他进程占用,可通过kill PID终止进程,或修改服务配置更换端口。

查看端口关联进程(异常服务定位)

若发现陌生端口监听,可能存在安全风险,需快速定位进程:

# 使用ss查看所有监听端口的进程
ss -tulnp
# 使用lsof按端口查找
lsof -i :端口号

获取进程ID后,可通过ps aux | grep PID查看进程详细信息,或检查/proc/PID目录(如/proc/1234/exe指向可执行文件路径)。

查看网络连接状态(流量分析)

分析端口连接状态可帮助排查网络问题,如查看已建立的TCP连接:

Linux查看端口开放状态有哪些方法?常用命令详解

# 查看所有TCP连接状态
ss -tan
# 查看处于ESTABLISHED状态的连接
ss -tan state established

输出结果中,Recv-QSend-Q列分别表示接收队列和发送队列的字节数,Local Address:PortPeer Address:Port显示本地和远程地址及端口。

进阶技巧:端口管理与安全防护

端口与进程的绑定关系

端口由进程绑定,进程终止后端口自动释放,若需长期绑定端口,需确保服务设置为开机自启(如systemctl enable nginx),多个进程无法绑定同一端口(除非配置SO_REUSEADDR选项)。

防火墙与端口访问控制

Linux防火墙(如iptablesfirewalld)可控制端口访问权限,需结合端口查看工具确认规则:

# 查看firewalld开放的端口
firewall-cmd --list-ports
# 查看iptables的端口转发规则
iptables -t nat -L -n -v

若端口无法访问,可能是防火墙未放行,需通过firewall-cmd --add-port=80/tcp --permanent(firewalld)或iptables -A INPUT -p tcp --dport 80 -j ACCEPT(iptables)添加规则。

端口安全注意事项

  • 关闭不必要端口:通过ss -tulnp检查非业务端口(如135、139等Windows高危端口),若未使用则通过systemctl stop 服务关闭对应服务。
  • 监控异常端口:使用watch -n 1 "ss -tulnp"实时监控端口变化,发现陌生端口立即排查。
  • 限制端口访问IP:通过防火墙规则限制仅允许特定IP访问端口(如iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT)。

Linux端口查看是系统管理和网络运维的基础技能,netstat适合传统场景,ss性能更优,lsof则从文件视角提供补充,通过掌握这些工具,并结合防火墙配置和安全管理,可有效监控服务状态、排查端口冲突、防范安全风险,实际操作中,需根据需求选择合适命令,并注重输出结果的解读(如端口状态、进程信息、连接类型),从而实现对网络通信的精细化管控。

赞(0)
未经允许不得转载:好主机测评网 » Linux查看端口开放状态有哪些方法?常用命令详解