CentOS如何配置双IP地址并使其永久生效?

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

CentOS如何配置双IP地址并使其永久生效?


在CentOS 7及更早版本中使用网络脚本配置

在CentOS 7及其之前的版本中,网络配置主要通过存放在 /etc/sysconfig/network-scripts/ 目录下的脚本文件进行管理,这是最传统和经典的方法。

确认网络接口名称

我们需要知道主网络接口的名称,可以使用以下命令查看:

ip addr

或者使用旧命令:

ifconfig

主网卡的名称会是类似 eth0ens33eno16777736 的形式,假设我们的主网卡是 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

使用文本编辑器(如 vinano)创建新文件:

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:确保系统启动时激活此接口。
  • IPADDRNETMASK:这是新IP地址及其子网掩码。注意: 别名接口通常不需要设置 GATEWAY,因为整个系统的默认网关只有一个,已在主接口中定义。

重启网络服务

配置文件修改完成后,需要重启网络服务使更改生效。

CentOS如何配置双IP地址并使其永久生效?

systemctl restart network

验证配置

再次使用 ip addr 命令检查 ens33 接口,您应该会看到两个IP地址都已成功绑定。

ip addr show ens33

输出结果中会包含 inet 192.168.1.100/24inet 192.168.1.101/24 两条记录,您也可以从其他机器 ping 这两个新IP来测试连通性。


在CentOS 8及更新版本中使用NetworkManager配置

从CentOS 8开始,系统默认使用 NetworkManager 来管理网络,推荐使用其命令行工具 nmcli 进行配置,这种方式更加现代化和强大。

查看网络连接名称

nmcli 操作的对象是“连接”而非“设备”,查看当前存在的连接:

nmcli connection show

您会看到一个列表,NAME 列下的名称就是连接名称,它可能与设备名相同,也可能不同,假设连接名称为 ens33

为现有连接添加第二个IP

使用 nmclimodify 命令可以轻松地为现有连接添加新的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如何配置双IP地址并使其永久生效?

特性 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)在没有特定路由规则的情况下,其数据包也会通过同一个默认网关发送,如果无法访问外网,请检查以下几点:

  1. 网关唯一性: 确保您的所有网络配置文件中只有一个 GATEWAYipv4.gateway 指令,不要在别名接口(如 ifcfg-ens33:0)中设置网关。
  2. 防火墙规则: 检查 firewalldiptables 的规则,可能存在针对特定IP地址的访问控制策略,阻止了第二个IP的流量,可以使用 firewall-cmd --list-all 查看当前区域规则。
  3. 源地址验证: 某些严格的安全环境可能会对源IP地址进行验证,确保您使用的第二个IP地址在您的网络环境中是合法且被允许的。

在CentOS 7中,除了创建别名文件,还有没有其他方法添加第二个IP?

解答: 是的,除了创建别名文件(如 ifcfg-ens33:0),您还可以直接在主配置文件 ifcfg-ens33 中添加额外的IP地址,这种方法也是可行的,但可读性稍差。

具体操作是编辑 /etc/sysconfig/network-scripts/ifcfg-ens33 文件,保留原有的 IPADDR,然后添加 IPADDR1IPADDR2 等参数,每个参数对应一个额外的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的稳定性。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-29 05:43
下一篇 2024-08-03 02:35

相关推荐

发表回复

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

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信