文章目录
- netstat工具学习记录
-
- 主要特点
- 如何安装和使用Netstat
- 使用Netstat进行日志分析
-
-
- 指定域名下,分析各个状态码请求数量/请求比例:
- [指定域名下,分析C段IP的请求数Top 10:](#指定域名下,分析C段IP的请求数Top 10:)
- [指定域名下,分析C段IP的流量Top 10:](#指定域名下,分析C段IP的流量Top 10:)
- [按域名统计流量Top 10:](#按域名统计流量Top 10:)
- [按域名统计平均下载速率 (KB/s):](#按域名统计平均下载速率 (KB/s):)
- [按域名统计5分钟粒度带宽 (fKbps):](#按域名统计5分钟粒度带宽 (fKbps):)
-
- 其他类似工具(命令)及使用场景
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状态码的出现次数。
bash
cat access.log | grep "指定域名" | awk '{print $9}' | sort | uniq -c | sort -rn
指定域名下,分析C段IP的请求数Top 10:
通过分析日志文件,提取出对应域名的IP地址,然后使用sort和uniq等命令来统计C段IP地址(即IP地址的前三个部分)的请求数,并使用head命令获取前10名。
bash
cat access.log | grep "指定域名" | awk '{print $1}' | cut -d'.' -f1,2,3 | sort | uniq -c | sort -rn | head -10
指定域名下,分析C段IP的流量Top 10:
类似于上述请求数的分析,但需要从日志中提取每个请求的数据量,并累加计算。
bash
cat access.log | grep "指定域名" | awk '{ip[$1]+=$10} END {for (i in ip) print i, ip[i]}' | sort -k2 -rn | head -10
按域名统计流量Top 10:
分析日志文件,根据域名提取流量信息,并进行汇总排序。
bash
awk '{domain[$11]+=$10} END {for (d in domain) print d, domain[d]}' access.log | sort -k2 -rn | head -10
按域名统计平均下载速率 (KB/s):
需要从日志中提取总传输数据量和时间戳,然后计算平均下载速率。
bash
awk '{speed[$11]+=$10; count[$11]++} END {for (d in speed) print d, (speed[d]/count[d])/1024 " KB/s"}' access.log
按域名统计5分钟粒度带宽 (fKbps):
同样需要时间戳和传输数据量信息,通过划分时间窗口来计算每个窗口内的带宽使用情况。
bash
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
其他类似工具(命令)及使用场景
ss (Socket Statistics)
简介:ss 是一个用于检查套接字统计信息的工具。它可以显示和监控与 netstat 类似的信息,但它更快且能提供更多的统计数据。
使用场景:ss 常用于显示特定类型(如 TCP、UDP)的连接信息、监听端口等。它特别适用于快速诊断系统上的网络连接问题。
bash
#列出所有打开的网络连接:
ss -tulwn
#列出所有TCP连接:
ss -t -a
#查找监听特定端口的进程(例如查找监听端口 22 的进程):
ss -ltnp | grep ':22'
lsof (List Open Files)
简介:lsof 是一个列出当前系统打开文件的工具。由于在 UNIX 和 Linux 中一切皆文件,网络连接也被视为文件,因此 lsof 可以用来显示网络连接信息。
使用场景:lsof 常用于查找哪个进程监听或打开了某个端口,以及确定哪个进程正在使用某个文件或套接字。
bash
#列出所有打开的网络文件:
lsof -i
#查找特定端口的使用情况(例如查找端口 80):
lsof -i :80
#查找某个特定进程打开的文件(通过PID,假设PID为1234):
lsof -p 1234
nmap (Network Mapper)
简介:nmap 是一个网络探测和安全审核的工具。虽然它不直接与 netstat 功能重叠,但它可以用来探测网络上的设备、服务以及对应的端口。
使用场景:nmap 常用于网络安全扫描、发现网络上的设备和服务、检测开放端口以及运行在这些端口上的应用程序版本。
bash
#扫描特定主机的开放端口(替换<host>为实际的主机名或IP地址):
nmap <host>
#扫描特定范围内的IP地址(例如扫描192.168.1.0/24网络):
nmap 192.168.1.0/24
#检测特定主机上开放端口的服务版本:
nmap -sV <host>
tcpdump
简介:tcpdump 是一个强大的命令行网络分析工具,它可以捕获网络层上的数据包。
使用场景:tcpdump 常用于抓取并分析通过网络接口传输的数据包。这对于网络流量分析、监控和理解网络问题非常有用。
bash
#抓取并显示所有经过第一个网络接口的包:
tcpdump -i eth0
#抓取并显示特定端口(例如80)的数据包:
tcpdump port 80
#将捕获的数据包写入文件:
tcpdump -w filename.pcap
Wireshark
简介:虽然 Wireshark 是一个图形界面工具,但它是世界上最广泛使用的网络协议分析器。它能够深入分析网络数据包,提供详尽的网络通信细节。
使用场景:Wireshark 常用于网络故障排除、软件和协议开发、教育目的以及网络安全分析。
-
启动Wireshark:直接打开Wireshark应用程序,选择网络接口开始捕获。
-
过滤数据包:在顶部的过滤栏中输入过滤条件,如 ip.addr == <IP地址> 或 tcp.port == <端口号>。
和协议开发、教育目的以及网络安全分析。
-
启动Wireshark:直接打开Wireshark应用程序,选择网络接口开始捕获。
-
过滤数据包:在顶部的过滤栏中输入过滤条件,如 ip.addr == <IP地址> 或 tcp.port == <端口号>。
-
保存捕获的数据包:在文件菜单中选择"保存",保存您的会话数据。