端口相关命令
在 Linux 和网络排查中,熟练使用端口相关命令是“基操”。我们可以根据查看监听、测试连通性、流量抓取这三个维度来划分。
1. 查看本地监听与连接 (状态查询)
这是最常用的场景:检查某个服务是否启动,或者哪个进程占用了端口。
-
**netstat**(经典但逐渐被替代) -
netstat -tulnp:查看所有 TCP (t)、UDP (u) 的监听 (l) 端口,并显示进程 PID (p) 和数字地址 (n)。 -
**ss**(Socket Statistics - 更快、现代) -
ss -tulnp:功能与 netstat 类似,但在处理大量连接时速度飞快。 -
**lsof**(List Open Files) -
lsof -i :80:直接查询 80 端口被哪个进程占用。 -
非常有用的技巧:如果你想杀掉占用某端口的进程,可以用
kill -9 $(lsof -t -i:80)。
2. 测试远程端口连通性 (拨测)
当你怀疑防火墙拦截或服务没开时,用这些命令从客户端探测。
-
**telnet**(最老牌) -
telnet 192.168.1.1 80:如果黑屏表示连通,提示Connection refused表示端口未开。 -
**nc**(Netcat - 瑞士军刀) -
nc -zv 192.168.1.1 80:扫描模式,直接告诉你结果。 -
**nmap**(扫描专家) -
nmap -p 1-1024 192.168.1.1:扫描目标主机 1 到 1024 之间的所有端口。 -
**curl**(针对 Web 端口) -
curl -I 192.168.1.1:80:不仅测试连通,还能看到 HTTP 响应头。
3. 流量分析与抓包 (深度侦察)
如果你想看端口里具体在传输什么数据,就需要动用“重型武器”了。
-
**tcpdump**(命令行抓包王者) -
tcpdump -i eth0 port 80:实时监控网卡eth0上 80 端口的所有流量。 -
tcpdump -i any port 443 -A:以 ASCII 文本形式查看 443 端口的数据包内容(加密流通常是乱码)。
4. 防火墙端口管理 (开关门)
在 Linux (CentOS/Ubuntu) 中,开放或关闭端口通常使用以下命令:
| 系统/工具 | 常用命令示例 |
|---|---|
| firewalld (CentOS) | firewall-cmd --add-port=80/tcp --permanent |
| ufw (Ubuntu) | ufw allow 80/tcp |
| iptables (底层) | iptables -A INPUT -p tcp --dport 80 -j ACCEPT |
总结对照表
| 需求 | 首选命令 | 备选/更强工具 |
|---|---|---|
| 谁占用了端口? | lsof -i :port |
ss -p |
| 远程端口开了吗? | nc -zv IP port |
telnet<br>/ nmap |
| 服务启动了吗? | ss -tunl |
netstat -tunl |
| 端口里传了什么? | tcpdump |
tshark<br>(Wireshark 命令行版) |
