

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Snowball Edge 上计算实例的网络配置
<a name="network-config-ec2"></a>

在 Snowball Edge 上启动计算实例后，必须通过创建网络接口为其提供 IP 地址。Snowball Edges 支持两种网络接口，一种是虚拟网络接口，另一种是直接网络接口。

**虚拟网络接口 (VNI)**-虚拟网络接口是连接到 Snowball Edge 上 EC2兼容实例的标准网络接口。无论您是否还使用直接网络接口，都必须为每个 EC2兼容实例创建一个 VNI。通过 VNI 的流量受您设置的安全组保护。您只能 VNIs与用于控制 Snowball Edge 的物理网络端口关联。

**注意**  
VNI 将使用与管理 Snowball Edge 相同的物理接口（RJ45SFP\$1 或 QSFP）。不使用用于设备管理的物理接口而在其他物理接口上创建 VNI 可能会导致意外结果。

**直接网络接口（DNI）**：直接网络接口（DNI）是一项高级网络特征，可实现组播流、传递路由和负载均衡等应用场景。通过在不进行任何中间转换或过滤的情况下为实例提供第 2 层网络访问权限，您可以在 Snowball Edge 的网络配置上获得更大的灵活性并提高网络性能。 DNIs 支持 VLAN 标记和自定义 MAC 地址。安全组 DNIs 不保护开启的流量。

在 Snowball Edge 设备上， DNIs 可以与、SFP 或 RJ45 QSFP 端口关联。每个物理端口最多支持 63 个 DNIs。 DNIs 不必与用于管理 Snowball Edge 的同一个物理网络端口相关联。

**注意**  
Snowball Edge 存储经过优化（具有 EC2 计算功能）的设备不支持。 DNIs

**Topics**
+ [Snowball Edge DNIs 或 VNIs 其上的先决条件](#snowcone-configuration-prerequisites)
+ [在 Snowball Edge 上设置虚拟网络接口 (VNI)](#setup-vni)
+ [在 Snowball Edge 上设置直接网络接口 (DNI)](#snowcone-setup-dni)

## Snowball Edge DNIs 或 VNIs 其上的先决条件
<a name="snowcone-configuration-prerequisites"></a>

在配置 VNI 或 DNI 之前，请确保您已符合以下先决条件。

****

1. 确保您的设备已通电，并且您的一个物理网络接口（例如 RJ45 端口）已通过 IP 地址连接。

1. 获取与你在 Snowball Edge 上使用的物理网络接口关联的 IP 地址。

1. 配置 Snowball Edge 客户端。有关更多信息，请参阅 [为 Snowball Edge 客户端配置配置文件](using-client-commands.md#client-configuration)。

1. 配置 Amazon CLI。有关更多信息，请参阅《 Amazon Command Line Interface 用户指南》[Amazon CLI中的《入门](https://docs.amazonaws.cn/cli/latest/userguide/cli-chap-getting-started.html)》。

1. 解锁设备。
   + 用于 Amazon OpsHub 解锁设备。有关更多信息，请参阅使用 [nowball](https://docs.amazonaws.cn/snowball/latest/developer-guide/connect-unlock-device.html) Edge。 Amazon OpsHub
   + 使用 Snowball Edge 客户端解锁设备。有关更多信息，请参阅 [解锁 Snowball Edge](unlockdevice.md)。

1. 在设备上启动 EC2兼容的实例。您将要将 VNI 与该实例相关联。

1. 使用 Snowball Edge 客户端运行 `describe-device` 命令。该命令的输出将提供物理网络接口的列表 IDs。有关更多信息，请参阅 [查看 Snowball Edge 的状态](using-client-commands.md#client-status)。

1. 标识您要使用的物理网络接口的 ID 并记下它。

## 在 Snowball Edge 上设置虚拟网络接口 (VNI)
<a name="setup-vni"></a>

 在确定物理网络接口的 ID 后，您可以使用该物理接口设置虚拟网络接口（VNI）。请使用以下过程设置 VNI。在创建 VNI 之前，请务必执行先决条件任务。

**创建 VNI 并关联 IP 地址**

1. 使用 Snowball Edge 客户端运行 `create-virtual-network-interface` 命令。以下示例显示使用两种不同的 IP 地址分配方法（`DHCP` 或 `STATIC`）运行此命令。`DHCP` 方法使用动态主机配置协议（DHCP）。

   ```
   snowballEdge create-virtual-network-interface \
   --physical-network-interface-id s.ni-abcd1234 \
   --ip-address-assignment DHCP \
   --profile profile-name
           //OR//
           
   snowballEdge create-virtual-network-interface \
   --physical-network-interface-id s.ni-abcd1234 \
   --ip-address-assignment STATIC \
   --static-ip-address-configuration IpAddress=192.0.2.0,Netmask=255.255.255.0 \
   --profile profile-name
   ```

   该命令返回一个 JSON 结构，其中包含 IP 地址。记下该 IP 地址，以便在稍后的流程中与该`ec2 associate-address` Amazon CLI 命令一起使用。

   每当你需要这个 IP 地址时，都可以使用 Snowball Edge Client 命令 Snow `describe-virtual-network-interfaces` ball Edge 客户端命令或 Amazon CLI 命令`aws ec2 describe-addresses`来获取它。

1. 使用 Amazon CLI 将 IP 地址与 EC2兼容实例相关联，用您的值替换红色文本：

   ```
   aws ec2 associate-address --public-ip 192.0.2.0 --instance-id s.i-01234567890123456 --endpoint http://Snowball Edge physical IP address:8008
   ```

## 在 Snowball Edge 上设置直接网络接口 (DNI)
<a name="snowcone-setup-dni"></a>

**注意**  
 直接网络接口功能将于 2021 年 1 月 12 日当天或之后推出，并且在所有可用 Snowball Edges Amazon Web Services 区域 的地方都可用。

### 在 Snowball Edge 上获得 DNI 的先决条件
<a name="use-snowwire-prerequisites"></a>

在设置直接网络接口（DNI）前，您必须执行先决条件部分中的任务。

1. 在设置 DNI 之前，请执行先决条件任务。有关说明，请参阅[Snowball Edge DNIs 或 VNIs 其上的先决条件](#snowcone-configuration-prerequisites)。

1. 此外，您必须在设备上启动实例，创建 VNI 并将其与该实例关联。有关说明，请参阅[在 Snowball Edge 上设置虚拟网络接口 (VNI)](#setup-vni)。
**注意**  
如果您通过 in-the-field软件更新为现有设备添加了直接联网，则必须重新启动设备两次才能完全启用该功能。

**创建 DNI 并关联 IP 地址**

1. 通过运行以下命令创建直接网络接口并将其连接到 EC2与 Amazon 兼容的实例。在下一步中，您需要设备的 MAC 地址。

   ```
   create-direct-network-interface [--endpoint endpoint] [--instance-id instanceId] [--mac macAddress]
                                   [--physical-network-interface-id physicalNetworkInterfaceId] 
                                   [--unlock-code unlockCode] [--vlan vlanId]
   ```

   选项

   ** --endpoint <endpoint>** 要将此请求发送到的端点。您设备的端点将是一个使用 `https` 方案且后跟一个 IP 地址的 URL。例如，如果您设备的 IP 地址为 123.0.1.2，则您的设备的端点将是 https://123.0.1.2。

   ** --instance-id <instanceId>**要连接接口的 EC2兼容实例 ID（可选）。

   ** --mac <macAddress>** 设置网络接口的 MAC 地址（可选）。

   **--physical-network-interface-id <physicalNetworkInterfaceId>** 用于创建新虚拟网络接口的物理网络接口 ID。您可以使用 `describe-device` 命令确定 Snowball Edge 上可用的物理网络接口。

    **--vlan <vlanId>** 为接口设置分配的 VLAN（可选）。指定后，从接口发送的所有流量都将使用指定的 VLAN ID 进行标记。对指定的 VLAN ID 对传入流量进行筛选，并在传递到实例之前删除所有 VLAN 标记。

1. 创建 DNI 并将其与兼容实例关联后，您必须在 EC2兼容 Ama EC2 zon 的实例中进行两项配置更改。
   + 首先是进行更改，确保发送给与 EC2兼容实例关联的 VNI 的数据包通过 eth0 发送。
   + 第二项更改应将您的直接网络接口配置为在启动时使用 DCHP 或静态 IP。

   以下是适用于亚马逊 Linux 2 和 CentOS Linux 的 shell 脚本的示例，这些脚本可进行这些配置更改。

------
#### [ Amazon Linux 2 ]

   ```
   # Mac address of the direct network interface. 
   # You got this when you created the direct network interface.
   DNI_MAC=[MAC ADDRESS FROM CREATED DNI]
   
   # Configure routing so that packets meant for the VNI always are sent through eth0.
   PRIVATE_IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)
   PRIVATE_GATEWAY=$(ip route show to match 0/0 dev eth0 | awk '{print $3}')
   ROUTE_TABLE=10001
   echo "from $PRIVATE_IP table $ROUTE_TABLE" > /etc/sysconfig/network-scripts/rule-eth0
   echo "default via $PRIVATE_GATEWAY dev eth0 table $ROUTE_TABLE" > /etc/sysconfig/network-scripts/route-eth0
   echo "169.254.169.254 dev eth0" >> /etc/sysconfig/network-scripts/route-eth0
   
   # Query the persistent DNI name, assigned by udev via ec2net helper.
   #   changable in /etc/udev/rules.d/70-persistent-net.rules
   DNI=$(ip --oneline link | grep -i $DNI_MAC | awk -F ': ' '{ print $2 }')
   
   # Configure DNI to use DHCP on boot.
   cat << EOF > /etc/sysconfig/network-scripts/ifcfg-$DNI
   DEVICE="$DNI"
   NAME="$DNI"
   HWADDR=$DNI_MAC
   ONBOOT=yes
   NOZEROCONF=yes
   BOOTPROTO=dhcp
   TYPE=Ethernet
   MAINROUTETABLE=no
   EOF
   
   # Make all changes live.
   systemctl restart network
   ```

------
#### [ CentOS Linux ]

   ```
   # Mac address of the direct network interface. You got this when you created the direct network interface.
   DNI_MAC=[MAC ADDRESS FROM CREATED DNI]
   # The name to use for the direct network interface. You can pick any name that isn't already in use.
   DNI=eth1
   
   # Configure routing so that packets meant for the VNIC always are sent through eth0 
   PRIVATE_IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)
   PRIVATE_GATEWAY=$(ip route show to match 0/0 dev eth0 | awk '{print $3}')
   ROUTE_TABLE=10001
   echo from $PRIVATE_IP table $ROUTE_TABLE > /etc/sysconfig/network-scripts/rule-eth0
   echo default via $PRIVATE_GATEWAY dev eth0 table $ROUTE_TABLE > /etc/sysconfig/network-scripts/route-eth0
   
   # Configure your direct network interface to use DHCP on boot.
   cat << EOF > /etc/sysconfig/network-scripts/ifcfg-$DNI
   DEVICE="$DNI"
   NAME="$DNI"
   HWADDR="$DNI_MAC"
   ONBOOT=yes
   NOZEROCONF=yes
   BOOTPROTO=dhcp
   TYPE=Ethernet
   EOF
   
   # Rename DNI device if needed.
   CURRENT_DEVICE_NAME=$(LANG=C ip -o link | awk -F ': ' -vIGNORECASE=1 '!/link\/ieee802\.11/ && /'"$DNI_MAC"'/ { print $2 }')
   ip link set $CURRENT_DEVICE_NAME name $DNI
   
   # Make all changes live.
   systemctl restart network
   ```

------