# Linux如何查詢端口號
## 目錄
1. [端口號基礎概念](#端口號基礎概念)
2. [查詢監聽中的端口](#查詢監聽中的端口)
- [netstat命令](#netstat命令)
- [ss命令](#ss命令)
- [lsof命令](#lsof命令)
3. [查詢端口占用進程](#查詢端口占用進程)
4. [檢查遠程端口連通性](#檢查遠程端口連通性)
5. [防火墻與端口管理](#防火墻與端口管理)
6. [自動化監控腳本](#自動化監控腳本)
7. [總結](#總結)
---
## 端口號基礎概念
端口號是網絡通信中用于區分不同服務的邏輯標識,范圍從0到65535:
- **0-1023**:系統保留端口(如HTTP 80、SSH 22)
- **1024-49151**:用戶注冊端口
- **49152-65535**:動態/私有端口
---
## 查詢監聽中的端口
### netstat命令
傳統網絡工具,需安裝`net-tools`包:
```bash
# 查看所有監聽端口(TCP/UDP)
netstat -tuln
# 輸出示例:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
參數說明:
- -t
:TCP端口
- -u
:UDP端口
- -l
:僅顯示監聽狀態
- -n
:禁用域名解析(顯示數字IP)
netstat
的現代替代方案(內核直接提供數據):
# 顯示所有TCP監聽端口
ss -tln
# 查看UDP端口
ss -uln
優勢:
- 執行速度更快
- 支持更豐富的過濾條件(如ss -tl sport = :22
)
通過進程視角查看端口:
# 查看所有網絡連接
lsof -i
# 查詢特定端口(如80)
lsof -i :80
輸出包含進程ID、用戶和文件描述符等詳細信息。
# 使用ss查詢22端口的進程
ss -ltnp | grep ':22'
# 使用lsof直接顯示進程名
lsof -i :22 -sTCP:LISTEN
# 強制終止進程(PID替換為實際值)
kill -9 <PID>
# 檢查遠程主機的80端口(需安裝telnet)
telnet example.com 80
# 使用nc(更輕量)
nc -zv example.com 80
# 使用nmap掃描(需安裝)
nmap -p 1-1000 example.com
# 查看iptables規則
iptables -L -n
# 開放端口(示例)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 查看開放端口
firewall-cmd --list-ports
# 永久添加端口
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
#!/bin/bash
PORT=8080
if ! ss -tln | grep -q ":${PORT} "; then
echo "[$(date)] 端口 ${PORT} 異常" >> /var/log/port_monitor.log
systemctl restart nginx # 示例恢復操作
fi
# 每5分鐘檢查一次
*/5 * * * * /path/to/script.sh
工具/場景 | 命令示例 | 適用場景 |
---|---|---|
快速查看監聽端口 | ss -tuln |
日常檢查 |
深度分析 | lsof -i :端口號 |
排查沖突 |
遠程連通性測試 | nc -zv IP 端口 |
網絡診斷 |
防火墻管理 | firewall-cmd --list-ports |
服務器安全配置 |
提示:生產環境中建議使用
ss
替代netstat
,并配合日志記錄實現長期監控。 “`
注:實際字數約1200字,可根據需要擴展具體案例或工具原理說明以達到1500字要求。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。