博客 / Linux/ 在 CentOS 中为单网卡配置多个 IP 地址(IPv4)

在 CentOS 中为单网卡配置多个 IP 地址(IPv4)

在 CentOS 中为单网卡配置多个 IP 地址(IPv4)

概述

在 CentOS 系统中,可以通过创建网络接口别名(alias)的方式,为单个物理网卡(如 eth0)配置多个 IP 地址。这在需要运行多个服务或进行网络隔离时非常有用。本文将指导您完成配置过程。

前提条件

  • 拥有 CentOS 服务器的 root 权限。
  • 已通过 SSH 连接到服务器。
  • 已获取需要绑定的额外 IP 地址、子网掩码和网关信息。

配置步骤

步骤一:定位网络配置文件

首先,切换到网络配置文件的目录:

cd /etc/sysconfig/network-scripts

查看默认的网络接口配置文件(例如 eth0):

cat ifcfg-eth0

典型的 ifcfg-eth0 文件内容如下:

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4

步骤二:配置第一个额外 IP 地址(别名 eth0:0)

复制默认配置文件并创建第一个别名配置文件:

cp ifcfg-eth0 ifcfg-eth0:0

编辑新创建的配置文件:

vi ifcfg-eth0:0

修改其内容,关键点如下:

  • DEVICE: 必须设置为别名接口名 eth0:0
  • IPADDR, NETMASK, GATEWAY: 更新为第一个额外 IP 的对应信息。
  • 通常,别名接口的 BOOTPROTO 设为 staticONBOOT 设为 yes

修改后的 ifcfg-eth0:0 示例:

DEVICE=eth0:0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.101
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

注意: 在大多数配置中,只有主接口(eth0)需要配置 GATEWAY。对于别名接口(eth0:0, eth0:1 等),通常不需要也不应该设置 GATEWAY 参数,否则可能导致路由冲突。请根据您的实际网络规划决定。

步骤三:配置第二个额外 IP 地址(别名 eth0:1)

重复上述过程,创建第二个别名配置文件。请注意,原文此处有笔误(复制命令目标文件名错误),正确命令如下:

cp ifcfg-eth0 ifcfg-eth0:1

编辑配置文件:

vi ifcfg-eth0:1

修改内容,将 DEVICE 改为 eth0:1,并设置第二个额外 IP 的地址信息:

DEVICE=eth0:1
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.102
NETMASK=255.255.255.0
# 通常别名接口不设置 GATEWAY
# GATEWAY=192.168.1.1

步骤四:重启网络服务并验证

完成所有配置文件的编辑后,重启网络服务以使更改生效:

systemctl restart network

注意: 在 CentOS 7 及以上版本,推荐使用 systemctl 命令。对于 CentOS 6,可使用 service network restart

使用以下命令验证配置是否成功:

ip addr show eth0

或者使用传统的:

ifconfig

您应该能看到 eth0、eth0:0、eth0:1 等接口及其对应的 IP 地址。

故障排除与注意事项

  • SSH 连接超时: 如果在修改配置后出现 SSH 连接超时,可能是由于错误的网关配置或网络服务重启失败。此时需要通过服务器控制台提供的 VNC 或本地控制台登录进行修复。
  • 配置语法: 确保配置文件中没有语法错误,例如多余的空格或拼写错误。
  • 持久化: 使用 ONBOOT=yes 确保配置在系统重启后依然有效。
  • 现代方法: 在较新的 CentOS/RHEL 8+ 系统中,推荐使用 nmclinmtui 工具管理网络,它们能更好地处理 NetworkManager 服务。

扩展:使用 ip 命令临时添加 IP(重启后失效)

如需临时添加 IP 地址进行测试,可使用 ip 命令:

ip addr add 192.168.1.101/24 dev eth0 label eth0:0

要删除临时添加的 IP:

ip addr del 192.168.1.101/24 dev eth0

发表评论

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