在Linux系统中配置两块网卡是服务器或工作站常见的网络需求,通常用于实现网络冗余、负载均衡、多网络接入或隔离不同业务流量,以下将详细介绍从硬件识别到网络配置的完整步骤,涵盖主流发行版(如CentOS/RHEL、Ubuntu/Debian)的配置方法,并包含可选的网络绑定与桥接场景。
硬件识别与网卡确认
首先需要确认系统已正确识别两块物理网卡,通过以下命令查看网卡硬件信息及驱动状态:
# 查看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及相关参数(避免与第一块网卡同网段):
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
:
安装桥接工具
# 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