title: 网络测试
created: 2026-06-20
updated: 2026-06-20
type: concept
tags: [network, linux, monitoring]
sources:
- raw/scripts/0网络.sh
- raw/scripts/双网卡同网段.sh
- raw/scripts/Mellanox.sh
- raw/scripts/network.sh
- raw/scripts/bond.sh
- raw/scripts/dhcp.sh
- raw/scripts/ethtool.sh
- raw/scripts/sar.sh


网络测试

网络测试涵盖网卡配置、MTU 调优、网速监控、硬件信息查看、双网卡同网段策略路由、Mellanox InfiniBand 网卡配置以及网络性能测试工具(iperf/netperf)。

网卡配置

nmtui(NetworkManager TUI)

nmtui 是 NetworkManager 的文本界面工具,适用于快速交互式配置:

nmtui

通过向导式界面配置 IP 地址、DNS、网关等。

Netplan(Ubuntu 默认)

Netplan 是 Ubuntu 的网络配置抽象层,使用 YAML 配置文件。推荐绑定 MAC 地址以防止网卡名称变更:

# /etc/netplan/00-installer-config.yaml
network:
  ethernets:
    eth0:
      match:
        macaddress: "00:15:b2:b4:a4:16"
      set-name: "eth0"
      dhcp4: true
  version: 2

应用配置:sudo netplan apply

ifcfg(RHEL/CentOS 传统方式)

配置文件位于 /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
# 重启网络服务
sudo systemctl restart network
sudo systemctl restart NetworkManager.service
/etc/init.d/networking restart

MTU 设置(巨帧 Jumbo Frame)

MTU(Maximum Transmission Unit)默认以太网为 1500 字节。启用巨帧(9000)可减少数据包头部开销,提升大文件传输性能:

# 临时设置
ip link set dev eth0 mtu 9000
# 永久设置需写入网卡配置文件(ifcfg 中添加 MTU=9000)

注意:MTU 必须端到端一致(交换机、两端网卡),否则会导致分片或丢包。

网速监控

nload

实时查看网卡流量,以图形化方式展示:

sudo apt install -y nload
nload -u M  # 以 MB 为单位显示

iftop

显示每个连接的带宽占用:

sudo apt install -y iftop
sudo iftop -B -i eth0  # -B 以字节显示,-i 指定网卡

ip -s link

Linux 内核自带的统计查看方式:

watch -n 1 ip -s link show eth0

实时刷新显示发送/接收的字节数、数据包数、错误数、丢弃数。

sar

系统活动报告工具,可记录历史网络流量:

# 安装 sysstat
yum install sysstat -y
# 查看指定网卡流量,每秒采集一次,共 320 次
sar -n DEV 1 320 | grep [网卡名]

网卡硬件信息

ethtool

ethtool 是查询和修改网卡参数的标准工具:

# 查看网卡基本信息(速率、双工模式、Auto-negotiation)
ethtool eth0

# 查看驱动和总线信息(bus-info 可用于 lspci 定位物理槽位)
ethtool -i eth0

# 查看网卡统计(丢包、错包、CRC 错误等)
ethtool -S eth0

ethtool 常用参数解释:
- Speed: 10000Mb/s — 当前链路速率(10GbE)
- Duplex: Full — 全双工模式(Half 为半双工)
- Port: Twisted Pair — 端口类型(FIBRE 为光纤)
- Link detected: yes — 链路是否接通
- driver: ixgbe — 网卡驱动名称
- bus-info: 0000:02:00.0 — PCI 总线地址

网卡亮灯定位

在数据中心机房中,使用以下命令让指定网卡的端口指示灯闪烁,便于物理定位:

ethtool -p ens83f0  # 亮灯 2 秒(默认)
ethtool -p ens83f0 30  # 亮灯 30 秒

配合 lshw 查看总线地址与网卡名称的对应关系:

lshw -class network -businfo
lspci | grep net
lspci -nvv -d 8086:1572 | grep --color Width  # 查看 PCIe 链路宽度

双网卡同网段配置

当两个网卡配置在同一网段时,默认情况下 Linux 会利用所有网卡响应 ARP 请求,导致即使某个网卡未插线其 IP 也可被 ping 通(ARP 泛洪问题)。

策略路由

通过策略路由为每个网卡使用独立的路由表:

# 为 eno1(192.168.1.46)创建独立路由表
ip route add default via 192.168.1.46 dev eno1 table 46
ip rule add from 192.168.1.46 table 46

# 为 eno2(192.168.1.50)创建独立路由表
ip route add default via 192.168.1.50 dev eno2 table 50
ip rule add from 192.168.1.50 table 50

ARP 隔离

通过 sysctl 参数限制 ARP 响应行为:

# 临时生效
echo 1 > /proc/sys/net/ipv4/conf/eno1/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eno1/arp_announce

# 永久生效(写入 /etc/sysctl.conf)
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.rp_filter = 1

参数解释:
- arp_ignore = 1 — 只回答目标 IP 地址是本地地址(该网卡配置的 IP)的 ARP 请求
- arp_announce = 2 — 总是使用最佳本地地址作为 ARP 请求的源地址
- rp_filter = 1 — 开启反向路径过滤,防止 IP 欺骗

Bonding 基本概念

Bonding(网卡绑定)将多个物理网卡聚合为一个逻辑接口,实现冗余和带宽叠加。常见模式:

模式 名称 说明
0 balance-rr 轮询模式,负载均衡 + 容错
1 active-backup 主备模式,仅容错
2 balance-xor 基于 XOR 算法的负载均衡
4 802.3ad 动态链路聚合(LACP),需交换机支持

Mellanox 网卡配置

Mellanox(现 NVIDIA Networking)网卡支持 InfiniBand 和高速以太网。

MLNX_OFED 驱动安装

# 下载并安装 MLNX_OFED
./mlnx_add_kernel_support.sh -m ./
./mlnxofedinstall
/etc/init.d/openibd restart
/etc/init.d/opensmd restart

查看 Mellanox 设备信息

# MST 状态管理
sudo mst start
sudo mst status -v

# 查看 InfiniBand 设备
ibv_devices
ibv_devinfo

# 查看 IB 设备与网络接口映射
ibdev2netdev

# 查看工作状态
ibstatus

# 性能调优
mlnx_tune

InfiniBand 速率测试

# 本地回环测试(重要:测试 IB 链路本身是否正常)
ib_write_bw -d mlx5_0 & ib_write_bw -d mlx5_1 127.0.0.1 --report_gbits
# 绑核测试(结合 NUMA 拓扑)
taskset -c 0-15 ib_write_bw -d mlx5_0 &
taskset -c 32-47 ib_write_bw -d mlx5_1 127.0.0.1 --report_gbits

InfiniBand 网络配置(IPoIB)

通过 IPoIB(IP over InfiniBand)在 IB 网络上承载 IP 协议:

# 使用 nmcli 创建 IPoIB 连接
nmcli con add type infiniband con-name mlx4_ib0 ifname mlx4_ib0 \
  transport-mode connected mtu 65520

# ifcfg 配置文件示例
# /etc/sysconfig/network-scripts/ifcfg-mlx4_ib0
DEVICE=mlx4_ib0
TYPE=InfiniBand
ONBOOT=yes
MTU=65520
CONNECTED_MODE=yes

RDMA 连通性测试(rping)

# 服务端
rping -s -a 172.16.34.1 -p 9401 -v
# 客户端
rping -c -I 172.16.16.1 -a 172.16.34.1 -p 9401 -v

网络性能测试

iperf/iperf3

# 服务端
iperf3 -s

# 客户端 - TCP 测试
iperf3 -c 10.10.1.1 -B 10.10.1.2

# UDP 测试(建议使用 iperf2 进行 UDP 测试)
iperf3 -c 10.10.1.1 -u -b 5G -P 20

# PPS 测试(小包 UDP)
iperf -t 120 -i 1 -u -b 10G -l 16 -c $serverip

iperf 关键参数:
- -c — 客户端模式,指定服务端 IP
- -s — 服务端模式
- -u — UDP 模式
- -b — 目标带宽(如 5G、10G)
- -P — 并行流数
- -l — 缓冲区大小(小包测试用 16 字节)
- -t — 测试时长(秒)

netperf

# 服务端
netserver

# TCP 吞吐测试
netperf -H 172.168.5.23 -l 100

# 延迟测试
netperf -H $SERVER -t omni -- -d rr \
  -O "THROUGHPUT, THROUGHPUT_UNITS, MIN_LATENCY, MAX_LATENCY, MEAN_LATENCY"

netperf 测试类型:
- TCP_STREAM — TCP 吞吐量
- UDP_STREAM — UDP 吞吐量
- TCP_RR — TCP 请求/响应延迟
- TCP_CRR — TCP 连接/请求/响应
- UDP_RR — UDP 请求/响应

相关页面