云主机上用 ss 看监听和连接

举报
yd_51737554 发表于 2026/10/28 10:25:29 2026/10/28
【摘要】 登录一台云主机排查“端口没通”时,很多人还在找 netstat。不少新发行版默认不再安装 net-tools,netstat 要么不存在,要么只是 iproute2 的一个兼容包装。直接用 ss 更合适:它读内核的套接字信息,输出更快,过滤条件也更明确。下面是我在排查云主机端口时固定的三步,只读查看,不改防火墙、不改安全组。一、先确认进程到底有没有在听端口不通,先分清是进程没监听,还是监听了...

登录一台云主机排查“端口没通”时,很多人还在找 netstat。不少新发行版默认不再安装 net-tools,netstat 要么不存在,要么只是 iproute2 的一个兼容包装。直接用 ss 更合适:它读内核的套接字信息,输出更快,过滤条件也更明确。下面是我在排查云主机端口时固定的三步,只读查看,不改防火墙、不改安全组。

一、先确认进程到底有没有在听

端口不通,先分清是进程没监听,还是监听了但被安全组或本机防火墙挡住。只看 TCP 监听:

ss -lnt

-l 是 listening,-n 是不把端口解析成服务名,-t 是 TCP。输出里的 Local Address 如果是 127.0.0.1:8080,说明进程只接受本机连接,云主机的公网或内网 IP 都连不上,这和安全组无关。如果是 0.0.0.0:8080 或 *:8080,才表示在所有网卡上监听。IPv6 同理,再加 -6,或直接用 ss -lntu 把 UDP 一并看掉。需要对应进程时加上 -p,没有权限就只能看到用户自己的进程,看系统服务需要相应权限,不要为了看一行输出去改账号。

二、按端口和状态把连接收窄

监听正常但业务仍超时,再看已建立的连接,而不是把全部套接字打出来:

ss -tnp state established '( sport = :8080 or dport = :8080 )'

state established 只留已建立连接。括号里的过滤表达式是 ss 自己的语法,sport 是本地端口,dport 是对端端口。连接数异常多时,先数一下:

ss -tn state established '( sport = :8080 )' | wc -l

如果 LISTEN 存在、established 却一条都没有,请求多半在到达主机之前就被安全组、网络 ACL 或上游负载均衡丢掉了。这时去翻应用日志通常看不到报错,因为请求根本没进进程。反过来,如果存在大量 SYN-RECV 或 TIME-WAIT,再用 ss -tan 按状态查看,判断是连接建不起来,还是旧连接回收不及。不要一上来就 tcpdump,抓包的噪音更大,也更容易误抓到不该看的流量。

三、和本机防火墙对一下,再决定要不要动安全组

ss 只能说明套接字在不在,不能说明安全组是否放行。在改云上安全组之前,先看本机有没有再拦一层。firewalld 环境可以用:

firewall-cmd --list-ports

nftables 环境用 nft list ruleset,只看不改。如果本机已经放行,而从另一台同子网主机仍连不上,再去控制台核对安全组入方向和路由,避免在主机上反复重启服务。排查顺序可以记成一句:ss 看监听地址,ss 看连接状态,最后才看安全组和防火墙。这样大部分“端口没通”在两分钟内就能分出是进程、本机防火墙还是云网络的问题。

补充两个容易看错的地方。ss 默认把 IPv4 和 IPv6 分开列出,同一个端口可能出现两行。如果应用只绑定了 IPv4,客户端却走 IPv6,连接会失败,看起来像“端口开了但连不上”。对照 Local Address 里是 0.0.0.0 还是 [::],就能分清是哪一层地址族。容器场景里,宿主机上看到的监听进程常常是 docker-proxy 或转发进程,并不等于容器内的业务进程。这时 -p 只能当线索,还要回到端口映射确认容器里的进程是否真的在听。把地址族和进程名一起看完,再决定要不要改安全组,能少走一次弯路。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。