network
netstat
shell
#查看网卡统计
ethtool -S <interface>nslookup
dig
finger
lsof
sockstat
ethtool
查询或控制网络驱动和硬件设置
shell
#查看网口ring缓存
ethtool -g ens0
#查看网口驱动信息
ethtool -i ens0
#网口灯闪烁
ethtool -p ens0
#查看网口信息和统计
ethtool -S ens0
#查看支持多少个 Rx 队列
ethtool -l ens1f1
#检查 RSS 设置
ethtool -x ens1f1
ethtool -n ens1f1 rx-flow-hash tcp4ss
显示socket统计
shell
#显示所有socket
ss -a
#详细详细socket信息
ss -e
#显示定时器信息
ss -o
#不解析地址
ss -n
#显示进程socket使用信息
ss -p
#显示tcp
ss -tifconfig
ip
IP查看
addr
显示IP地址和属性信息
shell
#显示所有地址
ip addr
ip a
#显示特定网口
ip addr show dev ens0
#添加地址
ip addr add 192.168.1.2/24 dev ens3
#删除地址
ip addr del 192.168.1.2/24 dev ens3link
查询或管理网络接口状态
shell
#显示有所网口信息
ip link
#显示网口ens0得信息
ip link show den ens0
#查看网口统计
ip -s link
#启动网口
ip link set ens0 up
#关闭网口
ip link set ens0 down
#开启混杂模式
ip link set ens0 promisc onroute
shell
#显示内核所有路由表
ip route
#添加路由
##添加到网关的默认路由
ip route add default via 192.168.1.1 dev ens0
ip route add 192.168.1.0/24 via 192.168.1.1
ip route add 192.168.1.0/24 dev ens0
#删除路由
ip route del 192.168.1.0/24 via 192.168.1.1
ip route del 192.168.1.0/24 dev ens0
#替换路由
ip route replace 192.168.1.0/24 dev ens1
#获取路由
ip route get 192.168.1.2maddr
查询,管理组播地址
shell
#显示所有组播信息
ip maddr
#显示网口ens0得组播信息
ip maddr show dev ens0
#增加静态组播地址
ip maddr add 33:33:00:00:00:01 dev ens0
#删除静态组播地址
ip maddr del 33:33:00:00:00:01 dev ens0neigh
查看邻居对象,即IPv4得ARP表
shell
ip neigh
#显示ens0得ARP缓存
ip neigh show dev ens0
#
ip neigh add 192.168.1.1 lladdr 1:2:3:4:5:6 dev ens0
ip neigh del 192.168.1.1 dev ens0
ip neigh replace 192.168.1.1 lladdr 1:2:3:4:5:6 dev ens0tuntap
shell
ip tuntap add dev tap0 mod tap # 创建 tap
ip tuntap add dev tun0 mod tun # 创建 tun
#删除 tap/tun 设备:
ip tuntap del dev tap0 mod tap # 删除 tap
ip tuntap del dev tun0 mod tun # 删除 tun
#或
ip link del tap0
ip link del tun0help
shell
ip help
ip addr help
ip link help
ip neigh help修改地址和链路属性
调整或查看路由
ARP管理
iptraf
nc
netcat,详细用法请man一下
shell
#TCP服务端
nc -lv 192.168.1.1 1234
#TCP客户端
nc 192.168.1.1 1234
#UDP服务端
nc -luv 192.168.1.1 1234
#UDP客户端
nc -uv 192.168.1.1 1234NET-TOOLS VS IPROUTE
| net-tools命令 | iproute命令 |
|---|---|
| arp -a | ip neigh |
| arp -v | ip -s neigh |
| arp -s 192.168.1.1 1:2:3:4:5:6 | ip neigh add 192.168.1.1 lladdr 1:2:3:4:5:6 dev ens0 |
| arp -i ens0 -d 192.168.1.1 | ip neigh del 192.168.1.1 dev ens0 |
| ifconfig -a | ip addr |
| ifconfig ens0 down | ip link set ens0 down |
| ifconfig ens0 up | ip link set ens0 up |
| ifconfig ens0 192.168.1.1 | ip addr add 192.18.1.2 dev ens0 |
| ifconfig ens0 netmask 255.255.255.0 | ip addr add 192.18.1.2 dev ens0 |
| ifconfig ens0 mtu 9000 | ip link set ens0 mtu 9000 |
| ifconfig ens0 192.168.1.2 | ip addr add 192.18.1.2 dev ens0 |
| netstat | ss |
| netstat -neopa | ss -neopa |
| netstat -g | ip maddr |
| route | ip route |
| route add -net 192.168.1.0 netmask 255.255.255.0 dev ens0 | ip route add 192.168.1.1/24 dev ens0 |
| route add default gw 192.168.1.1 | ip route add default via 192.168.1.1 |
脚本
shell
#进程使用tcp连接统计
#! /bin/bash
ss -tnp > .ss.tmp
range=$1
start_pid=$(echo $range | cut -d'-' -f1)
end_pid=$(echo $range | cut -d'-' -f2)
# 输出表头
printf "%-8s %-10s %-10s %-10s %-12s %-12s %-12s %-8s %-12s %-10s %-10s %-10s\n" \
"PID" "ESTAB" "SYN-SENT" "SYN-RECV" "FIN-WAIT-1" "FIN-WAIT-2" "TIME-WAIT" "CLOSE" "CLOSE-WAIT" "LAST-ACK" "LISTEN" "CLOSING"
for ((pid=start_pid; pid<=end_pid; pid++)); do
# 统计各种状态数量
awk -v pid="$pid" '
$0 ~ pid { state[$1]++ }
END {
printf "%-8s %-10d %-10d %-10d %-12d %-12d %-12d %-8d %-12d %-10d %-10d %-10d\n", \
pid, state["ESTAB"], state["SYN-SENT"], state["SYN-RECV"], state["FIN-WAIT-1"], state["FIN-WAIT-2"], \
state["TIME-WAIT"], state["CLOSE"], state["CLOSE-WAIT"], state["LAST-ACK"], state["LISTEN"], state["CLOSING"]
}
' .ss.tmp
done
rm -rf .ss.tmp丢包
网卡丢包
shell
#查看网卡丢包收报统计
ethtool -S <interface> | grep -E 'rx.*miss|rx.*error|rx.*drop'
#查看丢包总数
ip -s -s link show dev <interface>
#检查总体丢包
cat /proc/net/dev | grep <interface>#使用dropwatch dropwatch
程序丢包
shell
netstat -s | grep -i "drop\|loss\|overflow"
#packets pruned from receive queue:由于 socket 接收队列溢出丢包。
#segments dropped due to lack of memory:由于内核内存不足丢包。
#TCPBacklogDrop:TCP 连接队列溢出。
ss -ltn
#关键指标:Recv-Q 列显示 socket 接收队列中的未处理数据包。