netstat工具学习记录

发布于:2024-04-11 ⋅ 阅读:(34) ⋅ 点赞:(0)

netstat工具学习记录

Netstat(网络统计)是一个非常强大的命令行工具,它用于显示网络连接、路由表、接口统计、伪装连接和多播成员资格等信息。与其他网络监控工具相比,Netstat的主要优势在于其广泛的可用性(大多数Unix-like系统和Windows上都可用)以及它提供的详细网络连接和统计信息。

主要特点

  • 广泛可用:几乎所有的操作系统都内置了Netstat工具。
  • 多功能性:能够显示各种网络相关信息,如当前打开的连接、正在监听的端口、网络统计等。
  • 实时监控:尽管Netstat本身不支持实时监控,但可以通过定时运行来模拟实时数据收集。

如何安装和使用Netstat

在大多数Unix-like系统中,Netstat通常作为net-tools包的一部分预装在系统中。对于Windows系统,Netstat已经包含在操作系统中,无需额外安装。

基本使用
  • 查看所有连接:netstat -a
  • 查看所有TCP连接:netstat -at
  • 查看所有UDP连接:netstat -au
  • 显示每个协议的统计信息:netstat -s

使用Netstat进行日志分析

Netstat本身并不直接支持日志分析。您提到的分析需求更适合使用日志分析工具(如GoAccess、AWStats等)或自定义脚本来处理Web服务器日志(如Apache或Nginx日志)。

指定域名下,分析各个状态码请求数量/请求比例:

​ 使用awk或grep等工具从Web服务器日志中筛选出特定域名的请求,然后统计各个HTTP状态码的出现次数。

cat access.log | grep "指定域名" | awk '{print $9}' | sort | uniq -c | sort -rn
指定域名下,分析C段IP的请求数Top 10:

​ 通过分析日志文件,提取出对应域名的IP地址,然后使用sort和uniq等命令来统计C段IP地址(即IP地址的前三个部分)的请求数,并使用head命令获取前10名。

cat access.log | grep "指定域名" | awk '{print $1}' | cut -d'.' -f1,2,3 | sort | uniq -c | sort -rn | head -10
指定域名下,分析C段IP的流量Top 10:

​ 类似于上述请求数的分析,但需要从日志中提取每个请求的数据量,并累加计算。

cat access.log | grep "指定域名" | awk '{ip[$1]+=$10} END {for (i in ip) print i, ip[i]}' | sort -k2 -rn | head -10
按域名统计流量Top 10:

​ 分析日志文件,根据域名提取流量信息,并进行汇总排序。

awk '{domain[$11]+=$10} END {for (d in domain) print d, domain[d]}' access.log | sort -k2 -rn | head -10
按域名统计平均下载速率 (KB/s):

​ 需要从日志中提取总传输数据量和时间戳,然后计算平均下载速率。

awk '{speed[$11]+=$10; count[$11]++} END {for (d in speed) print d, (speed[d]/count[d])/1024 " KB/s"}' access.log
按域名统计5分钟粒度带宽 (fKbps):

​ 同样需要时间戳和传输数据量信息,通过划分时间窗口来计算每个窗口内的带宽使用情况。

awk '{time=strftime("%Y-%m-%d %H:%M", $4); domain[$11][time]+=$10} END {for (d in domain) for (t in domain[d]) print d, t, (domain[d][t]*8)/(5*60) " Kbps"}' access.log

其他类似工具(命令)及使用场景

  1. ss (Socket Statistics)

    简介:ss 是一个用于检查套接字统计信息的工具。它可以显示和监控与 netstat 类似的信息,但它更快且能提供更多的统计数据。
    使用场景:ss 常用于显示特定类型(如 TCP、UDP)的连接信息、监听端口等。它特别适用于快速诊断系统上的网络连接问题。

    #列出所有打开的网络连接:
    ss -tulwn
    #列出所有TCP连接:
    ss -t -a
    #查找监听特定端口的进程(例如查找监听端口 22 的进程):
    ss -ltnp | grep ':22'
    
  2. lsof (List Open Files)

简介:lsof 是一个列出当前系统打开文件的工具。由于在 UNIX 和 Linux 中一切皆文件,网络连接也被视为文件,因此 lsof 可以用来显示网络连接信息。
使用场景:lsof 常用于查找哪个进程监听或打开了某个端口,以及确定哪个进程正在使用某个文件或套接字。

#列出所有打开的网络文件:
lsof -i
#查找特定端口的使用情况(例如查找端口 80):
lsof -i :80
#查找某个特定进程打开的文件(通过PID,假设PID为1234):
lsof -p 1234
  1. nmap (Network Mapper)

简介:nmap 是一个网络探测和安全审核的工具。虽然它不直接与 netstat 功能重叠,但它可以用来探测网络上的设备、服务以及对应的端口。
使用场景:nmap 常用于网络安全扫描、发现网络上的设备和服务、检测开放端口以及运行在这些端口上的应用程序版本。

#扫描特定主机的开放端口(替换<host>为实际的主机名或IP地址):
nmap <host>
#扫描特定范围内的IP地址(例如扫描192.168.1.0/24网络):
nmap 192.168.1.0/24
#检测特定主机上开放端口的服务版本:
nmap -sV <host>

  1. tcpdump

简介:tcpdump 是一个强大的命令行网络分析工具,它可以捕获网络层上的数据包。
使用场景:tcpdump 常用于抓取并分析通过网络接口传输的数据包。这对于网络流量分析、监控和理解网络问题非常有用。

#抓取并显示所有经过第一个网络接口的包:
tcpdump -i eth0
#抓取并显示特定端口(例如80)的数据包:
tcpdump port 80
#将捕获的数据包写入文件:
tcpdump -w filename.pcap
  1. Wireshark

简介:虽然 Wireshark 是一个图形界面工具,但它是世界上最广泛使用的网络协议分析器。它能够深入分析网络数据包,提供详尽的网络通信细节。
使用场景:Wireshark 常用于网络故障排除、软件和协议开发、教育目的以及网络安全分析。

  • ​ 启动Wireshark:直接打开Wireshark应用程序,选择网络接口开始捕获。

  • ​ 过滤数据包:在顶部的过滤栏中输入过滤条件,如 ip.addr == <IP地址> 或 tcp.port == <端口号>。
    和协议开发、教育目的以及网络安全分析。

  • ​ 启动Wireshark:直接打开Wireshark应用程序,选择网络接口开始捕获。

  • ​ 过滤数据包:在顶部的过滤栏中输入过滤条件,如 ip.addr == <IP地址> 或 tcp.port == <端口号>。

  • ​ 保存捕获的数据包:在文件菜单中选择“保存”,保存您的会话数据。


网站公告

今日签到

点亮在社区的每一天
去签到