5154

Good Luck To You!

在CentOS中如何查看udp端口,并找出其对应的进程?

在管理和维护基于CentOS操作系统的服务器时,网络端口的监控与诊断是一项至关重要的日常工作,UDP(User Datagram Protocol,用户数据报协议)作为一种无连接的传输层协议,以其低开销和快速传输的特性,被广泛应用于DNS(域名系统)、NTP(网络时间协议)、DHCP(动态主机配置协议)、SNMP(简单网络管理协议)以及在线视频流和语音通话等场景,由于UDP不建立持久的连接,其状态的监控方式与TCP有所不同,掌握在CentOS系统中有效查看UDP端口状态的方法,对于系统管理员排查网络问题、确保服务安全以及优化系统性能具有不可或缺的作用,本文将详细介绍几种主流且高效的命令行工具,帮助您全面了解如何在CentOS中查看UDP端口。

在CentOS中如何查看udp端口,并找出其对应的进程?

使用 ss 命令:现代高效的选择

ss(socket statistics)是 iproute2 工具包的一部分,它被设计用来取代经典的 netstat 命令,相较于 netstatss 的执行速度更快,尤其是在处理大量网络连接时,其性能优势更为明显,它能够直接从内核获取信息,避免了 netstat 通过 /proc 文件系统读取数据所带来的性能开销,在所有现代Linux发行版(包括CentOS 7及更高版本)中,ss 都是首选的网络状态查看工具。

要查看当前系统所有正在监听的UDP端口,可以使用以下命令组合:

ss -ulnp

为了更好地理解这个命令,下表对其参数进行了详细分解:

参数 全称/含义 描述
-u UDP 显示UDP套接字。
-l Listening 仅显示处于监听状态的套接字,对于UDP,这表示有进程绑定了该端口并准备接收数据。
-n Numeric 不解析服务名称,直接显示端口号,这使得输出更快速、更清晰。
-p Processes 显示使用该套接字的进程信息(PID和进程名称)。

输出示例与解读:

执行 ss -ulnp 后,您可能会看到类似以下的输出:

State    Recv-Q   Send-Q      Local Address:Port      Peer Address:Port   Process
UNCONN   0        0           127.0.0.1:323           0.0.0.0:*       users:(("chronyd",pid=682,fd=3))
UNCONN   0        0           0.0.0.0:68              0.0.0.0:*       users:(("dhclient",pid=1234,fd=6))
UNCONN   0        0           [::1]:323               [::]:*          users:(("chronyd",pid=682,fd=4))
  • State: 对于UDP,状态通常是 UNCONN(未连接)。
  • Recv-Q / Send-Q: 分别表示接收队列和发送队列中的数据包数量,通常为0。
  • Local Address:Port: 本地监听的IP地址和端口号。0.0.0:68 表示监听在所有网络接口的68端口(DHCP客户端服务),而 0.0.1:323 表示仅监听在本地回环地址的323端口(Chrony时间同步服务)。
  • Peer Address:Port: 对于监听状态的套接字,此列显示为 或 0.0.0:*
  • Process: 这一列(由 -p 参数提供)清晰地指出了是哪个进程(chronyddhclient)以及其进程ID(PID)正在使用该端口。

使用 netstat 命令:经典传统的工具

netstat 是一个历史悠久且广为人知的网络工具,尽管 ss 是更现代的推荐选择,但许多系统管理员仍然习惯于使用 netstat,在较旧的CentOS系统(如CentOS 6)上,它是默认的工具,在CentOS 7/8上,它可能默认未安装,您可以通过 yumdnf 进行安装:

sudo yum install net-tools

查看UDP监听端口的 netstat 命令与 ss 非常相似:

在CentOS中如何查看udp端口,并找出其对应的进程?

netstat -ulnp

这里的参数 -u, -l, -n, -pss 命令中的含义完全相同。netstat 的输出格式也与 ss 类似,提供了进程名、PID、协议、本地地址和外部地址等信息,虽然功能上可以满足需求,但在连接数庞大的服务器上,netstat 的响应速度会明显慢于 ss

使用 lsof 命令:进程视角的深度洞察

lsof(List Open Files)是一个功能极其强大的工具,它的核心理念是“在Unix中,一切皆文件”,网络套接字也被视为一种文件,lsof 可以用来列出当前系统打开的网络连接,并直接关联到具体进程。

要查看所有UDP类型的网络“文件”,可以使用:

sudo lsof -iUDP

-i 参数用于筛选网络文件,后面跟 UDP 表示只显示UDP协议相关的条目,使用 sudo 是因为查看所有进程信息通常需要管理员权限。

输出示例与解读:

lsof 的输出信息非常丰富:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
chronyd   682   chrony  3u  IPv4  18212      0t0  UDP localhost:323
chronyd   682   chrony  4u  IPv6  18214      0t0  UDP localhost:323
dhclient  1234  root    6u  IPv4  25678      0t0  UDP *:bootps
  • COMMAND/PID/USER: 分别是进程名、进程ID和运行用户。
  • FD: 文件描述符。
  • TYPE: 文件类型,这里是 IPv4IPv6
  • NAME: 显示了协议(UDP)、地址和端口。*:bootps 表示监听在所有接口的bootps端口(即DHCP服务端口67)。

lsof 的一个巨大优势是,即使一个UDP服务刚刚启动,尚未收到任何数据包,lsof 也能准确地显示出该进程已经绑定了端口,而 ssnetstat 有时可能不会立即显示一个“空闲”的UDP监听端口。

在CentOS中如何查看udp端口,并找出其对应的进程?

方法对比与小编总结

为了帮助您根据不同场景选择最合适的工具,下表对上述三种方法进行了小编总结对比:

工具 主要用途 常用命令 优点 缺点
ss 快速查看套接字统计信息 ss -ulnp 速度快,信息详细,现代系统标配 输出格式对新手可能稍显复杂
netstat 传统网络状态查看 netstat -ulnp 兼容性好,广为人知 性能较差,在新系统上可能需手动安装
lsof 列出进程打开的文件(含网络) lsof -iUDP 能直接关联到进程,信息最全面,能发现“空闲”端口 执行速度相对较慢,输出信息量大

在实际操作中,建议将 ss 作为日常快速检查的首选工具,当需要深入排查是哪个具体进程占用了端口,或者 ss 的输出不符合预期时,可以借助 lsof 进行更深入的分析,而 netstat 则可以作为备用或在与习惯使用它的团队协作时使用。


相关问答FAQs

为什么我使用 ss -ulnpnetstat -ulnp 有时看不到某个UDP服务端口,但该服务确实在运行?

解答: 这是UDP协议无连接特性导致的一个常见现象,一个UDP服务进程启动后,它会向内核申请并绑定(bind)一个端口。ssnetstat 在显示监听状态时,通常依赖于内核中活跃的套接字哈希表,如果一个UDP端口绑定了之后,很长时间没有收到或发送任何数据包,它可能不会出现在 ss -lnetstat -l 的监听列表中,因为它实际上处于“空闲”状态,而 lsof -iUDP 命令是通过遍历所有进程的文件描述符来查找信息,因此它能准确地发现哪个进程持有了这个端口的绑定,无论该端口是否活跃,当您怀疑服务在运行但 ss 看不到时,使用 sudo lsof -i :<端口号> 是一个更可靠的确认方法。

我已经确认服务正在监听某个UDP端口,但从外部网络无法访问,应该如何排查?

解答: 服务在本地监听并不意味着外部网络可以访问,这通常意味着中间存在网络层面的拦截,排查步骤应遵循从内到外的原则:

  1. 检查本地防火墙:CentOS 7/8 默认使用 firewalld,首先检查防火墙是否允许该UDP端口的流量,使用命令 sudo firewall-cmd --list-ports 查看已开放的端口列表,如果您的端口(例如123/udp)不在其中,需要使用 sudo firewall-cmd --add-port=123/udp --permanent 添加,然后执行 sudo firewall-cmd --reload 使配置生效,对于更老的系统使用 iptables,则需用 sudo iptables -L -n -v | grep 123 检查规则。
  2. 检查安全组/网络ACL:如果您的CentOS服务器部署在云平台(如阿里云、腾讯云、AWS)上,云平台本身还有一层安全组策略,您必须登录云控制台,确保在对应的安全组入方向规则中,允许了目标UDP端口的流量。
  3. 检查中间网络设备:如果服务器位于本地数据中心,还需要检查服务器前方的物理防火墙、路由器等网络设备,确认它们没有阻止该UDP端口的通信。
  4. 使用 nmap 进行外部扫描:可以从另一台机器上使用 nmap -sU -p <端口号> <服务器IP> 来对目标服务器进行UDP端口扫描,如果扫描结果显示 openopen|filtered,说明防火墙可能放行;如果显示 closed,则说明收到了ICMP端口不可达的消息,通常意味着防火墙或服务本身未监听,需要注意的是,UDP扫描通常比较慢且结果不如TCP扫描准确。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年11月    »
12
3456789
10111213141516
17181920212223
24252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.