在 Linux 系统中,可以通过以下几种方法查看当前开启的端口:
netstat
命令netstat -tuln
参数说明:
- -t
:显示 TCP 端口
- -u
:显示 UDP 端口
- -l
:仅显示监听状态的端口
- -n
:以数字形式显示地址和端口(不解析域名和服务名)
输出示例:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::80 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*
注:部分系统可能需安装
net-tools
包(如 Ubuntu/Debian:sudo apt install net-tools
)。
ss
命令(推荐,更高效)ss -tuln
参数说明:
与 netstat
类似,但性能更好(现代 Linux 默认工具)。
lsof
命令sudo lsof -i -P -n | grep LISTEN
参数说明:
- -i
:显示网络连接
- -P
:禁用端口号转换服务名(直接显示数字端口)
- -n
:禁用 IP 地址转换域名
输出示例:
sshd 1234 root 3u IPv4 12345 0t0 TCP *:22 (LISTEN)
nginx 5678 www-data 6u IPv6 54321 0t0 TCP *:80 (LISTEN)
/proc/net/tcp
和 `/proc/net/udpcat /proc/net/tcp
cat /proc/net/udp
注:输出为十六进制端口号(如
1F90
= 8080),需手动转换。
nmap
扫描本地端口sudo nmap -sT -p- 127.0.0.1
参数说明:
- -sT
:TCP 连接扫描
- -p-
:扫描所有端口(1-65535)
lsof
、nmap
)需加 sudo
才能查看所有端口。iptables
/ufw
)可能阻止外部访问。检查防火墙规则:
bash
sudo iptables -L # 查看 iptables 规则
sudo ufw status # 查看 UFW 防火墙状态
0.0.0.0
(IPv4)和 ::
(IPv6)表示监听所有接口。ss -tuln
(无需安装,性能最佳)。lsof
查看具体进程信息。nmap
验证端口外部可见性。如有其他需求(如过滤特定端口),可进一步组合 grep
使用。