在服务器管理和网络架构设计中,为一台CentOS服务器配置双IP地址是一项常见且实用的技术,这种配置可以用于多种场景,将不同的服务(如Web服务、数据库服务)绑定到不同的IP地址以实现服务隔离;为服务器提供跨网段的访问能力;或者在部署高可用性集群时,使用一个IP作为心跳地址,另一个作为业务地址,本文将详细介绍在不同版本的CentOS系统中配置双IP地址的两种主流方法,并提供清晰的步骤、注意事项以及常见问题的解答。

在CentOS 7及更早版本中使用网络脚本配置
在CentOS 7及其之前的版本中,网络配置主要通过存放在 /etc/sysconfig/network-scripts/ 目录下的脚本文件进行管理,这是最传统和经典的方法。
确认网络接口名称
我们需要知道主网络接口的名称,可以使用以下命令查看:
ip addr
或者使用旧命令:
ifconfig
主网卡的名称会是类似 eth0、ens33 或 eno16777736 的形式,假设我们的主网卡是 ens33。
编辑主网卡配置文件
主网卡的配置文件位于 /etc/sysconfig/network-scripts/ifcfg-ens33,在添加第二个IP之前,我们先查看一下它的典型内容:
TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes NAME=ens33 UUID=... # 一串唯一的字符 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8
这个文件定义了第一个IP地址(168.1.100)及其相关网络参数。
创建子接口(别名)配置文件
为网卡添加第二个IP最规范、最清晰的方法是创建一个子接口,也称为别名,其配置文件名格式为 ifcfg-<主接口名>:<序号>,我们为 ens33 创建一个别名 ens33:0。
使用文本编辑器(如 vi 或 nano)创建新文件:
vi /etc/sysconfig/network-scripts/ifcfg-ens33:0
在该文件中填入以下内容,别名接口的配置非常简洁,大部分参数会继承自主接口。
DEVICE=ens33:0 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.101 NETMASK=255.255.255.0
关键点解释:
DEVICE=ens33:0:指定这是一个名为ens33:0的虚拟设备。BOOTPROTO=static:明确指定使用静态IP。ONBOOT=yes:确保系统启动时激活此接口。IPADDR和NETMASK:这是新IP地址及其子网掩码。注意: 别名接口通常不需要设置GATEWAY,因为整个系统的默认网关只有一个,已在主接口中定义。
重启网络服务
配置文件修改完成后,需要重启网络服务使更改生效。

systemctl restart network
验证配置
再次使用 ip addr 命令检查 ens33 接口,您应该会看到两个IP地址都已成功绑定。
ip addr show ens33
输出结果中会包含 inet 192.168.1.100/24 和 inet 192.168.1.101/24 两条记录,您也可以从其他机器 ping 这两个新IP来测试连通性。
在CentOS 8及更新版本中使用NetworkManager配置
从CentOS 8开始,系统默认使用 NetworkManager 来管理网络,推荐使用其命令行工具 nmcli 进行配置,这种方式更加现代化和强大。
查看网络连接名称
nmcli 操作的对象是“连接”而非“设备”,查看当前存在的连接:
nmcli connection show
您会看到一个列表,NAME 列下的名称就是连接名称,它可能与设备名相同,也可能不同,假设连接名称为 ens33。
为现有连接添加第二个IP
使用 nmcli 的 modify 命令可以轻松地为现有连接添加新的IP地址,关键在于使用 号,表示“添加”而不是“覆盖”。
nmcli connection modify 'ens33' +ipv4.addresses '192.168.1.102/24'
命令解析:
nmcli connection modify 'ens33':指定要修改的连接名称。+ipv4.addresses: 号表示追加一个新的IPv4地址,如果省略 ,则会替换掉现有的所有IP地址。'192.168.1.102/24':指定要添加的新IP地址和子网掩码(使用CIDR表示法)。
重新激活连接
配置修改后,需要重新激活连接以应用更改,这比重启整个网络服务更精确,影响更小。
nmcli connection up 'ens33'
验证配置
同样,使用 ip addr 命令进行验证。
ip addr show ens33
您会看到原有的IP地址和新添加的 168.1.102 都已生效。
两种方法对比
为了更清晰地理解两种方式的差异,下表进行了小编总结:

| 特性 | CentOS 7 (网络脚本) | CentOS 8+ (NetworkManager) |
|---|---|---|
| 配置文件位置 | /etc/sysconfig/network-scripts/ | /etc/NetworkManager/system-connections/ |
| 主要管理工具 | systemctl 和文本编辑器 | nmcli, nmtui |
| 添加IP命令 | 手动创建 ifcfg-<if>:<n> 文件 | nmcli connection modify ... +ipv4.addresses ... |
| 应用配置 | systemctl restart network | nmcli connection up <conn_name> |
| 优点 | 直观,文件结构清晰 | 动态、灵活,不易出错,支持更复杂的网络场景 |
| 缺点 | 需要手动编辑文件,易出错,重启影响大 | 学习成本相对较高 |
相关问答FAQs
我已经按照步骤配置了双IP,为什么只有一个IP可以访问外网,另一个不行?
解答: 这是一个非常常见的现象,通常与路由和网关设置有关,在一个典型的网络配置中,一台主机只能有一个默认网关,当您配置双IP时,系统会使用在主配置文件(无论是 ifcfg-ens33 还是 nmcli 的主连接)中定义的那个网关作为所有外网通信的出口。
另一个IP地址(无论是别名还是追加的IP)在没有特定路由规则的情况下,其数据包也会通过同一个默认网关发送,如果无法访问外网,请检查以下几点:
- 网关唯一性: 确保您的所有网络配置文件中只有一个
GATEWAY或ipv4.gateway指令,不要在别名接口(如ifcfg-ens33:0)中设置网关。 - 防火墙规则: 检查
firewalld或iptables的规则,可能存在针对特定IP地址的访问控制策略,阻止了第二个IP的流量,可以使用firewall-cmd --list-all查看当前区域规则。 - 源地址验证: 某些严格的安全环境可能会对源IP地址进行验证,确保您使用的第二个IP地址在您的网络环境中是合法且被允许的。
在CentOS 7中,除了创建别名文件,还有没有其他方法添加第二个IP?
解答: 是的,除了创建别名文件(如 ifcfg-ens33:0),您还可以直接在主配置文件 ifcfg-ens33 中添加额外的IP地址,这种方法也是可行的,但可读性稍差。
具体操作是编辑 /etc/sysconfig/network-scripts/ifcfg-ens33 文件,保留原有的 IPADDR,然后添加 IPADDR1、IPADDR2 等参数,每个参数对应一个额外的IP地址,子网掩码也可以用 PREFIX 来统一指定。
示例:
# ... 其他配置 ... IPADDR0=192.168.1.100 PREFIX0=24 IPADDR1=192.168.1.101 PREFIX1=24 GATEWAY=192.168.1.1 DNS1=8.8.8.8
推荐哪种方式?
推荐使用别名文件的方式。 原因如下:
- 结构清晰: 每个IP地址都有自己独立的配置文件,便于管理和维护,当需要删除某个IP时,直接删除对应的别名文件即可,不会影响到主IP。
- 兼容性好: 别名是一种非常成熟和通用的技术,兼容性最强。
- 易于排查问题: 当某个IP出现问题时,可以快速定位到其专属的配置文件进行排查。
直接在主文件中追加IP的方式虽然文件数量少,但当IP数量增多时,文件会变得臃肿,且修改时容易误操作,影响主IP的稳定性。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复