Linux查看端口命令大全:从基础到高级
近期有些网友想要了解的相关情况,小编通过整理给您分享一下。
在Linux系统管理和网络维护中,查看端口信息是一项基本但至关重要的技能。无论是排查网络问题、监控服务状态,还是进行安全审计,掌握各种端口查看命令都能让你事半功倍。本文将全面介绍Linux系统中查看端口的各种方法,从基础命令到高级技巧,帮助你成为端口管理的行家。
基础端口查看命令
netstat命令

netstat是最经典的网络状态查看工具之一,虽然在新版Linux中逐渐被替代,但仍然是许多管理员的首选。
查看所有监听端口:
netstat -tuln
这个命令会显示所有TCP和UDP的监听端口,-t
表示TCP,-u
表示UDP,-l
表示监听状态,-n
表示以数字形式显示地址和端口。
查看所有连接(包括已建立的):
netstat -tun
ss命令
ss是netstat的现代替代品,速度更快,功能更强大。基本用法与netstat类似:
查看所有监听端口:
ss -tuln
查看所有TCP连接:
ss -t
查看所有UDP连接:
ss -u
ss的一个优势是能够显示更详细的连接信息,比如进程ID:
ss -tulnp
lsof命令
lsof(list open files)可以列出系统打开的文件,包括网络端口:
查看所有网络连接:
lsof -i
查看特定端口的进程:
lsof -i :80
查看某个进程使用的端口:
lsof -i -p 进程ID
中级端口管理技巧
端口与服务对应关系
了解端口号对应的服务名称很有帮助:
cat /etc/services
或者使用grep过滤:
grep 'http' /etc/services
防火墙相关命令
在查看端口的同时,了解防火墙设置也很重要:
查看iptables规则:
iptables -L -n
firewalld查看开放端口:
firewall-cmd --list-ports
ufw防火墙查看规则:
ufw status
网络连接统计
统计各种状态的连接数:
ss -s
或者按状态分类:
netstat -an | awk '/^tcp/ {print $6}' | sort | uniq -c
高级端口监控与分析
实时端口监控
使用watch命令实时监控端口变化:
watch -n 1 "ss -tuln"
或者使用更专业的工具:
iftop
nethogs
端口扫描工具
检查本地或远程端口是否开放:
使用telnet:
telnet 127.0.0.1 80
使用nc(netcat):
nc -zv 127.0.0.1 22
专业扫描工具nmap:
nmap -sT -O localhost
进程与端口关联分析
找出占用特定端口的进程:
fuser 80/tcp
或者:
lsof -i :80
查看进程的完整网络信息:
ls -l /proc/进程ID/fd/ | grep socket
安全相关端口检查
检查异常连接
查找异常外连:
ss -tupn | grep ESTAB
检查隐藏连接:
ss -tupn | grep -v "127.0.0.1"
检查后门端口
查找常见后门端口:
ss -tuln | egrep "31337|6667|12345|54321"
检查端口转发
查看系统是否设置了端口转发:
sysctl net.ipv4.conf.all.forwarding
iptables -t nat -L
自动化端口监控脚本
简单的端口监控脚本
#!/bin/bashwhile true; do clear date echo "===== Listening Ports =====" ss -tuln echo "===== Established Connections =====" ss -tupn | grep ESTAB sleep 5done
端口变化告警脚本
#!/bin/bashBASEFILE="/tmp/ports.baseline"CURRENT=$(ss -tuln | sort)if [ ! -f "$BASEFILE" ]; then echo "$CURRENT" > "$BASEFILE" echo "Created baseline"else DIFF=$(diff -u "$BASEFILE" <(echo "$CURRENT")) if [ "$DIFF" != "" ]; then echo "Port changes detected:" echo "$DIFF" echo "$CURRENT" > "$BASEFILE" # 这里可以添加邮件或短信告警 fifi
容器环境中的端口查看
Docker容器端口
查看容器映射的端口:
docker ps --format "table {{.Names}}\t{{.Ports}}"
或者获取详细信息:
docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' 容器名
Kubernetes中的端口
查看Service端口:
kubectl get svc
查看Pod端口:
kubectl get pod pod名 -o jsonpath='{.spec.containers[*].ports[*]}'
性能优化相关
查看端口队列
查看接收队列:
ss -nti | grep -i rcvq
查看发送队列:
ss -nti | grep -i sndq
查看端口缓冲
查看TCP缓冲设置:
cat /proc/sys/net/ipv4/tcp_rmemcat /proc/sys/net/ipv4/tcp_wmem
常见问题排查
端口被占用
找到占用端口的进程并终止:
sudo lsof -i :端口号sudo kill -9 进程ID
端口无法访问
检查本地监听:
ss -tuln | grep 端口号
检查防火墙:
sudo iptables -L -n
检查SELinux:
getsebool -a | grep httpd
总结
掌握Linux端口查看命令是每个系统管理员和开发者的必备技能。从基础的netstat、ss命令,到高级的端口监控、安全分析和性能调优,本文涵盖了各种实用场景下的端口管理方法。建议读者根据实际需求,将这些命令组合使用,并创建自己的脚本工具库,以提高工作效率。
记住,在复杂的网络环境中,端口管理不仅仅是技术问题,更关系到系统安全和性能优化。定期检查端口状态,及时发现异常连接,是维护系统健康的重要一环。