

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

# 管理 EC2 執行個體的 IPv4 地址
<a name="working-with-ip-addresses"></a>

您可以在啟動執行個體時，將公有 IPv4 地址指派給該執行個體。您可以在主控台中透過 **Instances** (執行個體) 頁面或 **Network Interfaces** (網路介面) 頁面檢視您執行個體的 IPv4 地址。

**Topics**
+ [在啟動時指派公有 IPv4 位址](#public-ip-addresses)
+ [在啟動時指派私有 IPv4 位址](#assign-private-ipv4-address)
+ [檢視主要 IPv4 位址。](#view-instance-ipv4-addresses)
+ [使用執行個體中繼資料來檢視 IPv4 位址](#view-instance-ipv4-addresses-imds)

## 在啟動時指派公有 IPv4 位址
<a name="public-ip-addresses"></a>

每一個子網都會有一個屬性，以判定是否將公有 IP 地址指派至啟動到該子網的執行個體。非預設子網預設會將此屬性設定為 false，而預設子網會將此屬性設定為 true。當您啟動執行個體時，也可以使用公有 IPv4 定址功能控制是否將公有 IPv4 地址指派至執行個體；您可以覆寫子網之 IP 定址屬性的預設行為。公有 IPv4 地址會從 Amazon 的公有 IPv4 地址集區指派，並會指派給具有裝置索引 eth0 的網路介面。此功能取決於啟動執行個體時的特定條件。

**考量事項**
+ 您可以在啟動後透過[管理與網路介面相關聯的 IP 位址，從執行個體取消指派公有 IP 位址](managing-network-interface-ip-addresses.md)。如需公有 IPv4 地址的詳細資訊，請參閱[公有 IPv4 地址](using-instance-addressing.md#concepts-public-addresses)。
+ 如果指定多個網路介面，則無法自動指派公有 IP 位址。此外，如果您為 eth0 指定現有網路介面，則無法使用自動指派公有 IP 功能覆寫子網路設定。
+ 不過，不論您是否在啟動期間將公有 IP 位址指派給執行個體，在啟動執行個體之後，都可以建立彈性 IP 位址與執行個體的關聯。如需詳細資訊，請參閱[彈性 IP 位址](elastic-ip-addresses-eip.md)。您也可以修改子網的公有 IPv4 定址行為。如需詳細資訊，請參閱[修改子網路的公有 IPv4 定址屬性](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-public-ip.html)。

------
#### [ Console ]

**若要在啟動時指派公有 IPv4 位址**  
遵循程序[啟動執行個體](ec2-launch-instance-wizard.md)，當您設定 [Network Settings](ec2-instance-launch-parameters.md#liw-network-settings) (網路設定) 時，選擇選項以 **Auto-assign Public IP** (自動指派公有 IP)。

------
#### [ AWS CLI ]

**若要在啟動時指派公有 IPv4 位址**  
請使用 `--associate-public-ip-address` 選項並搭配 [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) 命令。

```
--associate-public-ip-address
```

------
#### [ PowerShell ]

**若要在啟動時指派公有 IPv4 位址**  
使用 [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) cmdlet 搭配 `-AssociatePublicIp` 參數。

```
-AssociatePublicIp $true
```

------

## 在啟動時指派私有 IPv4 位址
<a name="assign-private-ipv4-address"></a>

您可以指定子網路 IPv4 位址範圍中的 IPv4 位址，或讓 Amazon EC2 為您選擇一個。此地址會指派給主要網路介面。

若要在啟動之後指派 IPv4 位址，請參閱 [將次要 IP 位址指派給執行個體](instance-secondary-ip-addresses.md#assign-secondary-ip-address)。

------
#### [ Console ]

**若要在啟動時指派私有 IPv4 位址**  
請遵循該程序來[啟動執行個體](ec2-launch-instance-wizard.md)。當您設定[網路設定](ec2-instance-launch-parameters.md#liw-network-settings)時，請展開**進階網路組態**，然後輸入**主要 IP** 的值。

------
#### [ AWS CLI ]

**若要在啟動時指派私有 IPv4 位址**  
請使用 `--private-ip-address` 選項並搭配 [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) 命令。

```
--private-ip-addresses 10.251.50.12
```

若要讓 Amazon EC2 選擇 IP 位址，請忽略此選項。

------
#### [ PowerShell ]

**若要在啟動時指派私有 IPv4 位址**  
使用 [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) cmdlet 搭配 `-PrivateIpAddress` 參數。

```
-PrivateIpAddress 10.251.50.12
```

若要讓 Amazon EC2 選擇 IP 位址，請忽略此參數。

------

## 檢視主要 IPv4 位址。
<a name="view-instance-ipv4-addresses"></a>

公有 IPv4 地址會顯示為主控台中網路介面的屬性，但會透過 NAT 映射至主要私有 IPv4 地址。因此，如果您檢查執行個體上網路介面的屬性 (例如，透過 `ifconfig` (Linux) 或 `ipconfig` (Windows))，則不會顯示公有 IPv4 地址。

------
#### [ Console ]

**若要檢視執行個體的 IPv4 位址**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取執行個體。

1. 在**聯網**索引標籤中，尋找**公有 IPv4 位址**和**私有 IPv4 位址**。

1. (選用) **聯網**索引標籤也包含執行個體的網路介面和彈性 IP 位址。

------
#### [ AWS CLI ]

**若要檢視執行個體的主要 IPv4 位址**  
使用 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) 命令。

```
aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 \
    --query "Reservations[].Instances[].PrivateIpAddress" \
    --output text
```

以下為範例輸出。

```
10.251.50.12
```

------
#### [ PowerShell ]

**若要檢視執行個體的主要 IPv4 位址**  
使用 [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) cmdlet。

```
(Get-EC2Instance `
    -InstanceId i-1234567890abcdef0).Instances.PrivateIpAddress
```

以下為範例輸出。

```
10.251.50.12
```

------

## 使用執行個體中繼資料來檢視 IPv4 位址
<a name="view-instance-ipv4-addresses-imds"></a>

可以透過擷取執行個體中繼資料來取得執行個體的 IPv4 位址。如需詳細資訊，請參閱[使用執行個體中繼資料管理您的 EC2 執行個體](ec2-instance-metadata.md)。

**若要使用執行個體中繼資料來檢視 IPv4 位址**

1. 連線到您的執行個體。如需詳細資訊，請參閱[連線至 EC2 執行個體](connect.md)。

1. 請執行下列其中一個命令：

------
#### [ IMDSv2 ]

**Linux**  
透過 Linux 執行個體執行下面的命令。

   ```
   TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
   && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/local-ipv4
   ```

**Windows**  
透過 Windows 執行個體中執行以下命令。

   ```
   [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
       -Method PUT -Uri http://169.254.169.254/latest/api/token
   ```

   ```
   Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} `
       -Method GET -Uri http://169.254.169.254/latest/meta-data/local-ipv4
   ```

------
#### [ IMDSv1 ]

**Linux**  
透過 Linux 執行個體執行下面的命令。

   ```
   curl http://169.254.169.254/latest/meta-data/local-ipv4
   ```

**Windows**  
透過 Windows 執行個體中執行以下命令。

   ```
   Invoke-RestMethod http://169.254.169.254/latest/meta-data/local-ipv4
   ```

------

1. 使用下列其中一個命令來存取公有 IP 位址。如果有與執行個體相關聯的彈性 IP 位址，命令會傳回彈性 IP 位址。

------
#### [ IMDSv2 ]

**Linux**  
透過 Linux 執行個體執行下面的命令。

   ```
   [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
   && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-ipv4
   ```

**Windows**  
透過 Windows 執行個體中執行以下命令。

   ```
   [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
       -Method PUT -Uri http://169.254.169.254/latest/api/token
   ```

   ```
   Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} `
       -Method GET -Uri http://169.254.169.254/latest/meta-data/public-ipv4
   ```

------
#### [ IMDSv1 ]

**Linux**  
透過 Linux 執行個體執行下面的命令。

   ```
   curl http://169.254.169.254/latest/meta-data/public-ipv4
   ```

**Windows**  
透過 Windows 執行個體中執行以下命令。

   ```
   Invoke-RestMethod http://169.254.169.254/latest/meta-data/public-ipv4
   ```

------