

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Snowball Edge 上運算執行個體的網路組態
<a name="network-config-ec2"></a>

在 Snowball Edge 上啟動運算執行個體後，您必須透過建立網路介面來為其提供 IP 地址。Snowball Edges 支援兩種類型的網路界面：虛擬網路界面和直接網路界面。

**虛擬網路界面 (VNI)** – 虛擬網路界面是連線至 Snowball Edge 上 EC2-compatible執行個體的標準網路界面。無論您是否使用直接網路界面，都必須為每個 EC2-compatible執行個體建立 VNI。通過 VNI 的流量受到您設定的安全群組保護。您只能將 VNIs與您用來控制 Snowball Edge 的實體網路連接埠建立關聯。

**注意**  
VNI 將使用用於管理 Snowball Edge 的相同實體界面 (RJ45、SFP\+ 或 QSFP)。在與用於裝置管理的實體界面不同的實體界面上建立 VNI 可能會導致非預期的結果。

**直接網路界面 (DNI)** – 直接網路界面 (DNI) 是一種進階網路功能，可啟用多點傳送串流、傳輸路由和負載平衡等使用案例。透過為執行個體提供 layer 2 網路存取，而不需要任何中介轉譯或篩選，您可以提高 Snowball Edge 網路組態的彈性，並改善網路效能。DNIs支援 VLAN 標籤和自訂 MAC 地址。DNIs上的流量不受安全群組保護。

在 Snowball Edge 裝置上，DNIs 可以與 RJ45、SFP 或 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. 設定 AWS CLI。如需詳細資訊，請參閱 AWS Command Line Interface 《 使用者指南》中的 [入門 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。

1. 解鎖裝置。
   + 使用 AWS OpsHub 解鎖裝置。如需詳細資訊，請參閱使用 [解鎖 Snowball Edge AWS OpsHub](https://docs.aws.amazon.com/snowball/latest/developer-guide/connect-unlock-device.html)。
   + 使用 Snowball Edge 用戶端解鎖裝置。如需詳細資訊，請參閱[解鎖 Snowball Edge](unlockdevice.md)。

1. 在裝置上啟動 EC2-compatible執行個體。您將建立 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
   ```

   該命令會傳回含有 IP 地址的 JSON 結構。請記下該 IP 地址，以便稍後在程序中與 `ec2 associate-address` AWS CLI 命令搭配使用。

   每當您需要此 IP 地址時，您可以使用 Snowball Edge 用戶端命令 `describe-virtual-network-interfaces` Snowball Edge 用戶端命令或 AWS CLI 命令`aws ec2 describe-addresses`來取得它。

1. 使用 AWS CLI 將 IP 地址與 EC2-compatible執行個體建立關聯，將紅色文字取代為您的值：

   ```
   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 提供的所有 AWS 區域 中使用。

### 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. 執行下列命令，建立直接網路界面並將其連接至與 Amazon EC2-compatible執行個體。下一個步驟需要裝置的 MAC 地址。

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

   OPTIONS

   ** --endpoint <endpoint>** 傳送此請求的端點。您裝置的端點將是使用 `https`結構描述後接 IP 地址的 URL。例如，如果裝置的 IP 地址為 123.0.1.2，則裝置的端點會是 https://123.0.1.2。

   ** --instance-id <instanceId>** 要連接界面的 EC2-compatible執行個體 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-compatible執行個體建立關聯之後，您必須在 Amazon EC2-compatible執行個體內進行兩項組態變更。
   + 首先是變更，確保透過 eth0 傳送與 EC2-compatible執行個體相關聯之 VNI 適用的封包。
   + 第二個變更會將您的直接網路界面設定為在開機時使用 DCHP 或靜態 IP。

   以下是 Amazon 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
   ```

------