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命令,到高级的端口监控、安全分析和性能调优,本文涵盖了各种实用场景下的端口管理方法。建议读者根据实际需求,将这些命令组合使用,并创建自己的脚本工具库,以提高工作效率。

记住,在复杂的网络环境中,端口管理不仅仅是技术问题,更关系到系统安全和性能优化。定期检查端口状态,及时发现异常连接,是维护系统健康的重要一环。

发布于 2025-04-20 00:25:54
分享
海报
111
上一篇:如何在 Linux中进入并操作链接文件 下一篇:Linux系统执行脚本的多种方式详解
目录

    忘记密码?

    图形验证码