Skip to content

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 tcp4

ss ​

显示socket统计

shell
#显示所有socket
ss -a
#详细详细socket信息
ss -e
#显示定时器信息
ss -o
#不解析地址
ss -n
#显示进程socket使用信息
ss -p
#显示tcp
ss -t

ifconfig ​

ip ​

redhat IP命令手册
ubuntu网络配置

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 ens3

查询或管理网络接口状态

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 on

route ​

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.2

maddr ​

查询,管理组播地址

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 ens0

neigh ​

查看邻居对象,即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 ens0

tuntap ​

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 tun0

help ​

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 1234

NET-TOOLS VS IPROUTE ​

net-tools命令iproute命令
arp -aip neigh
arp -vip -s neigh
arp -s 192.168.1.1 1:2:3:4:5:6ip neigh add 192.168.1.1 lladdr 1:2:3:4:5:6 dev ens0
arp -i ens0 -d 192.168.1.1ip neigh del 192.168.1.1 dev ens0
ifconfig -aip addr
ifconfig ens0 downip link set ens0 down
ifconfig ens0 upip link set ens0 up
ifconfig ens0 192.168.1.1ip addr add 192.18.1.2 dev ens0
ifconfig ens0 netmask 255.255.255.0ip addr add 192.18.1.2 dev ens0
ifconfig ens0 mtu 9000ip link set ens0 mtu 9000
ifconfig ens0 192.168.1.2ip addr add 192.18.1.2 dev ens0
netstatss
netstat -neopass -neopa
netstat -gip maddr
routeip route
route add -net 192.168.1.0 netmask 255.255.255.0 dev ens0ip route add 192.168.1.1/24 dev ens0
route add default gw 192.168.1.1ip 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 接收队列中的未处理数据包。