网络
常用工具命令集合
高频工具
| 名字 | 简介 |
|---|---|
| ping | 检测链路状态 |
| hping | 支持 tcp 检测 |
| mtr | |
| dig | DNS 解析工具 |
| nslookup | DNS 解析工具 |
| dstat | 检测网络流量,同时输出系统资源使用情况(综合) |
| ip | 网络管理工具(综合) |
| ss | socket 的统计信息 |
| traceroute | 跟踪IP路由包 |
| tcpdump | 抓包工具 |
综合工具
| 名字 | 简介 |
|---|---|
| ifconfig | 早期的网卡配置工具 |
| iwconfig | 无线网卡的配置工具 |
| sar | 流量监控(综合) |
| iftop | 类似 top 的方式展示连接和网络传输情况 |
| iperf | c/s 模式的网络质量测试工具 |
| iptraf | 流量及协议分析工具-实时(iptraf -d eth0) |
| netperf | c/s 模式的网络质量测试工具 |
| nethogs | 进程级带宽检查工具 |
| tracert | 类似于 tcptrace |
| nmap | 扫描 |
| netcat/socat |
特殊工具
| 名字 | 简介 |
|---|---|
| telnet | 发送tcp数据包 |
| tcptrace | tcpdump捕获数据的分析工具 |
| tshark | 抓包工具 |
| ethtool | 网卡检查和设置(有线网卡) |
| netstat | 网络链接状态查询 |
| nstat | 统计网络的状态 |
| lsof | 系统资源及文件调度情况 |
| autossh | |
| dnsyo | |
| ifup/ifdouwm | |
| route | 路由信息 |
路由
# linux
ip route add 10.2.2.0/24 via 192.168.5.253 dev br0
# mac
netstat -rn
sudo route add -net 10.2.2.0/24 -netmask 255.255.255.0 192.168.0.181
# win
route print -4
route -p add 10.2.2.0/24 mask 255.255.255.0 192.168.5.182 metric 1 IF 11
# 检查目标链路, 可以通过浏览器打开生成的物理路线图
nexttrace baidu.com
# 查看到远端是否有匹配的路由
ip r get 10.20.4.219网络流量
watch more /proc/net/dev # 实时监控流量文件系统 累计值
iptraf
sar -n DEV 1 10
netstat -i
nethogs -d 5 eth0 eth1 # 按进程统计流量
sar -n DEV 1 3 # 统计网络流量和速率dns
测试
nslookup www.baidu.com # 解析域名IP
dig -x www.baidu.com # 解析域名IP
dig +short txt hacker.wp.dg.cx # 通过 DNS 来读取 Wikipedia 的hacker词条
host -t txt hacker.wp.dg.cx # 通过 DNS 来读取 Wikipedia 的hacker词条systemd-dns
# 查看当前配置
resolvectl status
systemd-resolved --flush-caches # 刷新 dns
systemctl restart nscd.service # 刷新 dns综合
ifconfig/flushdns # windows dns 刷新
# MAC dns 刷新
sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder
# 指定 dns 服务器进行查询
dig @localhost -p 1053 ecs.server.wait
dig @8.8.8.8 www.baidu.com
# 查看域名的 ttl 时间
dig +nocmd chenwx.top @8.8.8.8 +noall +answer主机网络检查
ss
# 网络连接的状态统计
ss -s
# 查询 time-wait 状态的连接
ss -tan state time-wait | wc -l
ss -tan state established
ss -t state closed # 不一定有, 可能是因为已经算在了 time-wait 状态中
ss -to state time-wait # 显示详细信息, 主要包括处于此状态的时间
# 统计 time-wait 状态的链接地址和数量
ss -tan state time-wait | awk '{print $4}' | cut -d: -f1 | sort | uniq -c | sort -rn
# 统计连接状态
ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}'
# 查看 TCP 连接的保持时长
ss -tnonetstat
el6 / el7
# 协议状态
netstat -s
# 连接数按 IP 地址进行分组统计
netstat -tn | grep ESTABLISHED | awk '{print $5}' | awk -F":" '{print $4}' | sort | uniq -c
# 查看某端口的远程连接 IP 地址分组数
netstat -tn | grep 3306 | awk '{print $5}' | cut -d ":" -f 4 | sort | uniq -c
# 检查连接该端口的远端 IP 地址分组统计
netstat -tn | grep 21102 | awk '{print $5}' | sort| cut -d ":" -f 1 | uniq -c
# 计算每个 IP 地址到本机的连接数量
netstat -ant | grep ESTABLISHED | awk '{print $5}' |awk -F':' '{print $(NF-1),$NF}' | sort | uniq -c
netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# 与指定 IP+port 的连接情况
netstat -tnp | grep 10.1.249.51:21102 | awk '{print $NF}' | cut -d '/' -f 1 | sort | uniq -c
# 统计 TCP 连接状态数量
# /^tcp/ {++S[$NF]} 每匹配一个 tcp 行, 就将 $NF 作为 数组 S(k/v)的 key 并 +1
netstat -tn | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
# IP 维度统计 - 与远端的连接数量
netstat -na|grep ESTABLISHED | awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n
# IP+PORT 维度统计 - 与远端的连接数量
netstat -ant|fgrep "ESTABLISHED" | awk '{print $5}' | sort |uniq -c
# 因时间戳问题被丢弃的包数量
netstat -s | grep rejects综合检查
# 检查连接远端某地址的连接数分组统计, 及进程号
lsof -i @10.1.249.51:21102 | awk '{print $2}' | sed 1d | uniq -c
# 查看所有 ESTABLISHED 状态的 tcp 链接
lsof -i TCP -s TCP:ESTABLISHED -n
# 统计连接最多的进程
lsof -i TCP -s TCP:ESTABLISHED | awk '{print $1}' | sort | uniq -c | sort -rn
# 查看指定进程的所有连接
lsof -i -a -p $(pgrep python3)
# 到远端的连接数量
lsof -i @10.1.249.51:21102 | wc -l
dstat # 综合检测
sar -n DEV 1 5 # 流量检查iproute2
ip addr show bond0
# 手动添加IP
ip addr add dev bond0 10.230.99.98/26
# 添加vip后, 主动向外发送广播(如果是 v6 地址则不需要单独宣告)
/sbin/arping -q -c 2 -A 10.230.99.98 -I bond0网络排查
traceroute www.baidu.com # 测试跳数
mtr -r www.baidu.com # 测试网络链路节点响应时间 # trace ping 结合
telnet ip port # 测试端口是否开放
echo "show " | nc $ip $port
# 测试端口是否可访问
echo >/dev/tcp/10.2.1.5/111 && echo "open"
echo >/dev/tcp/baidu.com/80 && echo "open"
# 发送UDP数据包
echo "hello" > /dev/udp/192.168.1.81/5060
echo "hello" | socat - udp4-datagram:10.2.1.67:514
# nc
echo "nihao" | nc 10.248.13.4 8716
echo "nihao" | nc -u 10.248.13.4 8716 # udp
nc -v -w 1 192.168.1.222 -z 1-200
nc -v -w 10 -z 10.1.249.62 18080
# 长时间测试
for i in $(seq 100); do sleep 0.5; nc -v -w 10 -z 211.139.91.37 80; done
# 扫描
nmap -p 80 10.1.2.5
nmap -p 8081 172.20.0.0/16
nmap -sn 192.168.1.0/24 # 扫描网段内的存活主机
# windows tracert test
tracert -d 211.136.164.124
# 测试 MTU 大小
# 1380 (数据) + 20 (IP 头部) + 8 (ICMP 头部) = 1408 字节 (MTU)
ping -M do -s 1380 10.3.0.4snmp
# 获取基础信息
/usr/bin/snmpwalk -v 2c -c public 10.1.249.36 .1.3.6.1.4.1.7564.30.1.0网卡管理
ifconfig eth0 down # 禁用网卡
ifconfig eth0 up # 启用网卡
ifup eth0:0 # 启用网卡
ifdown eth0:0 # 禁用网卡
mii-tool em1 # 查看网线是否连接网络管理
查看信息
# 获取所有网卡的名称
ifconfig | grep ^[a-z] | grep -vE 'lo|docker0'| awk -F: '{print $1}'
ip link show | grep -o '^[0-9]\+: [a-zA-Z0-9]\+' | grep -vE 'lo|docker0' | awk '{print $2}'
# 获取 IP 地址
ipaddr=$(ip -4 addr show eth0 | grep inet | awk '{print $2}' | awk -F'/' '{print $1}')
ip -4 addr | grep -E "10.27.10.255|10.26.2.255" | awk '{print $2}' | awk -F'/' '{print $1}'networkManager
# 静态ip - 注意设置后需要激活
nmcli con modify enp7s0 ipv4.method manual ipv4.addr "192.168.1.2/24, 10.10.1.5/8"
nmcli con up enp7s0
nmcli con down br2
systemctl restart NetworkManager.service最后更新于