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系统中,文件属性是理解文件管理、权限控制和系统安全的基础,文件属性不仅包括我们熟知的权限(读、写、执行)、所有者和所属组,还包含时间戳、inode号、文件大小、硬链接数等元数据信息,掌握如何查看这些属性,对于日常运维、故障排查和安全管理至关重要,本文将详细介绍Linux中查看文件属性的多种方法,包括……

    2025年9月8日
    19700
  • 如何启用和关闭SELinux?

    SELinux(Security-Enhanced Linux)是由美国国家安全局(NSA)主导开发的Linux安全模块,通过强制访问控制(MAC)机制增强系统安全性,防止未授权的访问和操作,在Linux系统中,SELinux有三种运行模式:enforcing(强制模式,违规操作会被阻止并记录日志)、permi……

    2025年8月25日
    16300
  • Linux系统如何打开图形界面?

    Linux作为一款功能强大的操作系统,其图形界面(GUI)为用户提供了直观的操作体验,尤其适合桌面用户和需要可视化操作的场景,本文将详细介绍Linux系统中打开图形界面的多种方法,涵盖不同发行版、不同环境下的操作步骤,以及常见问题的解决方案,Linux图形界面的基础组成要理解如何打开图形界面,首先需要了解其核心……

    2025年9月28日
    20500
  • Linux不同格式安装包如何解压?

    常见安装包格式及解压工具格式工具安装命令(如未预装).tartar默认预装.gzgzip/tarsudo apt install gzip.bz2bzip2/tarsudo apt install bzip2.xzxz/tarsudo apt install xz-utils.zipunzipsudo apt……

    2025年6月17日
    21500
  • Linux如何快速登录MySQL?

    前提条件安装MySQL客户端若未安装,执行以下命令(以Ubuntu/Debian为例):sudo apt update && sudo apt install mysql-clientCentOS/RHEL系统:sudo yum install mysql准备数据库凭据有效的MySQL用户名(如……

    2025年6月23日
    19800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信