零基础从头教学Linux(Day 20)

Linux系统网络管理

一、网络参数配置

1、图形化配置

NetworkManager,Linux7系统中,一般建议停止该管理方式;Linux8以上操作系统统一将网络管理交给NetworkManager管理。

bash 复制代码
#开启
[root@localhost ~]# systemctl start NetworkManager
#关闭
[root@localhost ~]# systemctl stop NetworkManager
#关闭并开机不自启
[root@localhost ~]# systemctl disable --now NetworkManager
#开启并开机自启
[root@localhost ~]# systemctl enable --now NetworkManager

2、命令行配置

2.1、ifconfig命令

查看及配置网卡参数(临时配置),不能查看基于配置文件的多IP地址的网络参数,默认不能查看到未启用的网卡列表

root用户可以使用该命令更改网卡参数,普通用户只能用户查看

语法:

bash 复制代码
ifconfig [接口]
ifconfig 接口 [aftype] options | address ...

选项:

选项 作用
-a 查看所有网卡的配置信息,包括未启用网卡
up 启用网卡,ifconfig ens33 up,不会重新读取配置文件
down 停用网卡,ifconfig ens33 down

案例:

临时配置网卡参数

bash 复制代码
ifconfig enss 192.168.115.136/24

**注意:**临时配置,重启网络服务、网卡启停、主机重启都将失效

2.2、ifup和ifdown

bash 复制代码
ifup ens33 
#启用网卡,并读取配置文件
ifdown ens33
#停用网卡

子接口配置

  • 基于物理网卡的逻辑接口

  • 可以使系统基于一块网卡配置多个IP地址

bash 复制代码
ifconfig 网卡名:编号(上限999999999) IP地址/子网掩码的网络位长度 【临时配置】

生成子接口配置文件【永久配置】,不能使用DHCP获得地址

bash 复制代码
cd /etc/sysconfig/network-scripts
cp ifcfg-ens37 ifcfg-ens37:0
cat ifcfg-ens37:0
TYPE=Ethernet
BOOTPROTO=static
NAME=ens37:0
DEVICE=ens37:0
ONBOOT=yes
IPADDR=192.168.115.214
PREFIX=24
ifdown ens37:0 && ifup ens37:0

2.3、ip address命令

查看网络参数,可以查看到未启用的网卡列表,能够查看基于配置文件实现的多IP地址配置后的网络参数

语法:

bash 复制代码
ip [ OPTIONS ] OBJECT { COMMAND | help }

选项:

选项 作用
address 查看设备IP地址

案例:

bash 复制代码
ip a

2.2、配置文件配置

  • /etc/sysconfig/network-scripts/ifcfg-网卡名

  • 永久配置,需要网卡重新读取配置文件

  • 网卡启停操作

bash 复制代码
#启动服务
systemctl  start  network
#停止服务
systemctl  stop  network
#重启服务
systemctl  restart  network
#使用命令行重新加载配置文件
ifup  网卡名
ifdown 网卡名
#使用命令行启停网卡,但是不加载配置文件
ifconfig  网卡名  up | down

2.2.1、单一IP地址配置

  • 自动获得,必须在当前网络中存在DHCP服务器。

    bash 复制代码
    TYPE=Ethernet
    #网卡参数的类型,Ethernet:以太网
    BOOTPROTO=dhcp
    #获得IP地址的方式,dhcp|static|none
    NAME=ens33
    #网卡描述名称,可有可无
    DEVICE=ens33
    #网卡设备名称,必须与ifconfig看到的网卡名保持一致。不能书写不存在的网卡名
    ONBOOT=yes
    #是否启用配置文件,yes|no
  • 手动配置

bash 复制代码
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.115.150
#IP地址
PREFIX=24
#子网掩码长度
#或者使用
NETMASK=255.255.255.0
GATEWAY=192.168.115.2
#默认网关,在同一系统下,不管几块网卡,建议配置一个默认网关。
DNS1=192.168.115.2
#域名解析服务器地址,不建议在多网卡的情况下书写DNS,因为后启动的网卡会覆盖原有的DNS服务器地址。

2.2.2、多IP地址配置

bash 复制代码
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR1=192.168.115.150
PREFIX1=24
GATEWAY=192.168.115.2
DNS1=192.168.115.2
IPADDR2=192.168.115.151
PREFIX2=24
DNS2=192.168.115.3
DNS3=192.168.115.4
  • 加载配置文件
bash 复制代码
systemctl restart network
#或者
ifdown  ens33 && ifup ens33
  • 验证参数
bash 复制代码
#IP地址
ifconfig | ip a
#网关地址查看
route -n
#DNS地址
cat /etc/resolv.conf

3、路由配置

route命令

route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。

语法:

bash 复制代码
route [选项] [参数]

选项:

选项 描述
-A 设置地址类型;
-C 打印将Linux核心的路由缓存;
-v 详细信息模式;
-n 直接显示数字形式的IP地址;
-e netstat格式显示路由表;
-net 到一个网络的路由表;
-host 到一个主机的路由表。

参数:

参数 描述
add 增加指定的路由记录;
del 删除指定的路由记录;
target 目的网络或目的主机;
gw 设置默认网关;
mss 设置TCP的最大区块长度(MSS),单位MB;
window 指定通过路由表的TCP连接的TCP窗口大小;
dev 路由记录所表示的网络接口。
bash 复制代码
route add -net 0/0 gw 192.168.100.254 dev ens34

实验:

1单一路由直连

bash 复制代码
#进入R1
[root@localhost ~]# systemctl disable --now NetworkManager
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.115.113
PREFIX=24
​
[root@localhost network-scripts]# ifdown ens33 ; ifup ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens34
DEVICE=ens34
ONBOOT=yes
IPADDR=192.168.116.113
PREFIX=24
​
[root@localhost network-scripts]# ifdown ens34 ; ifup ens34
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# vim /etc/sysctl.conf
插入:net.ipv4.ip_forward = 1
[root@localhost network-scripts]# sysctl -p
net.ipv4.ip_forward = 1
#将ens33设置为VMnet1(仅主机模式)、ens34设置为VMnet2(仅主机模式)
​
#进入虚拟机1
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.115.112
PREFIX=24
GATEWAY=192.168.115.113
DNS1=192.168.115.2
​
[root@localhost network-scripts]# ifdown ens33 ; ifup ens33
#将ens33设置为VMnet1(仅主机模式)
#进入虚拟机2
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.116.112
PREFIX=24
GATEWAY=192.168.116.113
DNS1=192.168.116.2
​
[root@localhost network-scripts]# ifdown ens33 ; ifup ens33
#将ens33设置为VMnet2(仅主机模式)

2两个路由连接

bash 复制代码
#进入R1
[root@localhost ~]# systemctl disable --now NetworkManager
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.115.114
PREFIX=24
​
[root@localhost network-scripts]# ifdown ens33 ; ifup ens33
[root@localhost network-scripts]# vim ifcfg-ens34
TYPE=Ethernet
BOOTPROTO=static
NAME=ens34
DEVICE=ens34
ONBOOT=yes
IPADDR=192.168.116.117
PREFIX=24
​
[root@localhost network-scripts]# ifdown ens34 ; ifup ens34
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# vim /etc/sysctl.conf
插入:net.ipv4.ip_forward = 1
[root@localhost network-scripts]# sysctl -p
net.ipv4.ip_forward = 1
#将ens33设置为VMnet1(仅主机模式)、ens34设置为VMnet2(仅主机模式)
[root@localhost network-scripts]# route add -net 192.168.117.0/24 gw 192.168.116.114
​
#进入R2
[root@localhost ~]# systemctl disable --now NetworkManager
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.116.114
PREFIX=24
​
[root@localhost network-scripts]# ifdown ens33 ; ifup ens33
[root@localhost network-scripts]# vim ifcfg-ens34
TYPE=Ethernet
BOOTPROTO=static
NAME=ens34
DEVICE=ens34
ONBOOT=yes
IPADDR=192.168.117.114
PREFIX=24
​
[root@localhost network-scripts]# ifdown ens34 ; ifup ens34
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# vim /etc/sysctl.conf
插入:net.ipv4.ip_forward = 1
[root@localhost network-scripts]# sysctl -p
net.ipv4.ip_forward = 1
#将ens33设置为VMnet2(仅主机模式)、ens34设置为VMnet3(仅主机模式)
[root@localhost network-scripts]# route add -net 192.168.115.0/24 gw 192.168.116.117
​
#进入虚拟机1
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.115.112
PREFIX=24
GATEWAY=192.168.115.114
DNS1=192.168.115.2
​
#进入虚拟机2
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.116.113
PREFIX=24
GATEWAY=192.168.117.114
DNS1=192.168.117.2
​
[root@localhost network-scripts]# ifdown ens33 ; ifup ens33
#将ens33设置为VMnet3(仅主机模式)

二、网络连接查看

1、netstat

作用

  • 查看本地服务的网络监听状态

  • 查看客户端连接到本地服务的连接状态

语法

bash 复制代码
netstat  选项 (-anptu)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      797/rpcbind         
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1481/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1224/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1220/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1498/master         
tcp        0      0 192.168.115.112:48884   202.202.1.140:80        ESTABLISHED 2462/python         
tcp        0      0 192.168.115.112:46794   210.28.130.3:80         TIME_WAIT   -                   
tcp        0      0 192.168.115.112:34178   210.44.151.62:80        TIME_WAIT   -                   
tcp        0      0 192.168.115.112:60438   124.70.125.153:80       TIME_WAIT   -                   
tcp        0      0 192.168.115.112:34186   210.44.151.62:80        TIME_WAIT   -                   
tcp        0      0 192.168.115.112:34688   59.72.66.10:80          TIME_WAIT   -                   
tcp        0      0 192.168.115.112:51620   39.155.141.16:80        TIME_WAIT   -                   
tcp        0      0 192.168.115.112:46796   210.28.130.3:80         TIME_WAIT   -                   
tcp        0      0 192.168.115.112:53846   44.238.81.22:443        ESTABLISHED 2092/geoclue        
tcp        1      0 192.168.115.112:49812   35.180.43.213:80        CLOSE_WAIT  2462/python         
tcp        0      0 192.168.115.112:46930   211.68.71.121:80        TIME_WAIT   -                   
tcp        0      0 192.168.115.112:34716   59.72.66.10:80          TIME_WAIT   -                   
tcp        0      0 192.168.115.112:49614   120.201.228.227:80      TIME_WAIT   -                   
tcp        0      0 192.168.115.112:56660   202.141.176.110:80      TIME_WAIT   -                   
tcp        0      0 192.168.115.112:49134   117.147.202.12:80       TIME_WAIT   -                   
tcp        0      0 192.168.115.112:56664   202.141.176.110:80      TIME_WAIT   -                   
tcp        0      0 192.168.115.112:51628   39.155.141.16:80        TIME_WAIT   -                   
tcp        0      0 192.168.115.112:53992   101.6.15.130:80         TIME_WAIT   -                   
tcp        0      0 192.168.115.112:54004   101.6.15.130:80         TIME_WAIT   -                   
tcp        0      0 192.168.115.112:49136   117.147.202.12:80       TIME_WAIT   -                   
tcp        0      0 192.168.115.112:48886   202.202.1.140:80        TIME_WAIT   -                   
tcp6       0      0 :::111                  :::*                    LISTEN      797/rpcbind         
tcp6       0      0 :::22                   :::*                    LISTEN      1224/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1220/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1498/master         
udp        0      0 0.0.0.0:966             0.0.0.0:*                           797/rpcbind         
udp        0      0 192.168.122.1:53        0.0.0.0:*                           1481/dnsmasq        
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1481/dnsmasq        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           797/rpcbind         
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           795/avahi-daemon: r 
udp        0      0 0.0.0.0:55584           0.0.0.0:*                           795/avahi-daemon: r 
udp        0      0 127.0.0.1:323           0.0.0.0:*                           852/chronyd         
udp6       0      0 :::966                  :::*                                797/rpcbind         
udp6       0      0 :::111                  :::*                                797/rpcbind         
udp6       0      0 ::1:323                 :::*                                852/chronyd   

选项

bash 复制代码
-n, --numeric 
​
显示数字形式地址而不是去解析主机、端口或用户名。
​
-a, --all
​
显示所有的监听或连接状态
​
-p, --program
​
显示连接所属进程的PID和名称。
​
-t,--tcp
​
显示TCP连接
​
-u,--udp
​
显示UDP连接
​
-l
​
查看监听

2、ss

作用

  • 查看本地服务的网络监听状态

  • 查看客户端连接到本地服务的连接状态

语法

bash 复制代码
ss  选项 (-anptuli)

选项

bash 复制代码
-n, --numeric 
​
显示数字形式地址而不是去解析主机、端口或用户名。
​
-a, --all
​
显示所有的监听或连接状态
​
-p, --program
​
显示连接所属进程的PID和名称。
​
-t,--tcp
​
显示TCP连接
​
-u,--udp
​
显示UDP连接
​
-i,--info
​
查看客户端连接到本地的状态
​
-l
​
查看监听

开启Linux服务的路由功能

bash 复制代码
vim /etc/sysctl.conf
​
内核参数修改配置文件
​
添加
​
net.ipv4.ip_forward = 1
​
sysctl -p
​
加载配置

3、bond绑定

将多个物理网卡进行排列组合,形成逻辑网卡,网卡的高可用

3.1、绑定模式

  • mode0(平衡负载模式):平时两块网卡均工作,且自动备援,但需要在与服务器本地 网卡相连的交换机设备上进行端口聚合来支持绑定技术。

  • mode1(自动备援模式):平时只有一块网卡工作,在它故障后自动替换为另外的网卡。

  • mode6(平衡负载模式):平时两块网卡均工作,且自动备援,无须交换机设备提供辅助支持。

3.2、绑定案例

1、基于CentOS7操作系统

服务器有两块网卡 ens33和ens36

ens34操作

bash 复制代码
TYPE=ethernet
​
BOOTPROTO=none
​
NAME=ens34
​
DEVICE=ens34
​
ONBOOT=yes
​
MASTER=bond0
​
SLAVE=yes
​

ens37操作

bash 复制代码
TYPE=ethernet
​
BOOTPROTO=none
​
NAME=ens37
​
DEVICE=ens37
​
ONBOOT=yes
​
MASTER=bond0
​
SLAVE=yes

bond0操作

bash 复制代码
TYPE=ethernet
​
BOOTPROTO=none
​
NAME=bond0
​
DEVICE=bond0
​
ONBOOT=yes
​
IPADDR=192.168.1.1
​
PREFIX=24
​
GATEWAY=192.168.1.254
​
DNS1=192.168.1.254

添加bond配置文件

bash 复制代码
vim /etc/modprobe.d/bond.conf
​
alias bond0 bonding
​
options bonding mode=6 miimon=200

关闭网络图形化服务

bash 复制代码
systemctl stop NetworkManager  【关闭后开机失效】
systemctl disable --now NetworkManager   【关闭且开机不自启】

重启网络服务

bash 复制代码
ifup ens34 && ifup ens37 && ifup bond0
​
systemctl restart network #重启会出现启动失败,但是bond绑定是OK的!!!
2、基于OpenEuler(国内的信创项目)

好的,以下是 nmcli 命令中 Bonding 模式的所有选项及其详细含义的完整列表。

Bonding 模式列表及含义

nmcli 中,使用 mode 参数来指定 Bonding 模式。以下是所有可用的模式:

NMCLI 模式值 模式编号 中文名称 含义及特点
balance-rr mode-0 轮询 特点 : 数据包按顺序依次从每个 Slave 接口发送。 优点 : 提供负载均衡和容错能力。 缺点 : 需要交换机支持端口聚合,否则可能导致网络混乱。 交换机要求: 必须配置为静态聚合或 LACP。
active-backup mode-1 主备 特点 : 只有一个 Slave 接口处于活动状态,其他作为备份。只有在活动接口故障时,备份接口才被激活。 优点 : 提供高可用性,配置简单,交换机无需特殊配置。 缺点 : 不能增加带宽,资源利用率低。 交换机要求: 无特殊要求。
balance-xor mode-2 异或 特点 : 基于 (源MAC地址 ⊕ 目标MAC地址) % Slave数量 来选择发送接口。 优点 : 为同一对话提供负载均衡和容错,保证数据包顺序。 缺点 : 流量分布可能不均衡。 交换机要求: 必须配置为静态聚合或 LACP。
broadcast mode-3 广播 特点 : 所有数据包都从所有 Slave 接口发送。 优点 : 提供极高的容错能力。 缺点 : 极度浪费带宽,通常只用于非常特殊的场景。 交换机要求: 无特殊要求。
802.3ad mode-4 动态链路聚合 (LACP) 特点 : IEEE 802.3ad 标准模式。使用 LACP 协议与交换机动态协商和监控聚合链路。 优点 : 标准的链路聚合,提供负载均衡、高可用性和良好的监控能力。 缺点 : 需要交换机支持并正确配置 LACP。 交换机要求 : 必须配置为 LACP 模式(主动或被动)。
balance-tlb mode-5 自适应传输负载均衡 特点 : 根据每个 Slave 的当前负载进行出口流量(发送)的负载均衡。入口流量(接收)由当前 Slave 处理。 优点 : 不需要交换机特殊配置。 缺点 : 只有出口流量被均衡,容错能力较弱(故障切换时可能导致ARP问题)。 交换机要求: 无特殊要求。
balance-alb mode-6 自适应负载均衡 特点 : 在 mode-5 (tlb) 的基础上,增加了入口流量(接收)的负载均衡,通过ARP协商实现。 优点 : 提供出口和入口的负载均衡,且不需要交换机特殊支持。 缺点 : 在软件层实现,会消耗更多主机CPU资源。 交换机要求: 无特殊要求。

nmcli 命令中的使用示例

创建 Bond 连接时,使用 mode 参数指定上述任一模式:

bash 复制代码
# 示例:创建 mode-4 (LACP) 绑定
nmcli connection add type bond con-name my-bond0 ifname bond0 \
    mode 802.3ad \
    ipv4.method auto
​
# 示例:创建 mode-1 (主备) 绑定
nmcli connection add type bond con-name my-bond0 ifname bond0 \
    mode active-backup \
    ip4 192.168.1.100/24 \
    gw4 192.168.1.1 \
    ipv4.method manual
​
# 示例:创建 mode-6 (自适应负载均衡) 绑定
nmcli connection add type bond con-name my-bond0 ifname bond0 \
    mode balance-alb \
    ipv4.method auto

查看当前系统支持的所有模式

虽然 nmcli 本身不直接列出模式,但您可以通过查看内核文档或帮助信息来确认支持的模式:

bash 复制代码
# 查看 bond 连接的帮助信息,其中会包含 mode 参数的简要说明
nmcli connection add type bond help

更详细的信息通常需要查阅官方文档或内核的 bonding 文档:

bash 复制代码
# 查看系统上的 bonding 文档(如果已安装)
modinfo bonding | grep -i description
总结与选择建议
场景 推荐模式 原因
标准数据中心 802.3ad (mode-4) 需要交换机支持。是行业标准,提供最好的性能和可靠性。
高可用性 (HA) active-backup (mode-1) 配置简单,交换机无要求。主要目标是故障切换而非带宽聚合。
无交换机支持 balance-alb (mode-6) 不需要配置交换机,能同时实现出入向流量的负载均衡。
极简负载均衡 balance-tlb (mode-5) 不需要配置交换机,但只均衡出口流量。
特定网络需求 balance-xor (mode-2) 适用于需要保持数据包顺序的特定应用。

希望这个完整的列表和解释能帮助您更好地理解和使用 nmcli 进行 Bonding 配置。

bond0设置
bash 复制代码
nmcli c ad type bond con-name bond0 ifname bond0 mode balance-alb

3、基于Rocky9

好的,以下是 Rocky Linux 9 上使用 nmcli 配置 Bonding 的完整过程。我们将以最常用的 mode-4 (802.3ad/LACP) 为例,并提供其他模式的调整方法。

前置条件

  1. 至少有两个物理网卡(例如 ens192ens224)可供绑定。

  2. 确保网络连接稳定,或直接在本地终端操作。

  3. 具有 root 权限。


完整配置步骤

步骤 1:确认网卡状态和名称

Rocky Linux 9 通常使用类似 ensXX, enpXsX, ethX 的网卡命名方式。

bash 复制代码
nmcli device status

输出示例:

bash 复制代码
DEVICE      TYPE      STATE      CONNECTION
ens192      ethernet  disconnected      --
ens224      ethernet  disconnected      --
lo          loopback  unmanaged         --

记下你要绑定的网卡名称,本例中使用 ens192ens224

步骤 2:创建 Bonding 连接

使用以下命令创建 Bond 接口。请根据您的网络环境修改 IP 地址、网关等参数。

对于静态 IP 配置:

bash 复制代码
nmcli connection add type bond con-name bond0 ifname bond0 \
    mode 802.3ad \
    ip4 192.168.1.100/24 \
    gw4 192.168.1.1 \
    ipv4.dns "8.8.8.8,1.1.1.1" \
    ipv4.method manual

对于 DHCP 自动获取 IP:

bash 复制代码
nmcli connection add type bond con-name bond0 ifname bond0 \
    mode 802.3ad \
    ipv4.method auto
步骤 3:将物理网卡添加为从属接口
bash 复制代码
# 添加第一个从属网卡
nmcli connection add type bond-slave con-name bond-slave-ens192 ifname ens192 master bond0
​
# 添加第二个从属网卡  
nmcli connection add type bond-slave con-name bond-slave-ens224 ifname ens224 master bond0
步骤 4:激活 Bond 连接
bash 复制代码
nmcli connection up bond0
步骤 5:验证配置

检查网络设备状态:

bash 复制代码
nmcli device status

输出应该显示 bond0 和它的从属接口都已连接:

bash 复制代码
DEVICE      TYPE      STATE      CONNECTION
bond0       bond      connected  bond0
ens192      ethernet  connected  bond-slave-ens192
ens224      ethernet  connected  bond-slave-ens224

查看详细的 Bonding 状态:

bash 复制代码
cat /proc/net/bonding/bond0

检查 IP 地址配置:

bash 复制代码
ip addr show bond0

测试网络连通性:

bash 复制代码
ping -c 4 8.8.8.8

配置其他 Bonding 模式

如果要使用其他模式,只需在创建 Bond 连接时修改 mode 参数:

Mode-1 (active-backup) - 主备模式
bash 复制代码
nmcli connection add type bond con-name bond0 ifname bond0 \
    mode active-backup \
    ip4 192.168.1.100/24 \
    gw4 192.168.1.1 \
    ipv4.method manual
Mode-6 (balance-alb) - 自适应负载均衡
bash 复制代码
nmcli connection add type bond con-name bond0 ifname bond0 \
    mode balance-alb \
    ip4 192.168.1.100/24 \
    gw4 192.168.1.1 \
    ipv4.method manual
Mode-0 (balance-rr) - 轮询模式
bash 复制代码
nmcli connection add type bond con-name bond0 ifname bond0 \
    mode balance-rr \
    ip4 192.168.1.100/24 \
    gw4 192.168.1.1 \
    ipv4.method manual

完整自动化脚本

您可以创建一个脚本来自动化整个过程:

bash 复制代码
#!/bin/bash
# Rocky Linux 9 Bonding 配置脚本
# 使用方法: ./configure_bond.sh
​
# 配置参数 - 请根据您的环境修改
BOND_CONN_NAME="bond0"
BOND_IFNAME="bond0"
BOND_MODE="802.3ad"  # 可改为: active-backup, balance-alb, balance-rr
BOND_IP="192.168.1.100/24"
BOND_GW="192.168.1.1"
DNS_SERVERS="8.8.8.8,1.1.1.1"
SLAVE1_IFNAME="ens192"
SLAVE2_IFNAME="ens224"
​
echo "=== 开始配置 Bonding ==="
​
# 1. 检查网卡是否存在
echo "检查网卡设备..."
if ! nmcli device | grep -q "$SLAVE1_IFNAME"; then
    echo "错误: 网卡 $SLAVE1_IFNAME 不存在!"
    exit 1
fi
​
if ! nmcli device | grep -q "$SLAVE2_IFNAME"; then
    echo "错误: 网卡 $SLAVE2_IFNAME 不存在!"
    exit 1
fi
​
# 2. 删除可能存在的现有配置
echo "清理现有配置..."
nmcli connection delete "$BOND_CONN_NAME" 2>/dev/null
nmcli connection delete "bond-slave-$SLAVE1_IFNAME" 2>/dev/null
nmcli connection delete "bond-slave-$SLAVE2_IFNAME" 2>/dev/null
​
# 3. 创建 Bond 连接
echo "创建 Bond 连接..."
nmcli connection add type bond con-name "$BOND_CONN_NAME" ifname "$BOND_IFNAME" \
    mode "$BOND_MODE" \
    ip4 "$BOND_IP" \
    gw4 "$BOND_GW" \
    ipv4.dns "$DNS_SERVERS" \
    ipv4.method manual
​
# 4. 创建从属连接
echo "添加从属网卡..."
nmcli connection add type bond-slave con-name "bond-slave-$SLAVE1_IFNAME" ifname "$SLAVE1_IFNAME" master "$BOND_CONN_NAME"
nmcli connection add type bond-slave con-name "bond-slave-$SLAVE2_IFNAME" ifname "$SLAVE2_IFNAME" master "$BOND_CONN_NAME"
​
# 5. 激活 Bond
echo "激活 Bond 连接..."
nmcli connection up "$BOND_CONN_NAME"
​
# 6. 验证配置
echo "=== 验证配置 ==="
echo "网络设备状态:"
nmcli device status
​
echo -e "\nBonding 状态:"
cat /proc/net/bonding/bond0 | head -20
​
echo -e "\nIP 地址信息:"
ip addr show bond0
​
echo -e "\n=== Bonding 配置完成 ==="
保存为 configure_bond.sh,赋予执行权限后运行:

chmod +x configure_bond.sh
./configure_bond.sh

管理和故障排除命令

查看所有连接配置:

bash 复制代码
nmcli connection show

查看具体连接的详细配置:

bash 复制代码
nmcli connection show bond0

重新加载连接:

bash 复制代码
nmcli connection reload

完全删除 Bond 配置:

bash 复制代码
nmcli connection delete bond0
nmcli connection delete bond-slave-ens192
nmcli connection delete bond-slave-ens224

查看系统日志:

bash 复制代码
journalctl -xe -u NetworkManager

重要注意事项

  1. 交换机配置:对于 mode-4 (802.3ad),必须在交换机端相应端口上启用 LACP。

  2. 网络中断:配置过程中会出现短暂网络中断,建议在本地控制台操作。

  3. 持久化 :使用 nmcli 配置会自动持久化,重启后配置仍然有效。

  4. 防火墙:如果启用了防火墙,确保相应的防火墙规则已配置。

4、Linux下的抓包工具

tcpdump

语法

bash 复制代码
tcpdump  -i  网卡名

选项

bash 复制代码
-c  
​
当 收到多少个报文后退出
​
-i  
​
监听  interface.  如果 不指定 接口, tcpdump 在 系统 的 接口 清单 中,寻找 号码最小, 已经 配置好的 接口 (loopback 除外). 选中的时候会中断连接.
​
-n 
​
不要把地址转换成 名字 (指的是 主机地址, 端口号等)
​
-t 
​
禁止 显示 时戳标志.
​
-v  
​
(稍微多一点)  繁琐的输出.  例如,  显示  IP  数据报  中的  生存周期 和服务类型.
​
-e  
​
显示 链路层报头

额外参数

bash 复制代码
dst port portNumber
​
抓取目标端口为portNumber的报文
​
port portNumber
​
抓取端口为portNumber的报文
​
src port portNumber
​
抓取源端口为portNumber的报文

案例

抓取客户端访问本机80号端口的1000个报文

bash 复制代码
tcpdump -tn dst port 80 -c 1000 -i bond0 
Wireshark
复制代码

5、web压力测试工具

bash 复制代码
ab -c 100 -n 2000 http://192.168.1.254/

6、路由追踪命令

bash 复制代码
traceroute  目标地址或域名
相关推荐
AOwhisky12 分钟前
Ceph系列第三期:Ceph 集群核心配置与管理
linux·运维·数据库·笔记·ceph
香气袭人知骤暖12 分钟前
人大金仓(KingbaseES)Docker 容器自动备份方案
运维·docker·容器
天疆说16 分钟前
在 Ubuntu 上安装 NASA GMAT R2026a 轨道设计软件
linux·运维·ubuntu
铅笔小新z25 分钟前
【Linux】线程同步与互斥
linux·服务器
武雄(小星Ai)31 分钟前
Gemini CLI 免费用户6月18日停服,Google Antigravity 2.0 深度解读
运维·人工智能·agent
大熊程序猿42 分钟前
MarkItDown Docker安装
运维·docker·容器
狗凯之家源码网1 小时前
漫城 CMS2.7.1 漫画小说阅读系统二次开发分享(三端适配版)
php
AI行业学习1 小时前
CC-Switch 下载、安装windows\macOS \Linux 安装
linux·运维·macos
江南风月1 小时前
WGCLOUD监控系统的Restful Http接口一览
运维·zabbix·运维开发·prometheus
KaMeidebaby1 小时前
卡梅德生物技术快报|基因测序技术在 46,XY 性发育障碍变异筛查中的流程与数据分析
服务器·前端·数据库·人工智能·算法·数据挖掘·数据分析