如何将另一个弹性 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 地址
弹性网络接口