

# 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 주소 풀에서 할당되고 디바이스 색인이 0인 네트워크 인터페이스에 할당됩니다. 이 기능은 인스턴스 시작 시점의 특정 조건에 따라 달라집니다.

**고려 사항**
+ [네트워크 인터페이스와 연결된 IP 주소를 관리](managing-network-interface-ip-addresses.md)하여 시작 후 인스턴스에서 퍼블릭 IP 주소 할당을 취소할 수 있습니다. 퍼블릭 IPv4 주소에 대한 자세한 내용은 [퍼블릭 IPv4 주소](using-instance-addressing.md#concepts-public-addresses) 섹션을 참조하세요.
+ 네트워크 인터페이스를 2개 이상 지정하면 퍼블릭 IP 주소를 자동 할당할 수 없습니다. 또한 디바이스 색인 0에 대해 기존 네트워크 인터페이스를 지정하면 퍼블릭 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 주소를 할당하는 방법**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) 명령을 `--associate-public-ip-address` 옵션과 함께 사용합니다.

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

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

**시작 시 퍼블릭 IPv4 주소를 할당하는 방법**  
`-AssociatePublicIp` 파라미터와 함께 [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) cmdlet을 사용합니다.

```
-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 주소를 할당하는 방법**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) 명령을 `--private-ip-address` 옵션과 함께 사용합니다.

```
--private-ip-addresses {{10.251.50.12}}
```

Amazon EC2가 IP 주소를 선택하도록 하려면 이 옵션을 생략합니다.

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

**시작 시 프라이빗 IPv4 주소를 할당하는 방법**  
`-PrivateIpAddress` 파라미터와 함께 [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) cmdlet을 사용합니다.

```
-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
   ```

------