[TOC]
0x00 快速入门
前言:主要针对于Linux中网络信息/TCP/UDP连接查看抓取等命令进行学习,加深对Linux的使用;
0x01 网络状态信息
netstat 命令
描述:用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况 weiyigeek.top-netstat选项
                
实际案例:
      
  
      
    [TOC]
前言:主要针对于Linux中网络信息/TCP/UDP连接查看抓取等命令进行学习,加深对Linux的使用;
描述:用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况 weiyigeek.top-netstat选项
                
实际案例:
      
  
      
[TOC]
前言:主要针对于Linux中网络信息/TCP/UDP连接查看抓取等命令进行学习,加深对Linux的使用;
描述:用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况 weiyigeek.top-netstat选项
                
实际案例: weiyigeek.top-分析IP/TCP1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108#示例1.利用管道符的命令连接可以看当前与多少用户正在连接
netstat -an | grep ESTABLISHED | wc -l  
netstat -tnul ##可以用来看有多少端口服务正常打开
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
#示例2.查询通信TCP/UDP协议
netstat -antup   #查看网络的链接信息,显示建立相关链接的程序名,显示所有选项,拒绝显示别名,能显示数字的全部转化成数字,显示tcp和udp
netstat -tlunp  #列出所有得tcp/udp正在连接得通信 进程得PID
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      11108/nginx: master
#示例3.使用prot/host和users显示
$netstat -a --numeric-ports | head -n 4
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
$netstat -a --numeric-hosts | head -n 4
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
$netstat -a --numeric-users | head -n 4
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
#示例4.列出所有处于监听状态得Sockets
$netstat -lx  #只列出监听 UNIX 端口 STREAM:流
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     18174    /run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     327430   /var/run/docker.sock
#示例5.显示每个协议得统计信息进行持续输出 -  passive:被动
netstat -cstu  #每秒钟刷新统计信息
# IcmpMsg:
#     InType0: 3
#     InType3: 2469
#     InType8: 37438
#     InType11: 986
#     InType13: 12
#     OutType0: 37438
#     OutType3: 2
#     OutType14: 12
# Tcp:
#     442 active connections openings
#     4122 passive connection openings
#     20172 failed connection attempts
#     221 connection resets received
#     6 connections established
#     1141594 segments received
#     1316330 segments send out
#     231198 segments retransmited
#     5 bad segments received.
#     670914 resets sent
#     InCsumErrors: 4
# Udp:
#     17621 packets received
#     2 packets to unknown port received.
#     0 packet receive errors
#     52001 packets sent
#     0 receive buffer errors
#     0 send buffer errors
#示例6.显示系统不支持得地址族(Address Families)
$netstat --verbose
netstat: no support for AF INET (sctp) on this system.
netstat: no support for AF IPX on this system.
netstat: no support for AF AX25 on this system.
netstat: no support for AF X25 on this system.
netstat: no support for AF NETROM on this system.
#示例6.显示核心路由信息
$netstat -ri
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         gateway         0.0.0.0         UG        0 0          0 eth0
default         gateway         0.0.0.0         UG        0 0          0 eth0
link-local      0.0.0.0         255.255.0.0     U         0 0          0 eth0
#示例7.显示网络接口列表
$netstat -i
Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
br-15352d6a83b9  1500        0      0      0 0             0      0      0      0 BMU
br-523a7e9f1e05  1500       38      0      0 0            38      0      0      0 BMU
docker0          1500    35908      0      0 0         37440      0      0      0 BMU
eth0             1500  1667387      0      0 0       1456021      0      0      0 BMRU
lo              65536       38      0      0 0            38      0      0      0 LRU
#示例8.IP/TCP分析
$netstat -pantu | egrep -v '0.0.0.0|::::'| awk '{print $5}'| egrep -v 'and|Address' | cut -d ':' -f 1 | sort | uniq
218.201.8.36
$netstat -nt | grep -e 127.0.0.1 -e 0.0.0.0 -e ::: -v | awk '/^tcp/{++state[$NF]} END {for(i in state) print i,"\t",state[i]}'
SYN_RECV         4
ESTABLISHED      8
                
Q:[面试]Linux 下查看端口占用的命令?
答:
netstat -tunlp 、ss -tua、lsof -i等命令
描述:显示处于活动状态的套接字信息,它是 iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息,它可以显示和netstat类似的内容,但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受,当服务器维持的连接达到上万个的时候,使用netstat等于浪费生命,而用ss才是节省时间。
ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。
基础语法: weiyigeek.top-参数1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Usage: ss [ OPTIONS ]
       ss [ OPTIONS ] [ FILTER ]
# 参数
-r:尝试解析数字地址/端口
-e:处于通信状态,ESTABLISHED
-p:显示进程服务与PID号
-K: 强制关闭 socket
# 状态说明
states:  established,  syn-sent,  syn-recv,  fin-wait-1,  fin-wait-2, time-wait, closed, close-wait, last-ack, listen and closing.
# 命令
all - for all the states
connected - all the states except for listen and closed
synchronized - all the connected states except for syn-sent
bucket  -  states, which are maintained as minisockets, i.e.  time-wait and syn-recv
big - opposite to bucket
                
实际案例: weiyigeek.top-state1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69# 示例1.显示指定状态和服务得数据连接
ss state ESTABLISHED sport = :ssh
Netid  Recv-Q Send-Q Local Address:Port                 Peer Address:Port       
tcp    0      0      172.17.24.236:ssh                  218.201.8.36:38532      
tcp    0      0      172.17.24.236:ssh                  218.201.8.36:nifty-hmi  
## 展现其强大的过滤能力
$ ss state all sport = :ssh   ##源端口就是:ssh,也可以是:22
$ ss state connected sport = :ssh    ##只有ESTABLISHED,同样也能是22端口
# 示例2.显示连接的时间
ss -o | grep -v "*" | grep "timer"    ## 连接 时间
tcp    ESTAB      0      0      172.17.24.236:ssh                  218.201.8.36:38532                 timer:(keepalive,98min,0)
# 示例3.显示TCP/UDP/.X连接
ss -tua #列举出所有的TCP/UDP连接
ss -tux
Netid  State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port
u_str  ESTAB      0      0      /run/systemd/journal/stdout 438875                * 438870
tcp    ESTAB      0      0      172.17.24.236:ssh                  218.201.8.36:8924
# 示例4.显示Sockets摘要
ss -s
Total: 141 (kernel 192)  #总数
TCP:   12 (estab 10, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0
Transport Total     IP        IPv6
*         192       -         -
RAW       0         0         0
UDP       9         8         1
TCP       12        12        0
INET      21        20        1
FRAG      0         0         0
# 示例5.列出所有打开的网络连接端口
ss -l  #UNCONN TCP /UDP /UNIX -l 参数只会显示监听的端口,而且可以进一步过滤到任何想要的信息。
Netid  State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port
nl     UNCONN     0      0      rtnl:dockerd/7461           *                   
nl     UNCONN     0      0      rtnl:kernel                 *        
# 示例6.查看进程使用的socket:
ss -m   # 显示内存使用套接字
# u_str  ESTAB      0      0      /run/dbus/system_bus_socket 443118                * 443110                skmem:(r0,rb212992,t0,tb212992,f0,w0,o0,bl0,d0)
# 示例7.列出连接时显示进程名字和pid:
ss -pl
ss -pl | grep "tcp" | awk 'BEGIN{ FS=" "}{print $1,$2,$5}'   # 截取字段
  # udp    UNCONN     0      0      192.168.1.254:ntp      *:*     users:(("ntpd",pid=2497,fd=24))
  # udp    UNCONN     0      0      127.0.0.1:ntp          *:*     users:(("ntpd",pid=2497,fd=22))
  # nl UNCONN tcpdiag:ss/29225
  # nl UNCONN tcpdiag:kernel
  # tcp LISTEN *:http
  # tcp LISTEN *:ssh
# 找出某个进程监听的端口号: 
ss -ltp | grep proccess_name
# 找出某个端口号被哪个进程占用: 
ss -p | grep port_num
# 列出某个端口上的tcp连接:
ss -tenp | grep port_num
# 列出本地监听端口相关连接:
ss -lnpt | grep 9093
  # LISTEN    0         4096                     *:9093                   *:*        users:(("alertmanager",pid=586124,fd=8))
# 示例8.可以列出过滤出指定的 host 或者 ip 段,Destination(目标地址)
$ ss state all dst 74.125.0.0/16   ## 例如,列出到达 74.125.0.0/16 子网的连接,这个子网属于 Google:
                
描述:Linux 系统的笔记本电脑有外置的WIFI模块即可;
1  | #实例1.连接无线网ssid/密码psk/wlp4s0网卡名称  | 
描述: 是一个实时监控网络流量和带宽使用的控制台应用程序,使用两个图表可视化地展示接收和发送的流量,并提供诸如数据交换总量、最小/最大网络带宽使用量等附加信息。
1  | #RHEL/CentOS  | 
基础示例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15# 1.利用回车切换不同的网卡
Device eth0 [172.31.0.25] (1/2):
============================================================
Incoming:
        Curr: 1.63 kBit/s
        Avg: 2.02 kBit/s
        Min: 888.00 Bit/s
        Max: 12.65 kBit/s
        Ttl: 29.57 GByte
Outgoing:
        Curr: 2.88 kBit/s
        Avg: 3.43 kBit/s
        Min: 1.43 kBit/s
        Max: 14.81 kBit/s
        Ttl: 17.75 GByte
你好看友,欢迎关注博主微信公众号哟! ❤ 
 这将是我持续更新文章的动力源泉,谢谢支持!(๑′ᴗ‵๑) 
 
   温馨提示: 未解锁的用户不能粘贴复制文章内容哟! 
方式1.请访问本博主的B站【WeiyiGeek】首页关注UP主,
将自动随机获取解锁验证码。
Method 2.Please visit 【My Twitter】. There is an article verification code in the homepage.
方式3.扫一扫下方二维码,关注本站官方公众号
回复:验证码
将获取解锁(有效期7天)本站所有技术文章哟!
@WeiyiGeek - 为了能到远方,脚下的每一步都不能少
 欢迎各位志同道合的朋友一起学习交流,如文章有误请在下方留下您宝贵的经验知识,个人邮箱地址【master#weiyigeek.top】或者个人公众号【WeiyiGeek】联系我。 
更多文章来源于【WeiyiGeek Blog - 为了能到远方,脚下的每一步都不能少】, 个人首页地址( https://weiyigeek.top )
    专栏书写不易,如果您觉得这个专栏还不错的,请给这篇专栏 【点个赞、投个币、收个藏、关个注、转个发、赞个助】,这将对我的肯定,我将持续整理发布更多优质原创文章!。
最后更新时间:
文章原始路径:_posts/系统运维/Linux/常用命令/网络查看类命令/网络连接配置查看.md
转载注明出处,原文地址:https://blog.weiyigeek.top/2019/6-6-174.html
本站文章内容遵循 知识共享 署名 - 非商业性 - 相同方式共享 4.0 国际协议