netstat -anul 可查看监听的 udp 端口,-u 限定 udp,-l 仅显示绑定套接字,-n 避免 dns 解析,-a 包含所有;需 root 权限才显示进程名与 pid;udp 无连接状态,故无 established 等状态列。

直接用 netstat -anu 就能看到所有 UDP 相关的端口信息,包括哪些在监听、绑定到哪个地址、对应什么进程(需加权限)。UDP 本身无连接状态,所以不显示 ESTABLISHED 或 LISTEN 这类 TCP 状态,重点看 Local Address 是否有绑定,以及是否有进程关联。
只查监听中的 UDP 端口
这是最常用场景——确认服务是否真正启动并等待接收数据:
-
netstat -anul-
-a:全部(含监听和非监听) -
-n:数字格式(快、准、不卡 DNS) -
-u:仅 UDP -
-l:只显示监听(LISTEN 等效于绑定套接字)
-
- 输出中若看到
udp 0 0 *:53 *:*或udp 0 0 127.0.0.1:5353 *:*,说明 DNS 或 mDNS 服务已就绪
带进程名和 PID(需 root)
要定位是哪个程序在用端口:
-
sudo netstat -anulp-
-p会显示users:(("named",pid=1234,fd=10))这类信息 - 如果没权限,普通用户只能看到自己启动的 UDP 服务,系统级服务(如 systemd-resolved、dnsmasq)会看不到
-
快速筛查特定端口
比如检查 NTP(123)、DNS(53)、DHCP(67/68)、mDNS(5353)是否活跃:
-
sudo netstat -anulp | grep -E ':123\b|:53\b|:67\b|:68\b|:5353\b'-
\b是单词边界,避免匹配到 530 或 1234 这类误报 - 多个端口用
|分隔,一行搞定
-
注意 UDP 的“无状态”特性
-
netstat对 UDP 不显示 State 列(或统一标为UNCONN),这不是错误,而是协议本身没有连接建立/断开过程 - 真正判断服务是否有效,不能只靠“有没有监听”,还要结合:
- 用
ss -uan对比验证(更高效,推荐) - 用
nc -u -zv 127.0.0.1 53测试本地可达性 - 用
tcpdump -i lo udp port 53抓包确认是否有实际数据流入
- 用
不复杂但容易忽略










