Linux系统使用ss命令查看端口状态

目录

1.可用工具
2.ss帮助
2.1 选项分类说明
2.2 过滤选项family
2.3 过滤选项state
2.4 状态之间的关系
3.ss的使用
3.1 使用示例
3.2 过滤
3.2.1 状态过滤
3.2.2 通过family过滤
3.2.3 使用地址和端口过滤
3.3 常用组合

1.可用工具

  • 逐渐淘汰的 netstat 命令在 net-tools 软件包里(多年没有维护;效率很低)
  • 逐渐成为主流的 ss 命令在 iproute2 软件包里(对常用网络命令做了改进和优化)

ArchLinux已弃用"net-tools",转而使用"iproute2"
弃用命令 > 替换命令
arp > ip n
ifconfig > ip a, ip link, ip -s
netstat > ss, ip route, ip -s link
route > ip route
详见:https://www.cnblogs.com/sztom/articles/10764994.html
不推荐使用的Linux网络命令及其替代品

2.ss帮助

$ ss -h
-h, --help this message 帮助信息
-V,
--version output version information 输出版本信息
-n,
--numeric don‘t resolve service names 不解析服务名称
-r,
--resolve resolve host names 解析主机名
-a, --all display
all sockets 显示所有套接字
-l,
--listening display listening sockets 显示侦听套接字
-o, --options show
timer information 显示计时器信息
-e,
--extended show detailed socket information 显示详细的套接字信息
-m, --memory show
socket memory usage 显示套接字内存使用量
-p,
--processes show process using socket 显示使用socket的进程信息
-i, --info show
internal TCP information 显示内部TCP信息
--tipcinfo show
internal tipc socket information 显示内部tipc套接字信息
-s, --summary show
socket usage summary show socket使用摘要
--tos show tos and
priority information 显示tos和优先级信息
-b, --bpf show bpf
filter socket information 显示bpf过滤器套接字信息
-E,
--events continually display sockets as they are
destroyed 在它们被摧毁时不断显示套接字
-Z,
--context display process SELinux security contexts 显示进程SELinux安全上下文
-z,
--contexts display process and socket SELinux security
contexts 显示进程和套接字SELinux安全上下文
-N, --net switch
to the specified network namespace name 切换到指定的网络命名空间名称
 
-4, --ipv4 display
only IP version 4 sockets 只显示ipv4的套接字;
-6, --ipv6 display
only IP version 6 sockets 只显示ipv6的套接字;
-0,
--packet display PACKET sockets 显示PACKET套接字
-t, --tcp display
only TCP sockets 仅显示TCP套接字
-S, --sctp display
only SCTP sockets 仅显示SCTP套接字
-u, --udp display
only UDP sockets 仅显示UDP套接字
-d, --dccp display
only DCCP sockets 仅显示DCCP套接字
-w, --raw display
only RAW sockets 仅显示RAW套接字
-x, --unix display
only Unix domain sockets 仅显示Unix域套接字
--tipc display
only TIPC sockets 仅显示TIPC套接字
--vsock display
only vsock sockets 仅显示vsock套接字
-f,
--family=FAMILY display sockets of type FAMILY 显示FAMILY类型的套接字
FAMILY :=
{inet|inet6|link|unix|netlink|vsock|tipc|help}
 
-K,
--kill forcibly close sockets, display what was
closed 强行关闭套接字,显示已关闭的内容
-H,
--no-header Suppress header line 抑制标题行
 
-A, --query=QUERY,
--socket=QUERY QUERY :=
{all|inet|tcp|udp|raw|unix|unix_dgram|unix_stream|unix_seqpacket|packet|netlink|vsock_tipc}[,QUERY]
 
-D,
--diag=FILE Dump raw information about TCP sockets to
FILE 将有关TCP套接字的原始信息转储到FILE
-F,
--filter=FILE read filter information from FILE 从FILE中读取过滤器信息
FILTER := [ state
STATE-FILTER ] [ EXPRESSION ]
STATE-FILTER
:= {all|connected|synchronized|bucket|big|TCP-STATES}
TCP-STATES
:= {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listening|closing}
connected
:= {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
synchronized
:= {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
bucket
:= {syn-recv|time-wait}
big
:= {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listening|closing}

2.1
选项分类说明

这2个选项(-n,
-r)不能同时使用
-n,
--numeric don‘t resolve service names 不解析服务名称
-r,
--resolve resolve host names 解析主机名

统计摘要
-s, --summary show
socket usage summary show socket使用摘要

显示全部
-a, --all display
all sockets 显示所有套接字

仅显示部分
-l,
--listening display listening sockets 显示侦听套接字
-4, --ipv4 display
only IP version 4 sockets 只显示ipv4的套接字;
-6, --ipv6 display
only IP version 6 sockets 只显示ipv6的套接字;
-0,
--packet display PACKET sockets 显示PACKET套接字
-t, --tcp display
only TCP sockets 仅显示TCP套接字
-S, --sctp display
only SCTP sockets 仅显示SCTP套接字
-u, --udp display
only UDP sockets 仅显示UDP套接字
-d, --dccp display
only DCCP sockets 仅显示DCCP套接字
-w, --raw display
only RAW sockets 仅显示RAW套接字
-x, --unix display
only Unix domain sockets 仅显示Unix域套接字

其他更多信息
-p,
--processes show process using socket 显示使用socket的进程信息
-o, --options show
timer information 显示计时器信息
-e,
--extended show detailed socket information 显示详细的套接字信息
-m, --memory show
socket memory usage 显示套接字内存使用量
-i, --info show
internal TCP information 显示内部TCP信息

2.2
过滤选项
family

-f,
--family=FAMILY display sockets of type FAMILY 显示FAMILY类型的套接字
FAMILY :=
{inet|inet6|link|unix|netlink|vsock|tipc|help}

2.3
过滤选项 state

state
: {all|connected|synchronized|bucket|big|TCP-STATES}
TCP-STATES
:= {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listening|closing}
connected
:= {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
synchronized
:= {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
bucket
:= {syn-recv|time-wait}
big
:= {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listening|closing}

2.4
状态之间的关系

详细内容请看原文:https://blog.51cto.com/net881004/2164020
图1:客户端和服务器建立连接的挥手过程原理图

图2:TCP状态转移图

图3:关闭部分的状态转移图

3.
ss的使用

如果不添加选项
ss 命令默认输出所有建立的连接(不包含监听的端口),包括
tcp, udp, and unix socket 三种类型的连接:
$ ss
Netid State
Recv-Q Send-Q Local Address:Port Peer Address:Port

tcp ESTAB 0
0 192.168.31.177:38885 60.227.167.98:24932

tcp ESTAB 0
0 192.168.31.177:35846 89.42.31.211:polestar

tcp CLOSE-WAIT
32 0 127.0.0.1:59638 127.0.0.1:socks

tcp CLOSE-WAIT 1
0 127.0.0.1:59612 127.0.0.1:socks

tcp FIN-WAIT-2 0
0 127.0.0.1:socks 127.0.0.1:59606

tcp ESTAB 0
0 192.168.31.177:34970 89.42.31.211:polestar

3.1
使用示例

显示每个协议的摘要统计信息。
$ ss -s
Total: 916
TCP: 75 (estab 15,
closed 26, orphaned 4, timewait 18)
Transport Total
IP IPv6
RAW 1 1
0

UDP 14 13
1

TCP 49 48
1

INET 64 62
2

FRAG 0 0
0

查看所有套接字:
ss -a
$ ss |wc -l
901
$ ss -a |wc -l
//898
State 1

CLOSE-WAIT 2


ESTAB 749


FIN-WAIT-2 2


LAST-ACK 1


LISTEN 32


TIME-WAIT 2


UNCONN 110


合计
结果 898

显示侦听套接字,列出所有打开的网络连接端口,
ss -l或
--listening
$ ss -l |wc -l
//147

显示数字地址,而不是尝试确定符号主机,端口或用户名(跳过DNS转换)ss
-n或--numeric
$ ss -n

显示符号主机,端口或用户名,而不是数字表示。Netstat默认执行此操作。ss
-r或--resolve
$ ss -r

显示进程ID(PID)和每个套接字所属程序的名称。
$ ss -p

包括与网络计时器相关的信息。ss
-o或--options
$ ss -o

显示更高级别的细节。ss
-e或--extended
$ ss -e
Netid State
Recv-Q Send-Q Local Address:Port Peer Address:Port

tcp ESTAB 0
0 192.168.31.177:34970 89.42.31.211:polestar uid:1001
ino:3316553 sk:750 <->

tcp ESTAB 0
0 127.0.0.1:59570 127.0.0.1:socks
timer:(keepalive,38sec,0) uid:1001 ino:3335889 sk:76a <->

3.2
过滤

3.2.1
状态过滤

$ ss state syn-recv
有如下选项可用,后面的数字是本机当前按状态查询的行数
|wc -l

syn-sent 同步发 1
syn-recv 同步收 1
established 建立 750
fin-wait-{1,2} 等待
完成 2
time-wait 等待时间 2
closed 关闭 111
Close-wait 等待关闭 2
Last-ack 最后-ACK 1
listening 听 32
closing 关闭 1

all : 所有以上10种状态
connected : 除了
listening and closed 的剩所有状态(8种状态)
synchronized :所有
connected 除了
syn-sent (7种状态)
bucket :
显示状态为maintained
as minisockets,如:time-wait和syn-recv.(2种状态)
big :
和bucket相反.(8种状态)

$ ss state all |wc
-l
1036
$ ss state connected
|wc -l
889
$ ss state
synchronized |wc -l
904
$ ss state bucket
|wc -l
18
$ ss state big |wc
-l
1023
$ ss state listening
|wc -l
34

3.2.2
通过family过滤

{inet|inet6|link|unix|netlink|vsock|tipc|help}
$ ss -f inet
$ ss -f inet |wc -l
33
$ ss -f link |wc -l
6
$ ss -f unix |wc -l
851
$ ss -f netlink |wc
-l
62
$ ss -f vsock |wc -l

3.2.3
使用地址和端口过滤

可以通过
dst/src/dport/sprot 语法来过滤连接的来源和目标,来源端口和目标端口。

匹配本地地址和端口号
$ ss src
192.168.31.177
Netid State
Recv-Q Send-Q Local Address:Port Peer Address:Port

tcp ESTAB 0
0 192.168.31.177:60412 89.42.31.211:polestar

tcp ESTAB 0
0 192.168.31.177:51972 58.250.136.56:http-alt

tcp LAST-ACK 0
1 192.168.31.177:57926 220.194.95.148:https

匹配远程地址和端口号
$ ss dst
89.42.31.211
Netid State Recv-Q
Send-Q Local Address:Port Peer Address:Port

tcp ESTAB 0
0 192.168.31.177:60476 89.42.31.211:polestar

tcp ESTAB 0
0 192.168.31.177:60452 89.42.31.211:polestar

$ ss dst
192.168.31.113:http
$ ss dst
192.168.31.113:80

端口过滤
$ ss dport OP PORT
$ ss sport OP PORT
操作符OP
可以代表以下任意一个:
   <= le 小于或等于某个端口号
   >= ge 大于或等于某个端口号
   == eq 等于某个端口号
   != ne 不等于某个端口号 
   > gt 大于某个端口号
   < lt 小于某个端口号
$ ss -tunl sport lt
50
$ ss -tunl sport \<
50

3.3
常用组合

查看主机监听的端口,本地IP地址及tcp数字端口号(t:tcp;
n:数字显示;l监听)
$ ss -tnl

显示名称,比如上面的127.0.0.1:53显示为tigger:domain;
端口22显示为ssh等。
$ ss -tlr

$ ss -tnl
State Recv-Q
Send-Q Local Address:Port Peer Address:Port

LISTEN 0
128 127.0.0.1:1080 0.0.0.0:*

LISTEN 0
5 0.0.0.0:8999 0.0.0.0:*

LISTEN 0
5 [::]:8999 [::]:*

$ ss -trl
State Recv-Q
Send-Q Local Address:Port Peer Address:Port

LISTEN 0
128 localhost:socks 0.0.0.0:*

LISTEN 0
5 0.0.0.0:bctp 0.0.0.0:*

LISTEN 0
5 [::]:bctp [::]:*

加上p,显示pid
$ ss -tlrp
State Recv-Q
Send-Q Local Address:Port Peer Address:Port

LISTEN 0
128 localhost:socks 0.0.0.0:*
users:(("sslocal",pid=1123,fd=3))

LISTEN 0
5 0.0.0.0:bctp 0.0.0.0:*
users:(("qbittorrent",pid=618,fd=29))

LISTEN 0
5 [::]:bctp [::]:*
users:(("qbittorrent",pid=618,fd=28))

所有的tcp连接
ss -tan
State Recv-Q
Send-Q Local Address:Port Peer Address:Port

LISTEN 0
128 127.0.0.1:1080 0.0.0.0:*

LISTEN 0
5 0.0.0.0:8999 0.0.0.0:*

TIME-WAIT 0
0 127.0.0.1:1080 127.0.0.1:32874

TIME-WAIT 0
0 127.0.0.1:1080 127.0.0.1:32890

ESTAB 0
0 127.0.0.1:1080 127.0.0.1:32910

ESTAB 0
0 192.168.31.177:37342 89.42.31.211:1060

ESTAB 0
0 127.0.0.1:32898 127.0.0.1:1080

CLOSE-WAIT 0
0 192.168.31.177:57108 58.250.136.56:8080

ESTAB 0
0 127.0.0.1:1080 127.0.0.1:32894

ESTAB 0
0 192.168.31.177:37330 89.42.31.211:1060

ESTAB 0
0 127.0.0.1:1080 127.0.0.1:32902

ESTAB 0
0 127.0.0.1:32894 127.0.0.1:1080

ESTAB 0
0 192.168.31.177:37334 89.42.31.211:1060

ESTAB 0
0 127.0.0.1:32906 127.0.0.1:1080

ESTAB 0
0 127.0.0.1:32910 127.0.0.1:1080

ESTAB 0
0 127.0.0.1:1080 127.0.0.1:32898

ESTAB 0
0 192.168.31.177:49443 60.227.167.98:24932

ESTAB 0
0 192.168.31.177:37346 89.42.31.211:1060

ESTAB 0
0 127.0.0.1:1080 127.0.0.1:32906

ESTAB 0
0 192.168.31.177:37338 89.42.31.211:1060

ESTAB 0
0 127.0.0.1:32902 127.0.0.1:1080

LISTEN 0
5 [::]:8999 [::]:*

查看所有tcp,udp,数字显示,显示pid
$ ss -tuanp

查看所有tcp,udp,名称显示,显示pid
$ ss -tuarp

其他命令:
‘nc‘ means ‘netcat‘,
not ‘netconsole‘.
Install gnu-netcat
and try again.
https://wiki.archlinux.org/index.php/Netconsole
https://wiki.archlinux.org/index.php/Network_tools#Netcat
https://en.wikipedia.org/wiki/Netcat
https://www.archlinux.org/packages/?name=socat

原文地址:https://www.cnblogs.com/sztom/p/10810508.html

时间: 2024-08-05 18:06:38

Linux系统使用ss命令查看端口状态的相关文章

Linux系统采用netstat命令查看DDOS攻击的方法

Linux系统采用netstat命令查看DDOS攻击的方法 来源:互联网 作者:佚名 时间:07-05 15:10:21 [大 中 小] 这篇文章主要为大家介绍了Linux系统采用netstat命令查看DDOS攻击的方法,对于网络安全而言非常重要!需要的朋友可以参考下 Linux系统用netstat命令查看DDOS攻击具体命令用法如下: 复制代码 代码如下: netstat -na 显示所有连接到服务器的活跃的网络连接 复制代码 代码如下: netstat -an | grep :80 | so

Linux使用ss命令查看socket状态

ss命令用来显示处于活动状态的套接字信息.ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效. 当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢.可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间. 所有的TCP

linux操作系统中的netstat命令查看端口状态的使用

1:netstat 命令用于显示各种网络相关信息,即网络状态.而我主要使用netstat查看端口号是否启动: 参数详情: 1 -a (all)显示所有选项,默认不显示LISTEN相关 2 -t (tcp)仅显示tcp相关选项 3 -u (udp)仅显示udp相关选项 4 -n 拒绝显示别名,能显示数字的全部转化成数字. 5 -l 仅列出有在 Listen (监听) 的服務状态 6 7 -p 显示建立相关链接的程序名 8 -r 显示路由信息,路由表 9 -e 显示扩展信息,例如uid等 10 -s

Linux系统巡检常用命令

# uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -tv # 列出所有PCI设备 # lsusb -tv # 列出所有USB设备 # lsmod # 列出加载的内核模块 # env # 查看环境变量 # free -m # 查看内存使用量和交换区使用量 # df -h # 查看各分区使用情况 # du -s

Linux 系统下 ifconfig 命令详解

Linux系统下网卡网络配置详解 Ifconfig命令使LINUX核心知道软件回送和网卡这样一些网络接口,这样Linux就可以使用它们. 除了上面介绍的这些用法之外,ifconfig命令用来监控和改变网络接口的状态,并且还可以带上很多命令行参数.下面是一个ifconfig的通用调用语法: #ifconfig interface [[-net -host] address [parameters]] 其中interface是网络接口名:address是分配给指定接口的主机名或IP地址.这里使用的主

10.8 ss:查看网络状态

ss命令 是类似并将取代netstat的工具,它能用来查看网络状态信息,包括TCP.UDP连接.端口等.它的优点是能够显示更多更详细的有关网络连接状态的信息,而且比netstat更快速更高效. 如果系统没有ss命令,那就需要安装一下,ss命令属于iproute包,因此安装命令是yum -y install iproute. ss [选项] [过滤器] ss命令的参数选项及说明 -n    显示IP地址,不进行DNS解析 -s    显示socket使用统计 -r    尝试解析数字IP地址和端口

linux系统网络服务命令(一)

一.linux系统联网设置 我们在装完linux系统后,首先就是要先配置网络服务,毕竟如果计算机不联网那其就是个计算器.配置网络功能时,刚开始比较简单快捷的是用dhclient命令(使用动态主机配置协议动态的配置网络接口的网络参数),下面介绍使用配置文件来定义静态网络地址并链接互联网. 1.配置网卡文件: [[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0  DEVICE=eth0 //此配置关联至的设备.设备

Ubuntu Linux系统下apt-get命令详解

Ubuntu Linux系统下apt-get命令详解(via|via) 常用的APT命令参数: apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明.大小.版本等 sudo apt-get install package 安装包 sudo apt-get install package - - reinstall 重新安装包 sudo apt-get -f install 修复安装"-f = ——fix-missing&

Linux系统下RPM命令和yum的使用

Linux系统下RPM命令和yum的使用 RPM:Redhat Packages Manager (红帽系列软件包的管理),主要用于安装.卸载.升级和管理软件. 一个包由下面几个部分构成: 例如:httpd-tools-2.4.6-17.e17.x86_64.rpm  这是一个软件包. httpd-tools  软件包的名称 2.4.6    原厂发布的版本号 17.e17  红帽给的版本号 x86_64  安装平台(还有i386.i686等平台). 查看包的详细信息:#rpm –qi 包名 #