前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络连接配置查看

网络连接配置查看

作者头像
全栈工程师修炼指南
发布2022-09-28 19:46:28
1.9K0
发布2022-09-28 19:46:28
举报

[TOC]

0x00 快速入门

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

0x01 网络状态信息
netstat 命令

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

WeiyiGeek.netstat选项
WeiyiGeek.netstat选项

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
WeiyiGeek.分析IP/TCP

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.参数
WeiyiGeek.参数

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
WeiyiGeek.state

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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 快速入门
  • 0x01 网络状态信息
    • netstat 命令
      • ss 命令 - 显示系统网络socket连接以及端口信息
      • 0x02 网络连接配置
        • wpa_supplicant 命令
          • nload 命令
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档