[ Content contribution] [技术分享]Linux网络管理
Tofloor
poster avatar
废物头子
deepin
2023-11-02 02:49
Author

网络管理

  • 网络管理
    • 一、网络基本概念
    • 二、Linux网络管理
      • (1)网卡命名规则
      • (2)网卡名称回退
      • (3)查看网络信息
      • (4)网络管理工具
        • ip
        • ifconfig
        • network_scripts
        • NetworkManager
          • 命令行:nmcli
          • 图形化:nmtui
      • (5)主机名管理
      • (6)端口管理
    • 三、Linux高级网络管理
      • (1)双网卡绑定——bond
      • (2)双网卡绑定操作

一、网络基本概念

  • IP地址:IP地址是一个32位的二进制数,用点分十进制表示,分为网络位和主机位。
  • 掩码:用于表示一个IP地址的网络位长度。
  • 网关:当需要和其他网段通信时的出口,网关通常只想本地路由器的接口IP。
  • DNS:域名解析系统,用于域名和IP地址的相互解析。

二、Linux网络管理

(1)网卡命名规则

在rhel7之前,Linux的网卡根据网络接口的读取顺序依次命名为eth0、eth1、eth2……,这种命名方式会使系统每次开机的时候因为网络接口读取顺序不同,网卡名称变化,导致系统无法上网。

在rhel7之后,Linux网卡命名开始基于硬件基础上分配固定名称。

  • 接口类型
    • 以太网接口——en
    • 无线局域网接口——wl
    • 无线广域网接口——ww
  • 适配器类型
    • 热插拔插槽——s
    • 板载——o
    • PCI类型支持——p

eg:ens160表示这是一个以太网接口,并且该网络接口支持热插拔,160为一个随机ID。

(2)网卡名称回退

某些情况下,当我们需要批量给服务器配置IP地址的时候,新的网卡命名规则并不方便我们去使用脚本批量配置,这个时候,我们就需要使用传统的命名规则,将网卡名字统一为eth0。要使用传统命名规则,服务器必需只有一块网卡,否则传统命名规则的弊端仍然会出现。

配置如下:

编辑/etc/default/grub配置文件,在GRUB_CMDLINE_LINUX行中rhgb前添加net.ifnames=0 biosdevname=0。
[root@localhost ~]# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap net.ifnames=0 biosdevname=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

生成新的引导文件
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg 
Generating grub configuration file ...
Adding boot menu entry for UEFI Firmware Settings ...
done

重启系统
[root@localhost ~]# reboot

(3)查看网络信息

ip address:查看所有接口的网络信息

[root@localhost ~]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160:  mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:9f:97:24 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.211.15/24 brd 192.168.211.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::c20e:94ac:3c17:968a/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

ifconfig:查看生效接口的IP地址,使用 -a选项可以查看所有接口的IP地址

[root@localhost ~]# ifconfig 
ens160: flags=4163  mtu 1500
        inet 192.168.211.15  netmask 255.255.255.0  broadcast 192.168.211.255
        inet6 fe80::c20e:94ac:3c17:968a  prefixlen 64  scopeid 0x20
        ether 00:0c:29:9f:97:24  txqueuelen 1000  (Ethernet)
        RX packets 276  bytes 31596 (30.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 179  bytes 18827 (18.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 76  bytes 8833 (8.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 76  bytes 8833 (8.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

两种查看IP地址方式的区别:

  • ip命令是系统内核自带的命令,ifconfig部分情况下需要安装net-tools包。
  • IP命令可以查看一个接口上的所有IP地址,而ifconfig只能查看接口上一个IP地址。
[root@localhost ~]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160:  mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:9f:97:24 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.211.15/24 brd 192.168.211.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.211.26/24 brd 192.168.211.255 scope global secondary noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::c20e:94ac:3c17:968a/64 scope link tentative noprefixroute 
       valid_lft forever preferred_lft forever
[root@localhost ~]# ifconfig -a
ens160: flags=4163  mtu 1500
        inet 192.168.211.15  netmask 255.255.255.0  broadcast 192.168.211.255
        inet6 fe80::c20e:94ac:3c17:968a  prefixlen 64  scopeid 0x20
        ether 00:0c:29:9f:97:24  txqueuelen 1000  (Ethernet)
        RX packets 302  bytes 34415 (33.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 232  bytes 24425 (23.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 80  bytes 9181 (8.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 80  bytes 9181 (8.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

route -n:查看内核的路由条目

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.211.2   0.0.0.0         UG    100    0        0 ens160
127.0.0.0       0.0.0.0         255.0.0.0       U     30     0        0 lo
192.168.211.0   0.0.0.0         255.255.255.0   U     100    0        0 ens160

cat /etc/resolv.conf:查看DNS地址(该文件不要手动修改,重启系统或者接口都会重置该文件)

[root@localhost ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search localdomain	
nameserver 192.168.211.2

(4)网络管理工具

rhel7之前Linux系统都是使用network_scripts网络管理的脚本来负责网络管理。

rhel7开始可以同时使用network_scripts和NetworkManager管理网络。

rhel8开始默认只能使用NetworkManger管理网络,使用network_scripts需要单独去安装对应软件包

rhel9开始只能使用NetworkManger管理网络,并且将网络管理的配置文件更改成了ini的格式。

ip
启用或者禁用网络接口
[root@rhce ~]# ip link set ens160 up
[root@rhce ~]# ip link set ens160 down

给网络接口添加或删除一个IP地址
[root@rhce ~]# ip addr add dev ens160 172.16.10.100/24
[root@rhce ~]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160:  mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:0c:29:9f:97:24 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.211.129/24 brd 192.168.211.255 scope global dynamic noprefixroute ens160
       valid_lft 1223sec preferred_lft 1223sec
    inet 172.16.10.100/24 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::5907:3623:d663:abeb/64 scope link tentative noprefixroute 
       valid_lft forever preferred_lft forever
[root@rhce ~]# ip addr del dev ens160 172.16.10.100/24
[root@rhce ~]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160:  mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:0c:29:9f:97:24 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.211.129/24 brd 192.168.211.255 scope global dynamic noprefixroute ens160
       valid_lft 1201sec preferred_lft 1201sec
    inet6 fe80::5907:3623:d663:abeb/64 scope link tentative noprefixroute 
       valid_lft forever preferred_lft forever

添加或删除一个路由
[root@rhce ~]# ip route add 192.168.0.0/16 via 192.168.211.2 dev ens160
[root@rhce ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.211.2   0.0.0.0         UG    100    0        0 ens160
192.168.0.0     192.168.211.2   255.255.0.0     UG    0      0        0 ens160
192.168.211.0   0.0.0.0         255.255.255.0   U     100    0        0 ens160
[root@rhce ~]# ip route del 192.168.0.0/16 
[root@rhce ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.211.2   0.0.0.0         UG    100    0        0 ens160
192.168.211.0   0.0.0.0         255.255.255.0   U     100    0        0 ens160

ifconfig
启用或者禁用网络接口
[root@rhce ~]# ifconfig ens160 down
[root@rhce ~]# ifconfig
lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 18  bytes 2106 (2.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 18  bytes 2106 (2.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@rhce ~]# ifconfig ens160 up
[root@rhce ~]# ifconfig 
ens160: flags=4163  mtu 1500
        inet 192.168.211.129  netmask 255.255.255.0  broadcast 192.168.211.255
        inet6 fe80::5907:3623:d663:abeb  prefixlen 64  scopeid 0x20
        ether 00:0c:29:9f:97:24  txqueuelen 1000  (Ethernet)
        RX packets 2  bytes 410 (410.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13  bytes 2180 (2.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 18  bytes 2106 (2.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 18  bytes 2106 (2.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
network_scripts

该工具由 network-scripts.x86_64软件包提供,在rhel8中如果需要使用该工具可以通过 yum -y install network-scripts命令安装该软件包。

网络配置文件所在位置:/etc/sysconfig/network-scripts,各网卡的命名为ifcfg-网卡名,如ifcfg-ens160。文件内容介绍如下。

TYPE=Ethernet									//接口类型
PROXY_METHOD=none								//代理方式
BROWSER_ONLY=no									//只用于浏览器,该选项只有开启代理才有意义
BOOTPROTO=dhcp									//ip地址获取方式,dhcp/auto表示自动获取IP地址
															    none/static表示手动配置
DEFROUTE=yes									//是否将网关作为默认路由
IPV4_FAILURE_FATAL=no							//ipv4地址错误检测
IPV6INIT=yes									//开启IPv6
IPV6_AUTOCONF=yes								//自动配置IPv6地址
IPV6_DEFROUTE=yes								//将IPv6网关作为默认路由
IPV6_FAILURE_FATAL=no							//IPv6地址错误检测
NAME=ens160										//网卡配置文件名
UUID=e619274a-4be5-49e8-b2bf-14a4c69d0771      	//网卡标识符
DEVICE=ens160									//设备名
ONBOOT=yes										//网卡是否开机自启

手动配置IP地址
BOOTPROTO=none|static						   //设置IP地址获取方式
IPADDRES=192.168.211.100						//IP地址
NETMASK=255.255.255.0						 	//掩码地址
PREFIX=24										//掩码长度		掩码长度和掩码地址二者选择一个即可
GATEWAY=192.168.211.2							//网关
DNS1=114.114.114.114							//dns地址,DNS后必选有1
修改完成后,重启网卡
[root@localhost ~]# systemctl restart network
NetworkManager

从红帽7开始就逐渐开始使用NetworkManager来进行网络管理,使用network_scripts工具在后续需要完整双网卡绑定等操作的时候十分不便,使用NetworkManager工具可以较为方便完成这些高级操作。

命令行:nmcli

语法:

nmcli [OPTIONS...] {help | general | networking | radio | connection | device | agent | monitor} [COMMAND] [ARGUMENTS...]

对设备管理
(1)查看网卡状态
[root@rhce ~]# nmcli device 
DEVICE  TYPE      STATE                   CONNECTION 
ens160  ethernet  connected               ens160   
lo      loopback  connected (externally)  lo   

(2)断开网卡和配置文件的连接
[root@rhce ~]# nmcli device disconnect ens160 
Device 'ens160' successfully disconnected.
[root@rhce ~]# nmcli device 
DEVICE  TYPE      STATE                   CONNECTION 
lo      loopback  connected (externally)  lo   
ens160  ethernet  disconnected            -- 

(3)重新连接网卡和配置文件   
[root@rhce ~]# nmcli device connect ens160 
Device 'ens160' successfully activated with '7f2a4ccc-84ad-4a33-ab1b-412316043b31'.
[root@rhce ~]# nmcli device 
DEVICE  TYPE      STATE                   CONNECTION 
ens160  ethernet  connected               ens160   
lo      loopback  connected (externally)  lo  
注:当网卡没有对应的配置文件的时候,重新连接配置文件会创建一个同名的网卡配置文件,使用DHCP的方式获取IP地址。

对网卡管理
(1)查看网卡配置文件
[root@rhce ~]# nmcli connection show 
NAME      UUID                                  TYPE      DEVICE 
ens160    7f2a4ccc-84ad-4a33-ab1b-412316043b31  ethernet  ens160 
lo        092459ff-cab0-4b18-893a-6b6c012f42fc  loopback  lo   
ens160-1  14aa7a1d-4325-4bef-a0ef-42ded63fa29a  ethernet  --   

(2)添加一个网卡配置文件
[root@rhce ~]# nmcli connection add type ethernet ifname ens160 con-name ens160-2 ipv4.method manual ipv4.addresses 192.168.211.200/24 ipv4.gateway 192.168.211.2 ipv4.dns 114.114.114.114 autoconnect yes 
Connection 'ens160-2' (07459ee5-7e5d-482e-9cbe-bdab692b3c3b) successfully added.
[root@rhce ~]# nmcli connection show 
NAME      UUID                                  TYPE      DEVICE 
ens160    7f2a4ccc-84ad-4a33-ab1b-412316043b31  ethernet  ens160 
lo        092459ff-cab0-4b18-893a-6b6c012f42fc  loopback  lo   
ens160-1  14aa7a1d-4325-4bef-a0ef-42ded63fa29a  ethernet  --   
ens160-2  07459ee5-7e5d-482e-9cbe-bdab692b3c3b  ethernet  --  

type:网络类型
ifname:网卡设备名
con-name:配置文件名 
ipv4.method:获取IP地址方式,manual为手动配置,auto为dhcp获取。
ipv4.address:配置的IP地址和掩码
ipv4.gateway:配置网关
ipv4.dns:配置的dns地址
autoconnect:是否开机激活此链接。

nmcli connection add type 网络类型 ifname 网卡设备名 con-name 配置文件名 ipv4.method 获取方式 ipv4.address IP地址 ipv4.gateway 网关 ipv4.dns dns地址 autoconnect yes

(3)修改IP地址
[root@rhce ~]# nmcli connection modify ens160 ipv4.addresses 192.168.211.120/24

(4)重新读取配置文件
[root@rhce ~]# nmcli connection up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/12)

(5)删除配置文件
[root@rhce ~]# nmcli connection delete ens160-2
Connection 'ens160-2' (07459ee5-7e5d-482e-9cbe-bdab692b3c3b) successfully deleted.

(6)手动修改文件后重新读取
[root@rhce ~]# nmcli connection reload 
图形化:nmtui

nmtui是NetworkManager的图形化工具,该工具不论是否安装了桌面,都可以使用图形化进行网络管理。

(5)主机名管理

hostname命令显示或临时修改系统的完全限定主机名。可以在/etc/hostname文件中指定主机名。hostnamectl命令用于修改此文件,也可以查看系统信息。

[root@localhosr ~]# hostname
localhosr.localdomain
[root@localhosr ~]# hostname rhce
[root@localhosr ~]# su -
[root@rhce ~]# 
[root@rhce ~]# hostnamectl 
 Static hostname: rhce
       Icon name: computer-vm
         Chassis: vm 🖴
      Machine ID: 94dcd48d2f294c78b375e24d967b26ad
         Boot ID: 72c071c6ba7a4d42b4de8843c1512a28
  Virtualization: vmware
Operating System: Red Hat Enterprise Linux 9.2 (Plo…
     CPE OS Name: cpe:/o:redhat:enterprise_linux:9:…
          Kernel: Linux 5.14.0-284.11.1.el9_2.x86_64
    Architecture: x86-64
 Hardware Vendor: VMware, Inc.
  Hardware Model: VMware Virtual Platform
Firmware Version: 6.00

修改主机名
[root@rhce ~]# hostnamectl set-hostname rhce

(6)端口管理

在系统中服务使用套接字作为通信的端点,表示方式为——IP地址:端口号。服务通常侦听标准端口,而客户端则使用随机的客用端口。Linux中/etc/services文件中列出了大部分服务的标准端口。

[root@rhce ~]# cat /etc/services  | grep mysql
mysql           3306/tcp                        # MySQL
bootpc          68/tcp          dhcpc           # BOOTP client
服务名称		 端口/协议         服务别名			服务的注释和说明

查看系统使用的端口,在RHEL8之前使用netstat命令来查看端口,RHEL8之后开始使用ss命令来查看端口。ss只能在RHEL8之后版本使用,之前的版本需要手动安装ss命令。

常用选项
-n			显示接口和端口的编号,不显示名称
-t			显示TCP的套接字
-u			显示UDP的套接字
-l			仅显示侦听中的套接子
-a			显示所有的套接字
-p			显示套接字进程。

eg:
[root@rhce ~]# netstat -ntulap
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:22              0.0.0.0:*               LISTEN      1035/sshd: /usr/sbi 
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1033/cupsd    
tcp6       0      0 :::22                   :::*                    LISTEN      1035/sshd: /usr/sbi 
tcp6       0      0 :::9090                 :::*                    LISTEN      1/systemd     
tcp6       0      0 ::1:631                 :::*                    LISTEN      1033/cupsd    
udp        0      0 192.168.211.129:68      192.168.211.254:67      ESTABLISHED 1026/NetworkManager 
udp        0      0 127.0.0.1:323           0.0.0.0:*                           928/chronyd   
udp        0      0 0.0.0.0:43718           0.0.0.0:*                           899/avahi-daemon: r 
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           899/avahi-daemon: r 
udp6       0      0 :::47174                :::*                                899/avahi-daemon: r 
udp6       0      0 ::1:323                 :::*                                928/chronyd   
udp6       0      0 :::5353                 :::*                                899/avahi-daemon: r 

[root@rhce ~]# ss -ntulap
Netid     State      Recv-Q     Send-Q                  Local Address:Port               Peer Address:Port     Process                                  
udp       ESTAB      0          0              192.168.211.129%ens160:68              192.168.211.254:67        users:(("NetworkManager",pid=1026,fd=27))   
udp       UNCONN     0          0                           127.0.0.1:323                     0.0.0.0:*         users:(("chronyd",pid=928,fd=5))        
udp       UNCONN     0          0                             0.0.0.0:43718                   0.0.0.0:*         users:(("avahi-daemon",pid=899,fd=14))  
udp       UNCONN     0          0                             0.0.0.0:5353                    0.0.0.0:*         users:(("avahi-daemon",pid=899,fd=12))  
udp       UNCONN     0          0                                [::]:47174                      [::]:*         users:(("avahi-daemon",pid=899,fd=15))  
udp       UNCONN     0          0                               [::1]:323                        [::]:*         users:(("chronyd",pid=928,fd=6))        
udp       UNCONN     0          0                                [::]:5353                       [::]:*         users:(("avahi-daemon",pid=899,fd=13))  
tcp       LISTEN     0          128                           0.0.0.0:22                      0.0.0.0:*         users:(("sshd",pid=1035,fd=3))          
tcp       LISTEN     0          128                         127.0.0.1:631                     0.0.0.0:*         users:(("cupsd",pid=1033,fd=7))         
tcp       LISTEN     0          128                              [::]:22                         [::]:*         users:(("sshd",pid=1035,fd=4))          
tcp       LISTEN     0          4096                                *:9090                          *:*         users:(("systemd",pid=1,fd=104))        
tcp       LISTEN     0          128                             [::1]:631                        [::]:*         users:(("cupsd",pid=1033,fd=6))  

三、Linux高级网络管理

(1)双网卡绑定——bond

双网卡绑定时高可用业务场景中的必要条件,将多个物理网络做成一个逻辑接口,让网卡在故障的时候,不影响业务的正在运行。

双网卡绑定以下七种模式。

bond级别 bond名称 bond特点 对交换机要求
0 round-robin 按照设备顺序依次传输数据包,提供负载均衡和容错能力。 需要配置trunk
1 active-backup 只有一个设备处理数据,当该设备故障就会由备份代替,仅提高容错能力。 不需要配置trunk
2 load-balancing(xor) 根据MAC地址异或运算的结果来选择传输设备,提供负载均衡和容错能力。 需要配置trunk
3 fault-tolerance(broadcast) 通过全部设备来传输所有数据,提供容错能力。 需要配置trunk
4 lacp 通过创建聚合组来共享相同的传输速度,需要交换机也支持802.3ad模式,提供容错能力。 需要交换机支持802.3d,需要配置trunk
5 transmit load balancing 由负责最轻的网口发送,由当前使用的网口接收,提供负载均衡和容错能力。 不需要配置trunk
6 adaptive load balancing 用负载最近的网卡进行 收发,提供负载均衡和容错能力。 不需要配置trunk

(2)双网卡绑定操作

配置主备的bond,也就是bond1,是基于MAC地址漂移实现的。

配置步骤:

添加bond的虚拟接口
[root@rhce ~]# nmcli connection add type bond ifname bond1 con-name bond1 mode active-backup miimon 1000
Connection 'bond1' (f0f3669a-55d6-4a33-b67b-7b0784ea2cd6) successfully added.

将物理网卡添加到bond的虚拟接口
[root@rhce ~]# nmcli connection add type bond-slave ifname ens160 con-name bond1-ens160 master bond1
Connection 'bond1-ens160' (7b415ca4-10a9-44e3-bbdc-69ae85a18c47) successfully added.
[root@rhce ~]# nmcli connection add type bond-slave ifname ens224 con-name bond1-ens224 master bond1 
Connection 'bond1-ens224' (be1ee70f-779f-4b1c-96fb-aa523947adac) successfully added.

给虚拟接口添加IP地址并启动虚拟接口
[root@rhce ~]# nmcli connection modify bond1 ipv4.method manual ipv4.addresses 192.168.211.100/24 ipv4.gateway 192.168.211.2 ipv4.dns 114.114.114.114 autoconnect yes 
[root@rhce ~]# nmcli connection up bond1
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)
[root@rhce ~]# ifconfig 
bond1: flags=5187  mtu 1500
        inet 192.168.211.100  netmask 255.255.255.0  broadcast 192.168.211.255
        inet6 fe80::5c46:b6d5:2494:d768  prefixlen 64  scopeid 0x20
        ether 00:0c:29:9f:97:24  txqueuelen 1000  (Ethernet)
        RX packets 50  bytes 4734 (4.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 91  bytes 10108 (9.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens160: flags=6211  mtu 1500
        ether 00:0c:29:9f:97:24  txqueuelen 1000  (Ethernet)
        RX packets 10  bytes 910 (910.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 36  bytes 3984 (3.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens224: flags=6211  mtu 1500
        ether 00:0c:29:9f:97:24  txqueuelen 1000  (Ethernet)
        RX packets 5  bytes 320 (320.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

当bond绑定后会生成状态文件/proc/net/bonding/bond1
[root@rhce ~]# cat /proc/net/bonding/bond1 
Ethernet Channel Bonding Driver: v5.14.0-284.11.1.el9_2.x86_64

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: ens160
MII Status: up
MII Polling Interval (ms): 1000
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: ens160
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:9f:97:24
Slave queue ID: 0

Slave Interface: ens224
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:9f:97:2e
Slave queue ID: 0
Reply Favorite View the author
All Replies
蓝鲸
deepin
2023-11-02 17:31
#1

先收藏一波like

Reply View the author
晚秋(lateautumn)
Moderator
2023-11-02 17:54
#2

学习了,这个“废物”很厉害joy

Reply View the author
yanjuner
Super Moderator
2023-11-03 23:11
#3

已收录!

真厉害啊

Reply View the author