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  

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

配置静态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使用netplan或NetworkManager管理网络,以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=dhcp或dhcp4: 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=bond0和SLAVE=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 100,ip route add default via <网关2> dev <网卡2> metric 200),通过metric值控制优先级(值越小优先级越高)。

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

  • 查看链路状态:ip link show 或 ethtool <网卡名>(如ethtool ens33),重点关注Link detected: yes(链路是否正常)和Speed(速率)。
  • 查看流量统计:ip -s link show <网卡名>(显示接收/发送字节数、包数等),或使用iftop(需安装:yum install iftop/apt install iftop)实时查看流量流向和进程占用情况。
  • 历史流量监控:安装nload(yum 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系统中,添加命令通常指将自定义的可执行程序或脚本设置为全局可调用,避免每次都需要输入完整路径,这主要依赖于Linux的命令查找机制——通过环境变量PATH指定可执行文件的搜索路径,当用户输入命令时,系统会按PATH中定义的目录顺序依次查找匹配的可执行文件,以下是添加命令的详细方法及注意事项,理解PA……

    2025年10月6日
    21600
  • Linux中kill进程的正确方法和操作步骤是什么?

    在Linux操作系统中,进程是程序执行的基本单位,当进程出现异常(如卡死、资源泄露、无法正常退出)时,管理员或用户需要手动终止进程以保证系统稳定,本文将详细介绍Linux中终止进程(kill进程)的方法、工具及相关注意事项,查看进程:kill操作的前提在终止进程前,需先明确目标进程的信息(如进程ID、名称、状态……

    2025年8月31日
    26000
  • linux命令如何导出日志

    Linux 中,可使用如 `tail -n 100 /var/log/syslog ˃ log.

    2025年8月10日
    25400
  • 如何保持冷静解决突发问题?

    面对问题保持冷静,运用逻辑思维逐步分析排查根源,避免慌乱导致误判,专注细节,有序推进,直至找到有效解决方案。

    2025年8月5日
    34600
  • 在Linux操作系统中,安装PHP扩展详细步骤和注意事项是什么?

    在Linux系统中安装PHP扩展是增强PHP功能的关键步骤,无论是连接数据库、处理图像还是支持缓存,都需要通过安装相应的扩展来实现,Linux环境下安装PHP扩展有多种方式,包括使用包管理器、PECL(PHP Extension Community Library)以及从源码编译安装,具体选择取决于Linux发……

    2025年9月22日
    25000

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信