netstat -tuln
查看监听端口,ss -tuln
更高效替代netstat,lsof -i :端口号
查特定端口占用进程,sudo lsof -i
显示所有网络连接。在 Linux 中查询端口的专业方法详解
掌握端口查询是 Linux 系统管理和网络故障排查的核心技能,以下详细解析四种专业方法,附具体操作示例:
🔍 方法一:使用 ss
命令(推荐工具)
作为 netstat
的现代替代品,ss
直接从内核空间获取信息,效率更高:
# 查看所有监听端口(-l)和已建立连接(-t TCP/-u UDP) sudo ss -tuln # 示例输出解读 LISTEN 0 128 0.0.0.0:22 0.0.0.0:* → 22端口监听所有IP(0.0.0.0表示任意接口) # 查询特定端口(如3306) ss -tunlp | grep ':3306'
📡 方法二:使用 netstat
命令(传统工具)
虽然逐渐被取代,但仍是广泛兼容的选择:
# 查看所有TCP/UDP监听端口 sudo netstat -tuln # 显示进程名和PID(需sudo权限) sudo netstat -tulnp # 查询80端口占用情况 sudo netstat -tulnp | grep ':80'
🛠️ 方法三:使用 lsof
命令(进程级分析)
直接关联端口与进程,适合深度诊断:
# 查看所有网络监听 sudo lsof -i -P -n | grep LISTEN # 查询特定端口(如443) sudo lsof -i :443 # 输出示例 nginx 1234 root 9u IPv4 0xabcd 0t0 TCP *:443 (LISTEN) → Nginx进程(1234)监听443端口
🌐 方法四:使用 nmap
扫描(远程端口探测)
检查远程主机或本机开放端口:
# 安装nmap sudo apt install nmap # Debian/Ubuntu sudo yum install nmap # CentOS/RHEL # 扫描本机端口 nmap -sT -p 1-1000 127.0.0.1 # 扫描远程主机Web端口 nmap -p 80,443 target_ip
🚦 端口状态解读
- LISTEN:服务正在监听连接
- ESTABLISHED:活跃数据连接
- TIME_WAIT:连接正常关闭中
- CLOSE_WAIT:远程端已关闭,本地未释放
⚠️ 关键注意事项
- 查询监听端口需
LISTEN
状态,已建立连接显示为ESTABLISHED
- 普通用户可能无法查看系统级端口,建议配合
sudo
- 使用
-p
参数时,ss/netstat
会解析服务名(如22→ssh),加-n
可禁用解析提升速度 - 临时端口范围(32768-60999)通常由客户端使用,无需特别关注
安全提示:避免在公共服务器执行高危扫描操作,生产环境中建议通过
iptables
或firewalld
管理端口访问权限,仅开放必要服务端口。
引用说明基于 Linux 内核文档(kernel.org)及以下权威资源:
ss
官方手册页(man7.org/linux/man-pages/man8/ss.8.html)- Red Hat 系统管理员指南(access.redhat.com/documentation)
- Nmap 官方网络扫描指南(nmap.org/book/man-port-scanning.html)
- Linux 网络栈深度解析(《Linux Kernel Networking》著作)
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/14541.html