在Linux系统中配置双网卡实现双IP地址是一项常见需求,通常用于服务器需要同时连接多个网络、实现负载均衡或冗余备份等场景,本文将详细介绍不同Linux发行版(如CentOS/RHEL和Ubuntu/Debian)下双网卡双IP的配置方法,包括静态IP和动态IP(DHCP)的配置步骤,以及配置后的验证和常见问题处理。
准备工作
在配置双网卡前,需先确认以下信息:
- 网卡名称:通过
ip a
或ifconfig
命令查看当前系统中的网卡设备名(如eth0
、ens33
、ens37
等)。 - 网络参数:明确每个网卡的IP地址、子网掩码、网关、DNS等配置信息(静态IP需提前规划,动态IP则由DHCP服务器分配)。
- 管理员权限:配置网络需要root权限或sudo权限。
静态IP配置
静态IP配置适用于需要固定IP地址的场景(如服务器),不同发行版的配置文件格式略有差异,需分别处理。
(一)CentOS/RHEL系列(使用ifcfg文件)
CentOS/RHEL系统通过/etc/sysconfig/network-scripts/
目录下的ifcfg配置文件管理网卡,假设两块网卡分别为ens33
和ens37
,需分别为其配置静态IP。
-
编辑第一块网卡配置文件(如
ens33
):vim /etc/sysconfig/network-scripts/ifcfg-ens33
添加或修改以下内容:
TYPE=Ethernet BOOTPROTO=static # 静态IP,若为DHCP则改为dhcp NAME=ens33 DEVICE=ens33 ONBOOT=yes # 开机自启 IPADDR=192.168.1.100 # IP地址 PREFIX=24 # 子网掩码(24表示255.255.255.0) GATEWAY=192.168.1.1 # 网关(若两块网卡在不同网段,需谨慎配置默认网关) DNS1=8.8.8.8 # DNS服务器 DNS2=114.114.114.114
-
编辑第二块网卡配置文件(如
ens37
):vim /etc/sysconfig/network-scripts/ifcfg-ens37 ``` 类似,注意区分IP、网关等参数(若与`ens33`同网段,网关可一致;不同网段则需单独配置,避免路由冲突): ```ini TYPE=Ethernet BOOTPROTO=static NAME=ens37 DEVICE=ens37 ONBOOT=yes IPADDR=192.168.2.100 # 不同网段的IP PREFIX=24 GATEWAY=192.168.2.1 # 对应网段的网关 DNS1=8.8.8.8 DNS2=114.114.114.114
-
重启网络服务:
systemctl restart network
-
验证配置:
- 查看IP地址:
ip a
,确认两块网卡分别配置了对应IP。 - 测试连通性:
ping 192.168.1.1
(ens33
网关)、ping 192.168.2.1
(ens37
网关)。
- 查看IP地址:
(二)Ubuntu/Debian系列(使用Netplan)
Ubuntu 18.04及后续版本默认使用Netplan进行网络配置,配置文件位于/etc/netplan/
目录下(如01-netcfg.yaml
),假设两块网卡为ens33
和ens37
:
-
编辑Netplan配置文件:
vim /etc/netplan/01-netcfg.yaml
添加以下内容(注意缩进,YAML格式严格):
network: version: 2 ethernets: ens33: dhcp4: no # 静态IP,关闭DHCP addresses: [192.168.1.100/24] # IP地址/子网掩码长度 gateway4: 192.168.1.1 # 网关 nameservers: addresses: [8.8.8.8, 114.114.114.114] ens37: dhcp4: no addresses: [192.168.2.100/24] gateway4: 192.168.2.1 nameservers: addresses: [8.8.8.8, 114.114.114.114]
-
应用配置:
netplan apply
-
验证配置:
- 同样通过
ip a
查看IP,ping
测试网关连通性。
- 同样通过
(三)通用方法(使用nmcli命令)
对于支持NetworkManager的系统(如CentOS 7+、Ubuntu 16.04+),可通过nmcli
命令行工具快速配置,无需手动编辑文件:
-
添加第一块网卡静态连接(
ens33
):nmcli con add type ethernet con-name ens33_static ifname ens33 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8,114.114.114.114
-
添加第二块网卡静态连接(
ens37
):nmcli con add type ethernet con-name ens37_static ifname ens37 ipv4.method manual ipv4.addresses 192.168.2.100/24 ipv4.gateway 192.168.2.1 ipv4.dns 8.8.8.8,114.114.114.114
-
启用连接:
nmcli con up ens33_static nmcli con up ens37_static
动态IP(DHCP)配置
若某块网卡需通过DHCP自动获取IP,只需将静态IP配置中的BOOTPROTO=static
(CentOS)或dhcp4: no
(Ubuntu)改为dhcp
或dhcp4: true
,具体步骤与静态配置类似,此处以CentOS为例:
-
编辑ifcfg文件(如
ens33
):vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改为:
TYPE=Ethernet BOOTPROTO=dhcp NAME=ens33 DEVICE=ens33 ONBOOT=yes
-
重启网络服务:
systemctl restart network
,通过ip a
查看是否获取到IP(如dhcp
)。
配置验证与问题排查
- 查看IP配置:
ip a
或ifconfig
,确认两块网卡的IP已正确配置。 - 检查路由表:
route -n
或ip route
,确保默认网关和路由规则正确(若双网卡需同时上网,需注意网关优先级,避免路由冲突)。 - 测试网络连通性:
ping 192.168.1.1
(ens33
网关)、ping 8.8.8.8
(外网连通性)。ping 192.168.2.100
(本机ens37
IP)、ping 192.168.2.1
(ens37
网关)。
- 常见问题:
- IP冲突:使用
arping -I ens33 192.168.1.100
检查IP是否被占用。 - 配置文件语法错误:CentOS可通过
ifdown ens33 && ifup ens33
测试,Ubuntu用netplan --debug apply
查看错误信息。 - 无法同时上网:检查路由表,若两块网卡网关不同,需添加策略路由(如
ip rule add from 192.168.1.100 table 1
)。
- IP冲突:使用
相关问答FAQs
Q1:双网卡配置后,为什么只有一块网卡能上网?
A:通常是由于网关配置冲突或路由表问题导致,若两块网卡在不同网段且均配置了默认网关,系统可能仅使用其中一个网关,解决方法:
- 检查
route -n
中的默认路由(0.0.0
),若存在多条默认路由,可通过ip route del default via 旧网关
删除多余路由。 - 若需双网卡同时上网,需配置策略路由,让特定流量走特定网卡(如
ip rule add from 192.168.1.100 table 100
,ip route add default via 192.168.1.1 table 100
)。
Q2:如何删除已配置的额外IP地址?
A:删除额外IP的方法取决于配置方式:
- ifcfg文件(CentOS):编辑对应网卡的ifcfg文件,删除
IPADDR
、PREFIX
等字段,重启网络服务(systemctl restart network
)。 - Netplan(Ubuntu):编辑
/etc/netplan/01-netcfg.yaml
,删除addresses
中的额外IP,运行netplan apply
。 - nmcli命令:删除连接后重新添加,或使用
nmcli con mod 连接名 ipv4.addresses ""
清除IP,再nmcli con up 连接名
。 - 临时删除:使用
ip addr del IP地址/子网掩码 dev 网卡名
(如ip addr del 192.168.1.100/24 dev ens33
),但重启后会恢复。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/20722.html