Eden 向您演示如何
将辅助网络接口用于
Ubutu Amazon EC2 实例

Eden_CPT1018

如何让我的辅助网络接口在我的 Ubuntu Amazon 弹性计算云 (Amazon EC2) 实例中工作? 

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

要让辅助网络接口工作,请创建一个辅助网络配置文件,包含路由表,然后在自定义路由表策略数据库中设置规则,使得辅助接口的流量使用新路由表。

注意:对于以下 Ubuntu 版本,添加辅助网络接口的步骤各不相同:

  • Ubuntu 14.04
  • Ubuntu 16.04
  • Ubuntu 18.04

注意:对于 CentOS 或 RHEL 实例,请参阅如何让我的辅助网络接口在我的 CentOS 或 RHEL 实例中工作?

配置 Ubuntu 14.04 或 16.04

创建辅助接口配置文件、配置路由表和为 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 系列类型),您可能会看到命名不一致的情况。例如,如果辅助接口名为“eth0”,主接口可能名为“ens3”。在实例运行时添加辅助接口会导致这种命名不一致的情况。

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

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

2.为辅助接口创建一个配置文件。本示例使用辅助接口“eth1”。确保更改“eth1”以匹配在第 1 步中发现的辅助接口名称。 

vi /etc/network/interfaces.d/51-eth1.cfg

下面是一个示例,其中包含单个 IP 地址 172.31.21.115 和辅助接口上的网关 172.31.16.1。确保根据您的实际情况更改 IP 地址和网关。另请注意,您的网关必须是您的子网中的第一个有效 IP 地址。 

auto eth1
iface eth1 inet static 
address 172.31.21.115
netmask 255.255.240.0

# Gateway configuration
up ip route add default via 172.31.16.1 dev eth1 table 1000

# Routes and rules
up ip route add 172.31.21.115 dev eth1 table 1000
up ip rule add from 172.31.21.115 lookup 1000

以下是多 IP 地址的示例。在本示例中,IP 地址为 172.31.21.115 和 172.31.18.46,网关为 172.31.16.1。确保根据您的实际情况更新 IP 地址和网关。 

auto eth1

# Enter one or more IP settings
iface eth1 inet static
address 172.31.21.115
netmask 255.255.240.0

iface eth1 inet static
address 172.31.18.46
netmask 255.255.240.0

# Default gateway for eth1
up ip route add default via 172.31.16.1 dev eth1 table 1000

# A route for every IP
up ip route add 172.31.21.115 dev eth1 table 1000
up ip route add 172.31.18.46 dev eth1 table 1000

# A policy rule for every IP
up ip rule add from 172.31.21.115 lookup 1000
up ip rule add from 172.31.18.46 lookup 1000

3.创建 restrict-default-gw 文件以防止在主表上覆盖默认网关:

vi /etc/dhcp/dhclient-enter-hooks.d/restrict-default-gw

4.将以下行添加到 restrict-default-gw 文件。确保更改“eth0”以匹配在第 1 步中发现的主接口名称。

case ${interface} in
  eth0)
    ;;
  *)
    unset new_routers
    ;;
esac

5.重启网络:

在 Ubuntu 14.04 中: 

(ifdown eth1 && ifup eth1)

在 Ubuntu 16.04 中 

systemctl restart networking

配置 Ubuntu 18.04

Ubuntu 18.04 已将其网络配置切换为 Netplan。以下示例使用了 Netplan 配置。请注意,Netplan 使用了 YAML 格式,因此缩进很重要。下面的示例使用了一个双空格缩进。

1.为辅助接口创建一个配置文件:

vi /etc/netplan/51-eth1.yaml

2.将以下行添加到 51-eth1.yaml 文件。

network:
  version: 2
  renderer: networkd
  ethernets:
    eth1:
      addresses:
       - 172.31.24.153/20
       - 172.31.28.195/20
      dhcp4: no
      routes:
       - to: 0.0.0.0/0
         via: 172.31.16.1 # Default gateway
         table: 1000
       - to: 172.31.24.153
         via: 0.0.0.0
         scope: link
         table: 1000
       - to: 172.31.28.195
         via: 0.0.0.0
         scope: link
         table: 1000
      routing-policy:
        - from: 172.31.24.153
          table: 1000
        - from: 172.31.28.195
          table: 1000

3.应用网络配置: 

netplan --debug apply

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

返回 AWS Support 知识中心

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

发布时间:2018 年 9 月 5 日