如何将另一个弹性 IP 地址添加到运行 CentOS 6 或 RHEL 6 的 EC2 实例上附加的弹性网络接口?

2 分钟阅读
0

如何将另一个弹性 IP 地址添加到运行 CentOS 6 或 RHEL 6 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上附加的弹性网络接口?

简短描述

当您将另一个弹性 IP 地址添加到弹性网络接口时,该弹性 IP 地址会在您重启该接口时丢失。要使另一个弹性 IP 地址在重启期间保留,您必须创建另一个接口配置文件 (ICF)。

ICF 控制单个网络设备的软件接口。系统会在启动时使用这些文件,以确定要启动哪些接口以及如何配置它们。

默认 ICF 为 /etc/sysconfig/network-scripts/ifcfg-eth0。当单个接口上存在两个弹性 IP 地址时,第二个弹性 IP 地址将变为“1”— 也就是,/etc/sysconfig/network-scripts/ifcfg-eth0:1

解决方法

创建另一个接口配置文件

1.    从 Amazon EC2 控制台将两个弹性 IP 地址附加到弹性网络接口。有关更多信息,请参阅多个 IP 地址

2.    使用 touch 命令在**/etc/sysconfig/network-scripts/** 目录中为第二个弹性 IP 地址创建 ifcfg-eth0:1 文件:

$ sudo touch /etc/sysconfig/network-scripts/ifcfg-eth0:1

3.    将以下参数添加到 ifcfg-eth0:1 文件:

DEVICE=eth0:1
BOOTPROTO=static
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
IPADDR=172.31.34.195

注意: IPADDR 使用与第二个弹性 IP 地址(与该接口关联)关联的专用 IP 地址。选择实例后,您可以在 Amazon EC2 控制台中的辅助私有 IP 下找到该专用 IP 地址。

更改第二个 ICF 的上下文,以与默认 ICF 匹配

1.    要查看 ifcfg-eth0:1 文件的安全上下文,请通过 ls 命令使用 –Z 选项:

$ ls -Z ifcfg-eth*

2.    通过 chcon 命令使用 –u 选项将用户更改为 system_u

$ sudo chcon -u system_u ifcfg-eth0:1

3.    通过 chcon 命令使用 –t 选项更改 net_conf_t 的类型:

$ sudo chcon -t net_conf_t ifcfg-eth0:1

4.    通过运行以下命令比较两个文件:

$ ls -Z ifcfg-eth0*
-rw-r--r--. root root system_u:object_r:net_conf_t:s0  ifcfg-eth0
-rw-r--r--. root root system_u:object_r:net_conf_t:s0  ifcfg-eth0:1

打开接口

1.    通过运行 ifup 命令打开第二个接口:

$ sudo ifup eth0:1

2.    如果第二个 ICF 存在问题,请运行 ethtool 命令以验证是否能够检测到第二个 ICF:

$ ethtool eth0:1

显示的输出与以下类似:

Settings for eth0:1:
Link detected: yes

如果输出与预期不符,请运行 ifup 命令并验证第二个接口是否存在。然后,查看 ICF 文件以确保它是正确的,然后重新加载它。

重启实例

通过运行 reboot 命令重启实例。


相关信息

弹性 IP 地址

弹性网络接口

AWS 官方
AWS 官方已更新 4 年前