网络连接配置查看

2022-09-28 19:46:28 浏览数 (1)

[TOC]

0x00 快速入门

前言:主要针对于Linux中网络信息/TCP/UDP连接查看抓取等命令进行学习,加深对Linux的使用;

0x01 网络状态信息
netstat 命令

描述:用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况

WeiyiGeek.netstat选项

实际案例:

代码语言:javascript复制
#示例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

WeiyiGeek.分析IP/TCP

Q:[面试]Linux 下查看端口占用的命令?

答: netstat -tunlp 、ss -tua、lsof -i 等命令

ss 命令 - 显示系统网络socket连接以及端口信息

描述:显示处于活动状态的套接字信息,它是 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也可以正常运行,只是效率会变得稍慢。

基础语法:

代码语言:javascript复制
Usage: 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.参数

实际案例:

代码语言:javascript复制
# 示例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:

WeiyiGeek.state


0x02 网络连接配置
wpa_supplicant 命令

描述:Linux 系统的笔记本电脑有外置的WIFI模块即可;

代码语言:javascript复制
#实例1.连接无线网ssid/密码psk/wlp4s0网卡名称
wpa_supplicant -B -i wlp4s0 -c <(wpa_passphrase "NAMEssid" "psk")
nload 命令

描述: 是一个实时监控网络流量和带宽使用的控制台应用程序,使用两个图表可视化地展示接收和发送的流量,并提供诸如数据交换总量、最小/最大网络带宽使用量等附加信息。

代码语言:javascript复制
#RHEL/CentOS
yum install nload

#Debian/Ubuntu
apt install nload

基础示例:

代码语言:javascript复制
# 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

0 人点赞