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

相关推荐

  • 如何获取 pid linux

    Linux 中,可通过 ps 命令获取进程 PID,如 `ps aux | grep [进程名]

    2025年8月13日
    3800
  • 如何定义函数?

    在Linux系统中,脚本(Script)是通过解释器执行的文本文件,用于自动化重复任务、管理系统或部署应用,以下是详细的脚本编写指南,遵循Linux最佳实践:脚本基础结构Shebang行(必需)首行指定解释器路径,告知系统用哪个程序执行脚本:#!/bin/bash # 使用Bash解释器#!/usr/bin/e……

    2025年6月24日
    5600
  • Linux修改hosts文件后如何立即生效?

    在Linux系统中,hosts文件是本地域名解析的核心配置文件,它将域名直接映射到IP地址,绕过DNS服务器,常用于本地开发环境调试、测试环境隔离或屏蔽恶意网站,当修改hosts文件后,由于系统可能已缓存域名解析结果,需要手动触发重新加载才能使修改生效,本文将详细说明Linux修改hosts文件后的生效方法,涵……

    2025年8月24日
    3100
  • 如何输出add.o和multiply.o文件?

    在Linux系统中,静态库(通常以.a为后缀)是预编译代码的集合,用于在程序编译时直接嵌入到可执行文件中,与动态库不同,静态库会增大最终程序体积,但能避免运行时依赖问题,以下是详细使用指南:静态库的核心优势独立性:程序运行时无需额外库文件,稳定性:避免因动态库版本冲突导致的兼容性问题,性能:代码直接链接到程序……

    2025年7月12日
    5600
  • 在Linux系统下如何正确打开Oracle数据库服务?

    在Linux系统下操作Oracle数据库,通常涉及启动数据库实例、监听器以及连接管理工具等步骤,具体操作需根据Oracle版本(如11g、12c、19c等)和安装方式(如RPM、手动安装)略有差异,但核心流程基本一致,以下从环境准备、实例启动、监听器配置、连接验证及常见问题排查等方面详细说明,环境准备与检查在启……

    2025年9月28日
    1900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信