NAT Instance (outdated, but still at the exam)
- NAT는 네트워크 주소 변환을 뜻하며 NAT 인스턴스는 사설 서브넷 EC2 인스턴스가 인터넷에 연결되도록 허용
- NAT 인스턴스는 공용 서브넷에서 실행되어야 하고 공용 및 사설 서브넷을 연결함
- 설정에서 Source / destination Check를 반드시 비활성화해야 함
- NAT 인스턴스에는 고정된 탄력적 IP가 연결되어야 함
- IP 주소가 50.60.4.10인 공용 서버가 존재하며 이 때 사설 서브넷에서 액세스를 하려고 함
사설 서브넷에서 공용 서버로 연결하기 위해서는 공용 서브넷에 고유의 보안 그룹이 있는 NAT 인스턴스를 실행하면 됨
그 후 NAT 인스턴스에 탄력적 IP를 연결하고 라우팅 테이블을 수정하여 인스턴스 IP로 공용 서버로 액세스하기 위해
사설 서브넷과 공용 서브넷의 EC2 인스턴스로부터 NAT 인스턴스로 트래픽을 전송하도록 하여 NAT 인스턴스를 통과해야 함
따라서 요청에는 소스 IP가 10.0.0.20 인 사설 IP이고 목적지는 공용 서버인 50.60.4.10 일 때,
NAT 인스턴스를 통과하도록 하여 NAT 인스턴스는 트래픽을 다른 곳으로 전송하려는 것을 깨닫고 해당 서버로 트래픽을 보냄
공용 서버의 경우 목적지 IP는 같지만 소스 IP는 12.34.56.78인 NAT 인스턴스의 공용 IP에 해당하며
네트워크 패킷이 NAT 인스턴스로 재작성되는데 이처럼 NAT 인스턴스는 네트워크 패킷의 재작성 작업을 하여 소스 IP를 변경함
서버에서 응답할 때는 소스는 자기 자신인 50.60.4.10이고 목적지는 NAT 인스턴스의 공용 IP가 되며
NAT 인스턴스가 다시 EC2 인스턴스로 트래픽을 회신
이 때 소스는 공용 서버이고 목적지는 사설 IP이므로 일부의 IP가 재작성되어야 하므로
NAT 인스턴스를 위해 소스 및 목적지 확인 설정을 EC2 인스턴스에서 비활성화해야 하는 것
- NAT 인스턴스 작동 방식
공용 서브넷에 NAT 인스턴스를 생성하고 탄력적 IP를 연결한 후
라우팅 테이블을 통해 사설 인스턴스가 NAT 인스턴스에서 인터넷 Gateway까지 통신하도록 함
NAT Instance – Comments
- NAT 인스턴스에는 사전 구성된 Amazon Linux AMI를 사용할 수 있었지만
2020년 12월 31일로 표준 지원이 종료되었으므로 NAT Gateway를 권장 - NAT 인스턴스는 가용성이 높지 않고 초기화 설정으로 복원할 수 없어서 여러 AZ에 ASG를 생성해야 하고
복원되는 사용자 데이터 스크립트가 필요하기 때문에 복잡 - 작은 인스턴스는 큰 인스턴스에 비교해서 대역폭이 더 작음
- 보안 그룹과 규칙을 관리해야 함
인바운드에서는 사설 서브넷의 HTTP/HTTPS 트래픽을 허용하고 홈 네트워크의 SSH도 허용
아웃바운드에서는 트래픽이 나가도록 해야 함
<NAT 인스턴스 실습>
- NAT 인스턴스 생성
앞의 실습에서 사설 인스턴스에 인터넷 액세스가 불가능했던 것을 NAT 인스턴스를 생성해 해결해보도록 함
인스턴스를 생성하기 위한 Community AMI 중에서 amzn-ami-vpc-nat로 시작하는 것을 선택한 후 t2.micro를 사용하고
DemoVPC와 PublicSubnetA를 선택하여 공용 서브넷에서 사용하도록 선택
보안 그룹을 nat-instance-sg라고 한 후 SSH, VPC의 CIDR에서 오는 HTTP, HTTPS 트래픽을 허용하도록 규칙을 추가해 생성
- 네트워크 설정
사설 인스턴스가 NAT 인스턴스를 통해 인터넷 트래픽을 내보내도록 하기 위해 네트워크 설정을 수정
그 중 소스/목적지 확인에 대해 Stop 옵션으로 비활성화하여 중단하도록 함
NAT 인스턴스는 소스나 목적지가 자신이 아닐 때 트래픽을 송수신할 수 있어야 하므로
NAT 인스턴스를 사용한다면 소스/목적지 확인을 중단해야 함
그리고 NAT 인스턴스로 트래픽을 보내기 위해서 사설 인스턴스로 다시 SSH를 하기 위해 BastionHost로 EC2 연결
아직 핑에 대한 대답이 오지 않으므로 사설 서브넷에 인터넷 액세스를 주기 위해 사설 라우팅 테이블에서 Routes 탭 경로 수정
이를 위해 현재는 로컬 규칙만 있지만 인터넷으로 통신을 내보내기 위해 NAT 인스턴스를 통과하라는 규칙을 생성
이를 통해 해당 사설 서브넷 내에서 라우팅 테이블에 연결된 모든 EC2 인스턴스에서 인터넷으로 트래픽을 보낼 경우 통과하게 됨
그리고 NAT 인스턴스의 포트를 하나 활성화하기 위해 Security 탭의 보안 그룹 규칙에서 핑을 실행할 특정 포트를 활성화
인바운드 규칙 수정에서 핑에 대한 규칙은 ICMP이므로 All IMCP-IPv4로 하고 서브넷 항목에서는 VPC의 CIDR을 입력
이후 다시 핑을 실행할 경우 결과를 수신하게 됨
이를 통해 인터넷에 노출시키지 않고 사설 서브넷의 인스턴스에 인터넷 액세스 연결을 성공한 것을 알 수 있음
그러므로 사설 서브넷 인스턴스에 여전히 Public IP가 없이 Bastion 호스트만을 사용한 것을 볼 수 있음
'Cloud > AWS' 카테고리의 다른 글
[SAA] DNS 확인 옵션 및 Route 53 프라이빗 영역 (0) | 2022.04.27 |
---|---|
[SAA] NAT Gateway (0) | 2022.04.27 |
[SAA] Bastion 호스트 (0) | 2022.04.26 |
[SAA] 인터넷 Gateway 및 라우팅 테이블 (0) | 2022.04.26 |
[SAA] 서브넷 개요 (0) | 2022.04.26 |