Louisa 向您演示如何
为实例配置辅助私有
IP 地址

Loiusa_secondary-private-ip-address-1

如何让我的辅助网络接口在我的 CentOS 或 RHEL Amazon Elastic Compute Cloud (Amazon EC2) 实例上工作?

将辅助网络接口添加到非 Amazon Linux 实例会导致流量问题。这是因为主要和辅助网络接口位于相同子网中,而只有一个路由表带有一个网关。进入辅助网络接口的流量将尝试使用主网络接口流出实例。但不允许这种情况,因为辅助 IP 地址不属于主网络接口的 MAC 地址。

要使辅助网络接口工作,请创建辅助网络配置文件,添加额外的路由表,然后在定制路由表策略数据库中设置规则,使得辅助接口的流量使用新路由表。为确保新的辅助路由和规则在每次启动之后都生效,请创建并配置辅助静态路由文件。

使辅助接口工作的步骤概要如下:

  1. 创建配置文件
  2. 创建新路由表
  3. 在路由策略数据库中设置规则
  4. 创建静态路由文件

注意:对于 Ubuntu 实例,请参阅如何使我的辅助网络接口在我的 Ubuntu 实例上工作?

所有过程必须使用根用户权限完成。您可以使用“sudo -i”成为根用户,或者使用“sudo”执行所有命令。

创建辅助网络配置文件

1.获取主网络接口的名称:

ip a | grep ^[[:digit:]]

您应看到如下内容: 

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000

重要提示:在前面的示例中,主接口的名称为“eth0”、“eth1”,以此类推。但是,对于支持增强联网的实例,例如 m4 和 m5 系列类型,您可能会看到命名不一致的情况。例如,主接口可能名为“ens3”,而辅助接口名为“eth0”。在实例运行时添加辅助接口会导致出现命名不一致的情况。

您可以通过在启动时添加接口,或者重新引导实例来避免命名不一致。或者,当接口正在运行时,您可以通过以下方法更改名称: 

ip link set eth0 name ens4 && ip link set ens4 up

2.创建或编辑辅助网络接口“ifcfg-eth1”配置文件。 

vi /etc/sysconfig/network-scripts/ifcfg-eth1

3.编辑辅助接口文件,使其类似于下文。将编辑应用到您的场景中,包括辅助接口 MAC 地址。您可以使用“ip a”命令查找辅助接口 MAC 地址。 

DEVICE=eth1
NAME=eth1
HWADDR=00:00:00:00:00:00
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
NM_CONTROLLED=no

如果辅助接口上有多个 IP 地址,请按以下方式进行配置: 

DEVICE=eth1
NAME=eth1
HWADDR=00:00:00:00:00:00
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
NM_CONTROLLED=no
DEFROUTE=no
IPADDR=172.31.0.162
PREFIX=20
IPADDR1=172.31.13.162
PREFIX1=20
IPADDR2=172.31.1.151
PREFIX2=20

4.要让主接口不丢失连接,请确保默认网关保留在主路由表上。为此,请编辑 /etc/sysconfig/network 文件: 

vi /etc/sysconfig/network

添加以下行: 

GATEWAYDEV=eth0

5.重启网络: 

systemctl restart network

创建新的辅助路由表

主路由表在 Linux 上的 ID 为 254。默认情况下,根据此表来路由接口流量。您必须为辅助接口创建新的路由表。

1.查找并记录默认网关:

ip route | grep default

2.为辅助接口创建新的路由表,然后使用您在上一步中找到的网关 IP 添加默认网关路由。在此示例中,新表 ID 为1000,IP 为“172.31.16.1”:

ip route add default via 172.31.16.1 dev eth1 table 1000

3.请确保表 1000 具有辅助接口上存在的每个 IP 的路由。

以下为两个 IP 的示例: 

ip route add 172.31.0.162 dev eth1 table 1000
ip route add 172.31.13.162 dev eth1 table 1000

4.检查表 1000 并确保正确无误: 

ip route show table 1000

在路由策略数据库中设置规则

在路由策略中,为辅助接口上存在的每个 IP 设置规则,使得来自这些 IP 的流量根据表 1000 进行路由。

ip rule add from 172.31.0.162 lookup 1000
ip rule add from 172.31.13.162 lookup 1000

确保检查这些 IP 的连接。如果您有弹性 IP 指向这些 IP,也可从公有网络访问它们。

创建辅助静态路由文件

1.为确保新的路由和规则在每次启动之后都生效,请创建并配置“route-eth1”静态路由文件。

vi /etc/sysconfig/network-scripts/route-eth1

2.输入与您在命令行中创建辅助路由表时输入的相同路由。区别是省略了“ip route add”。 

default via 172.31.16.1 dev eth1 table 1000
172.31.0.162 dev eth1 table 1000
172.31.13.162 dev eth1 table 1000

3.创建或编辑 rule-eth1 的规则文件: 

vi /etc/sysconfig/network-scripts/rule-eth1

创建新的辅助路由表时,输入与您在命令行中输入的相同路由。区别是省略了“ip rule add”。 

from 172.31.0.162 lookup 1000
from 172.31.13.162 lookup 1000

配置 CentOS 或 RHEL IP 设置之后,重启接口时将保留路由和规则。 


此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 访问 AWS 支持中心

发布时间:2014 年 7 月 3 日

更新时间:2018 年 9 月 4 日