在Linux系统中配置双网卡是一项常见需求,通常用于实现负载均衡、故障转移或连接不同网络段,以下是详细的配置步骤,涵盖不同发行版及场景,包含关键命令和参数说明。
配置前的准备工作
- 确认网卡状态
使用ip a
或ifconfig
命令查看系统识别的网卡名称(如eth0、ens33、enp0s3等),若未识别,需检查驱动是否加载(lspci | grep -i ethernet
)或硬件连接。 - 规划网络参数
明确每块网卡的IP地址、子网掩码、网关及DNS。- 网卡1(eth0):内网IP 192.168.1.10/24,网关192.168.1.1
- 网卡2(eth1):外网IP 203.0.113.20/24,网关203.0.113.1
基于Debian/Ubuntu的配置(Netplan方式)
Ubuntu 18.04+及Debian 10+默认使用Netplan管理网络,配置文件位于/etc/netplan/
目录下(如01-netcfg.yaml)。
-
编辑配置文件
network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no addresses: [192.168.1.10/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 192.168.1.1] eth1: dhcp4: no addresses: [203.0.113.20/24] gateway4: 203.0.113.1 nameservers: addresses: [8.8.4.4]
参数说明:
dhcp4: no
:禁用DHCP,使用静态IP。addresses
:IP地址及子网掩码(CIDR格式)。gateway4
:默认网关(注意:双网卡默认网关通常仅一个生效,需配合策略路由)。
-
应用配置
sudo netplan generate sudo netplan apply
基于CentOS/RHEL的配置(NetworkManager方式)
CentOS 7+及RHEL 7+推荐使用NetworkManager,配置文件位于/etc/sysconfig/network-scripts/ifcfg-<网卡名>
。
-
配置第一块网卡(eth0)
编辑/etc/sysconfig/network-scripts/ifcfg-eth0
:TYPE=Ethernet BOOTPROTO=static NAME=eth0 DEVICE=eth0 ONBOOT=yes IPADDR=192.168.1.10 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8
-
配置第二块网卡(eth1)
编辑/etc/sysconfig/network-scripts/ifcfg-eth1
:TYPE=Ethernet BOOTPROTO=static NAME=eth1 DEVICE=eth1 ONBOOT=yes IPADDR=203.0.113.20 NETMASK=255.255.255.0 DNS1=8.8.4.4
注意:第二块网卡通常不设置
GATEWAY
,避免冲突。 -
重启网络服务
sudo systemctl restart NetworkManager
双网卡路由策略配置
若需同时使用两个网关(如内外网分离),需配置策略路由,以下以CentOS为例:
-
创建自定义路由表
编辑/etc/iproute2/rt_tables
,添加:100 net1 200 net2
-
为每个网卡设置路由规则
# eth0路由表(net1) ip route add 192.168.1.0/24 dev eth0 src 192.168.1.10 table net1 ip route add default via 192.168.1.1 table net1 # eth1路由表(net2) ip route add 203.0.113.0/24 dev eth1 src 203.0.113.20 table net2 ip route add default via 203.0.113.1 table net2 # 设置规则:根据源IP选择路由表 ip rule add from 192.168.1.10 table net1 ip rule add from 203.0.113.20 table net2
-
永久生效
将上述命令写入/etc/rc.local
或NetworkManager的dispatcher脚本。
验证配置
- 检查IP地址
ip a
查看网卡是否分配正确IP。 - 测试连通性
ping -I eth0 192.168.1.1 # 测试内网网关 ping -I eth1 203.0.113.1 # 测试外网网关 ping 8.8.8.8 # 测试外网连通性
- 查看路由表
ip route show
和ip rule show
确认路由策略。
常见问题处理
问题现象 | 可能原因 | 解决方法 |
---|---|---|
双网卡仅一个能通外网 | 默认网关冲突 | 禁用非主网卡的GATEWAY,配置策略路由 |
网卡启动失败 | ONBOOT=no或配置文件语法错误 | 检查配置文件格式,重启网络服务 |
策略路由不生效 | 规则顺序错误 | 调整ip rule 优先级(数值越小优先级越高) |
相关问答FAQs
Q1:配置双网卡后无法访问外网,如何排查?
A:首先检查ip route
确认默认网关是否存在且唯一;其次使用ping -I <网卡名> <网关IP>
测试各网卡到其网关的连通性;若网关正常,检查DNS配置(cat /etc/resolv.conf
)及防火墙规则(sudo iptables -L
),策略路由场景下,需确认ip rule
和ip route
表是否匹配源IP。
Q2:双网卡可以配置同一网段的IP吗?
A:可以,但需注意MAC地址冲突和ARP问题,Linux默认会启用ARP过滤,可通过sysctl -w net.ipv4.conf.all.arp_filter=1
开启严格模式,避免ARP响应混乱,实际应用中,同一网段双网卡通常用于绑定(bonding)或桥接(bridge),以实现冗余或扩展。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/14111.html