local에서 private-instance까지 터널링으로 host하여 ping google.com하면 응답이 없는 것을 확인 할 수 있다. private-instance에서도 인터넷의 응답을 받고 싶으면 NAT 설정을 해줘야한다.
Nat이란? Network Address Translation으로 프라이빗 서브넷의 리소스가 인터넷이나 온프레이미스 네트워크와 같은 Virtual Private Cloud(VPC) 외부의 대상과 통신할 수 있다.
프라이빗 서브넷의 인터넷으로 항햐는 인바운드 IPv4 트래픽을 시작할 수 있지만 인터넷에서 시작된 인바운드 트래픽을 수신할 수 없다.
그림은 Nat 인스턴스 기본 사항이다.

프라이빗 서브넷과 연결된 라우팅 테이블은 프라이빗 서브넷의 인스턴스에서 퍼블릭 서브넷의 NAT인스턴스로 인터넷 트래픽을 전송한다. 그러면 NAT 인스턴스는 인터넷 게이트웨이로 트래픽ㅇ르 전송한다. 트래픽은 NAT 인스턴스의 퍼블릭 IP 주소로 귀속, NAT 인스턴스는 응답에 대해 높은 포트 번호를 지정합니다. 즉 응답이 되돌아오면 NAT 인스턴스가 응답에 대한 포트 번호를 기준으로 프라이빗 서브넷에는 인스턴스로 이 응답을 보낸다.
public-subnet에 NAT-instance로 구현
인스턴스 생성 -> 이름 태그: nat-instance
이미지-> amazon/amzn-ami-vpc-nat-2018.03.0.20230807.0-x86_64-ebs
키는 bastion-to-private으로 설정(전에 만든 키)
네트워크 편집
VPC 선택
서브넷은 public-subnet(bastion 인스턴스가있는 subnet과 동일)
public IPv4주소 자동할당
보안 규칙 설정 ssh 22포트 나중에 다시 설정
설정 완료된 이미지


VPC에서 라우팅 테이블에 private-route를 생성해준다.
서브넷 연결 -> private-subnet을 연결해준다.
라우팅 편집 -> 라우팅 추가
대상 0.0.0.0/0 대상 네트워크 인터페이스 NAT-instance로 설정

인터페이스가 제대로 설정이 되었다면 라우팅의 대상이 eni-로 된다.

그 이후 ec2로 되돌아와
NAT-Instance 선택 -> 작업 -> 네트워킹 -> 소스/대상 확인 변경 -> 소스/대상 확인 중지 선택

보안 규칙 중요!!
기본 규칙1은 ssh 22 포트로 0.0.0.0/0 여기에 이제 규칙을 추가한다.
인바운드 규칙 2 -> 유형 : HTTPS -> 소스유형 : 사용자 지정 -> 소스 : VPC CDIR로 설정
인바운드 규칙 3 -> 유형 : HTTP -> 소스 유형 : 사용자 지정 -> 소스 : VPC CDIR로 설정
인바운드 규칙 4-> 유형 : 모든 ICMP -IPv4 -> 소스 유형 : 사용자 지정 -> 소스 : VPC CDIR로 설정

이렇게 설정을 한다면 이제 local에서 private-instance로 접속
ping google.com 하면 핑이 찍히는 것을 확인 할 수 있다.

위처럼 설정 했는데 안된다. 인스턴스의 주소가 제대로 되었는지 확인하고 아웃바운드 규칙의 유형이 모든 트래픽인지 확인!!(글쓴이는 아웃바운드 규칙이 변경되어서 많은 시간을 허비하였다 ㅠㅠ)
