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系统中安装SSH(Secure Shell)是远程管理服务器的关键步骤,以下为详细操作指南,涵盖主流发行版安装、配置优化及安全加固,所有命令均需root权限(使用sudo -i或sudo前缀),安装SSH服务Debian/Ubuntu 系# 安装OpenSSH服务端apt install opens……

    2025年7月26日
    8700
  • 10秒解决手机卡顿?

    核心诊断工具ping 命令(基础检测)ping -c 10 example.com # 发送10个ICMP包丢包判断:输出末尾的统计信息(如 10 packets transmitted, 8 received, 20% packet loss)直接显示丢包率,关键参数:-i 0.2:缩短发包间隔(默认1秒……

    2025年7月21日
    9700
  • 如何在linux运行c

    Linux中运行C程序,先编写源代码(如test.

    2025年8月13日
    9700
  • Linux请求调页的实现原理是什么?

    Linux实现请求调页机制是其虚拟内存管理的核心,通过“按需加载”策略优化内存使用,仅在进程访问到某页时才将其从磁盘调入内存,未访问的页保留在磁盘,从而显著减少物理内存占用并提高系统效率,以下从硬件基础、数据结构、缺页处理流程、页面置换算法及优化机制等方面详细解析其实现原理,硬件基础:MMU与页表机制请求调页依……

    2025年10月4日
    7400
  • Linux不用浏览器怎么查看网页?

    命令行工具(高效/无图形界面)适用于服务器环境或快速文本提取,无需打开浏览器,curl 获取网页源码基础用法:curl https://example.com保存到文件:curl -o page.html https://example.com跟随重定向:curl -L https://example.com仅……

    2025年7月1日
    8600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信