零基础从头教学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 a[ddress]命令

查看网络参数,可以查看到未启用的网卡列表,能够查看基于配置文件实现的多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  目标地址或域名
相关推荐
ajassi20002 分钟前
开源 C++ QT Widget 开发(七)线程--多线程及通讯
linux·c++·qt·开源
孤雪心殇14 分钟前
如何安全,高效,优雅的提升linux的glibc版本
linux·后端·golang·glibc
王火火(DDoS CC防护)24 分钟前
服务器网络带宽不足要怎么处理?
运维·服务器
潇凝子潇24 分钟前
获取服务器指标的信息
linux·运维·服务器
FreeBuf_36 分钟前
Chrome高危零日漏洞PoC公开,已被用于野外攻击
linux·运维·服务器·安全·web安全
初学者_xuan3 小时前
Linux程序与进程和进程程序基础以及程序管理(零基础掌握版)
运维·计算机网络·网络安全·零基础·学习方法·linux程序管理
天上掉下来个程小白3 小时前
微服务-27.配置管理-什么是配置管理
运维·微服务·架构
古月-一个C++方向的小白4 小时前
Linux初始——基础指令篇
linux·运维·服务器
信工 18024 小时前
中断下文---linux驱动开发
linux·驱动开发