Linux如何配置两块网卡实现网络负载均衡?

在Linux系统中配置两块网卡是服务器或工作站常见的网络需求,通常用于实现网络冗余、负载均衡、多网络接入或隔离不同业务流量,以下将详细介绍从硬件识别到网络配置的完整步骤,涵盖主流发行版(如CentOS/RHEL、Ubuntu/Debian)的配置方法,并包含可选的网络绑定与桥接场景。

linux如何配置两块网卡

硬件识别与网卡确认

首先需要确认系统已正确识别两块物理网卡,通过以下命令查看网卡硬件信息及驱动状态:

# 查看PCI网卡设备(适用于x86架构)
lspci | grep -i ethernet  
# 查看已识别的网卡接口
ip a  
# 检查网卡驱动是否加载成功
lsmod | grep <网卡驱动名>  # e1000e、igb、virtio_net等

若网卡未被识别,需检查硬件连接(如是否插牢、网线是否正常)或手动加载驱动(如modprobe <驱动名>)。

网卡命名确认

现代Linux发行版默认采用Predictable Network Interface Names( predictable names),命名规则如ens33(PCIe插槽位置)、ens34等,可通过以下命令确认当前网卡名称:

# 查看网卡与MAC地址的对应关系(避免混淆)
ip link show  

假设两块网卡分别为ens33ens34,后续配置将基于此名称。

配置静态IP地址(以CentOS 7/8为例)

静态IP配置适用于需要固定IP的场景(如服务器),通过修改网络配置文件实现:

配置第一块网卡(ens33)

编辑/etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
BOOTPROTO=static  # 静态IP,若为DHCP则填"dhcp"
NAME=ens33
DEVICE=ens33
ONBOOT=yes        # 开机自启
IPADDR=192.168.1.10  # IP地址
NETMASK=255.255.255.0  # 子网掩码
GATEWAY=192.168.1.1    # 默认网关
DNS1=8.8.8.8           # DNS服务器
DNS2=114.114.114.114

配置第二块网卡(ens34)

编辑/etc/sysconfig/network-scripts/ifcfg-ens34类似,但需修改IP及相关参数(避免与第一块网卡同网段):

linux如何配置两块网卡

TYPE=Ethernet
BOOTPROTO=static
NAME=ens34
DEVICE=ens34
ONBOOT=yes
IPADDR=192.168.2.10  # 不同网段的IP
NETMASK=255.255.255.0
GATEWAY=192.168.2.1  # 可选:若需独立网关
DNS1=8.8.8.8

重启网络服务

systemctl restart network

配置静态IP地址(以Ubuntu 20.04/22.04为例)

Ubuntu使用netplanNetworkManager管理网络,以netplan/etc/netplan/下的yaml文件)为例:

编辑配置文件

假设配置文件为/etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      addresses: [192.168.1.10/24]  # CIDR格式(子网掩码24位)
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]
    ens34:
      dhcp4: no
      addresses: [192.168.2.10/24]
      gateway4: 192.168.2.1  # 可选
      nameservers:
        addresses: [8.8.8.8]

应用配置

netplan apply

配置DHCP自动获取IP

若需动态获取IP,只需将上述配置中的BOOTPROTO=static(CentOS)或dhcp4: no(Ubuntu)改为BOOTPROTO=dhcpdhcp4: yes,重启网络服务即可。

可选:网络绑定(Bonding)实现负载均衡与冗余

若需将两块网卡绑定为一个逻辑接口(如bond0),以提高带宽或容错能力,需配置 bonding 模式:

加载 bonding 模块

modprobe bonding
echo "bonding" >> /etc/modules  # 开机自动加载

配置 bond0(CentOS 示例)

创建/etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
TYPE=Bond
BOOTPROTO=static
IPADDR=192.168.1.20
NETMASK=255.255.255.0
ONBOOT=yes
BONDING_OPTS="mode=0 miimon=100"  # mode=0(平衡负载),miimon=100(链路检测间隔ms)

配置从网卡(ens33、ens34)

修改两块网卡的配置文件,添加MASTER=bond0SLAVE=yes

# ifcfg-ens33
DEVICE=ens33
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes

重启网络并验证

systemctl restart network
ip a show bond0  # 查看bond0状态

Bonding 模式说明

模式 名称 说明 适用场景
0 balance-rr 轮询传输,负载均衡 高带宽需求
1 active-backup 主备模式,故障时自动切换 冗余备份
6 balance-alb adaptive load balancing 自动负载均衡+故障转移

可选:网络桥接(Bridge)

若需将两块网卡桥接为一个虚拟交换机(如KVM虚拟化场景),可配置网桥br0

linux如何配置两块网卡

安装桥接工具

# CentOS
yum install bridge-utils -y  
# Ubuntu  
apt install bridge-utils -y  

配置网桥(Ubuntu netplan示例)

修改/etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  bridges:
    br0:
      interfaces: [ens33, ens34]  # 将两块网卡加入桥接
      dhcp4: no
      addresses: [192.168.1.30/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8]

应用配置

netplan apply

测试与验证

配置完成后,通过以下命令验证网络连通性:

# 查看网卡IP状态
ip a  
# 测试本机网络
ping 192.168.1.1  # 测试第一块网卡网关
ping 192.168.2.1  # 测试第二块网卡网关(若有独立网关)
# 测试外网连通性
ping 8.8.8.8  
curl www.baidu.com  

相关问答FAQs

Q1:两块网卡如何配置不同网段的IP,并实现同时上网?
A:若需两块网卡分别接入不同网段(如内网和外网),且同时上网,需注意默认网关优先级

  • CentOS:在/etc/sysconfig/network-scripts/下为两块网卡配置不同网关,然后通过route add -net <网段> gw <网关> dev <网卡>添加静态路由,或修改/etc/sysconfig/network中的GATEWAY为主网关,另一块网卡的网关通过路由表指定。
  • Ubuntu:在/etc/netplan/中为两块网卡配置不同网关,或使用ip route命令添加策略路由(如ip route add <网段> via <网关> dev <网卡>),确保数据包按目标网段选择出口。
    注意:若两网关的默认路由冲突,需删除默认路由(ip route del default),再手动添加两条默认路由(ip route add default via <网关1> dev <网卡1> metric 100ip route add default via <网关2> dev <网卡2> metric 200),通过metric值控制优先级(值越小优先级越高)。

Q2:如何查看Linux网卡的链路状态和流量统计?
A:可通过以下命令实时监控网卡状态:

  • 查看链路状态ip link showethtool <网卡名>(如ethtool ens33),重点关注Link detected: yes(链路是否正常)和Speed(速率)。
  • 查看流量统计ip -s link show <网卡名>(显示接收/发送字节数、包数等),或使用iftop(需安装:yum install iftop/apt install iftop)实时查看流量流向和进程占用情况。
  • 历史流量监控:安装nloadyum install nload/apt install nload),可实时显示两块网卡的输入/输出流量曲线。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/34145.html

(0)
酷番叔酷番叔
上一篇 2025年10月2日 02:14
下一篇 2025年10月2日 02:29

相关推荐

  • Linux如何查看软链接及其指向目标?

    在Linux系统中,软链接(符号链接)是一种特殊的文件类型,它指向另一个文件或目录,类似于Windows系统中的快捷方式,查看软链接的信息对于理解文件系统结构、排查路径问题等场景至关重要,本文将详细介绍Linux中查看软链接的多种方法,包括常用命令及其选项、输出解析及实际应用场景,使用ls命令查看软链接基础信息……

    2025年9月21日
    10300
  • Linux如何使用crontab创建和管理计划任务?

    在Linux系统中,计划任务是实现自动化运维的关键功能,能够帮助用户在指定时间自动执行脚本、命令或程序,避免人工干预,提高工作效率,Linux中最常用的计划任务工具是cron和at,其中cron适用于周期性重复的任务,而at适用于一次性任务,本文将详细介绍如何使用cron创建计划任务,包括其工作原理、配置方法……

    2025年10月5日
    8400
  • 如何在win7进入linux系统

    win7系统中可通过安装虚拟机软件如VMware,然后在其中安装Linux系统来进入Linux环境

    2025年8月18日
    13200
  • Linux环境下数据库备份的详细方法与操作步骤有哪些?

    在Linux系统中,数据库备份是保障数据安全的核心操作,无论是应对硬件故障、误操作还是恶意攻击,完善的备份机制都能快速恢复数据,降低业务损失,Linux环境下主流数据库(如MySQL、PostgreSQL、MongoDB等)均有成熟的备份工具和方法,需根据数据库类型、业务需求(如恢复时间目标RTO、恢复点目标R……

    2025年9月9日
    8800
  • Linux如何删除空文件夹?命令行操作方法与技巧详解

    在Linux系统中,空文件夹(即不包含任何文件或子文件夹的目录)的删除是日常运维中常见的操作,掌握正确的方法不仅能提高效率,还能避免误操作导致的数据丢失,本文将详细介绍Linux中删除空文件夹的多种方式、注意事项及实用技巧,空文件夹的定义与删除的必要性空文件夹通常指在目录下没有任何文件(包括隐藏文件)或子目录的……

    2025年9月30日
    10500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信