EC2 인스턴스의 IPv4 주소 관리하기
EC2 인스턴스의 IPv4 주소 관리하기
인스턴스를 시작할 때 공용 IPv4 주소를 할당할 수 있어요. 인스턴스의 IPv4 주소는 콘솔의 Instances 페이지 또는 Network Interfaces 페이지를 통해 볼 수 있어요. 이 절에서 시작 시 공용·개인 IPv4 주소를 할당하고 확인하는 방법을 살펴볼게요.
출처: 문서
본문
인스턴스를 시작할 때 공용 IPv4 주소를 할당할 수 있어요. 인스턴스의 IPv4 주소는 콘솔의 Instances 페이지 또는 Network Interfaces 페이지를 통해 볼 수 있어요.
시작 시 공용 IPv4 주소 할당
각 서브넷에는 그 서브넷에 시작된 인스턴스에 공용 IP 주소를 할당할지 여부를 결정하는 속성이 있어요. 기본적으로 nondefault 서브넷은 이 속성이 false이고, default 서브넷은 true예요. 인스턴스를 시작할 때 공용 IPv4 주소 지정 기능을 사용해 인스턴스에 공용 IPv4 주소를 할당할지 제어할 수도 있는데, 서브넷의 IP 주소 지정 속성의 기본 동작을 재정의할 수 있어요. 공용 IPv4 주소는 Amazon의 공용 IPv4 주소 풀에서 할당되며, device index 0의 네트워크 인터페이스에 할당돼요. 이 기능은 인스턴스를 시작할 당시의 특정 조건에 따라 달라져요.
고려 사항
- 시작 후에는 네트워크 인터페이스와 연결된 IP 주소 관리로 인스턴스에서 공용 IP 주소를 할당 해제할 수 있어요. 공용 IPv4 주소에 대한 자세한 내용은 Public IPv4 addresses를 참고하세요.
- 네트워크 인터페이스를 두 개 이상 지정하면 공용 IP 주소를 자동 할당할 수 없어요. 또한 device index 0에 기존 네트워크 인터페이스를 지정하면 자동 공용 IP 지정 기능으로 서브넷 설정을 재정의할 수 없어요.
- 시작 중에 공용 IP 주소를 할당하든 안 하든, 시작 후에는 인스턴스에 Elastic IP 주소를 연결할 수 있어요. 자세한 내용은 Elastic IP addresses를 참고하세요. 서브넷의 공용 IPv4 주소 지정 동작도 수정할 수 있어요. 자세한 내용은 Modify the public IPv4 addressing attribute for your subnet을 참고하세요.
Console(콘솔) —
시작 시 공용 IPv4 주소를 할당하려면
인스턴스 시작 절차를 따르고, Network Settings를 구성할 때 Auto-assign Public IP 옵션을 선택합니다.
AWS CLI —
시작 시 공용 IPv4 주소를 할당하려면
run-instances 명령을 --associate-public-ip-address 옵션과 함께 사용합니다.
--associate-public-ip-address
PowerShell —
시작 시 공용 IPv4 주소를 할당하려면
New-EC2Instance cmdlet을 -AssociatePublicIp 매개 변수와 함께 사용합니다.
-AssociatePublicIp $true
시작 시 개인 IPv4 주소 할당
서브넷의 IPv4 주소 범위에서 개인 IPv4 주소를 지정하거나, Amazon EC2가 알아서 선택하게 할 수 있어요. 이 주소는 기본(primary) 네트워크 인터페이스에 할당돼요.
시작 후에 IPv4 주소를 할당하려면 Assign secondary IP addresses to an instance를 참고하세요.
Console(콘솔) —
시작 시 개인 IPv4 주소를 할당하려면
인스턴스 시작 절차를 따릅니다. Network Settings를 구성할 때 Advanced network configuration을 펼치고 Primary IP에 값을 입력합니다.
AWS CLI —
시작 시 개인 IPv4 주소를 할당하려면
run-instances 명령을 --private-ip-address 옵션과 함께 사용합니다.
--private-ip-addresses 10.251.50.12
Amazon EC2가 IP 주소를 선택하게 하려면 이 옵션을 생략하세요.
PowerShell —
시작 시 개인 IPv4 주소를 할당하려면
New-EC2Instance cmdlet을 -PrivateIpAddress 매개 변수와 함께 사용합니다.
-PrivateIpAddress 10.251.50.12
Amazon EC2가 IP 주소를 선택하게 하려면 이 매개 변수를 생략하세요.
기본 IPv4 주소 보기
공용 IPv4 주소는 콘솔에서 네트워크 인터페이스의 속성으로 표시되지만, NAT를 통해 기본 개인 IPv4 주소에 매핑돼요. 따라서 인스턴스에서 네트워크 인터페이스 속성을 검사하면(예: Linux의 ifconfig나 Windows의 ipconfig) 공용 IPv4 주소는 표시되지 않아요.
Console(콘솔) —
인스턴스의 IPv4 주소를 보려면
- Amazon EC2 콘솔을 https://console.aws.amazon.com/ec2/에서 엽니다.
- 탐색 창에서 Instances를 선택합니다.
- 인스턴스를 선택합니다.
- Networking 탭에서 Public IPv4 address와 Private IPv4 addresses를 찾습니다.
- (선택 사항) Networking 탭에는 인스턴스의 네트워크 인터페이스와 Elastic IP 주소도 포함돼요.
AWS CLI —
인스턴스의 기본 IPv4 주소를 보려면
describe-instances 명령을 사용합니다.
aws ec2 describe-instances \
--instance-ids i-1234567890abcdef0 \
--query "Reservations[].Instances[].PrivateIpAddress" \
--output text
다음은 출력 예시예요.
10.251.50.12
PowerShell —
인스턴스의 기본 IPv4 주소를 보려면
Get-EC2Instance cmdlet을 사용합니다.
(Get-EC2Instance `
-InstanceId i-1234567890abcdef0).Instances.PrivateIpAddress
다음은 출력 예시예요.
10.251.50.12
인스턴스 메타데이터로 IPv4 주소 보기
인스턴스 메타데이터를 조회해 인스턴스의 IPv4 주소를 얻을 수 있어요. 자세한 내용은 Use instance metadata to manage your EC2 instance를 참고하세요.
인스턴스 메타데이터로 IPv4 주소를 보려면
- 인스턴스에 연결합니다. 자세한 내용은 Connect to your EC2 instance를 참고하세요.
- 다음 명령 중 하나를 실행합니다.
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
- 다음 명령 중 하나를 사용해 공용 IP 주소에 접근합니다. Elastic IP 주소가 인스턴스와 연결되어 있으면 명령이 Elastic 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