Cloud/AWS

[AWS] NAT gateway 대신 NAT Instance 생성하기 (with Bastionhost)

이영애님 2023. 5. 22. 16:14

NAT gateway 대신 NAT Instance 생성하기 (with Bastionhost)

  • 목표 : 비용절감을 위해, NAT Instance와 Bastion 호스트를 하나의 인스턴스로 구현

NAT Instance

  • private 서브넷의 인스턴스들이 인터넷에 접속하기 위한 네트워크 주소 변환을 처리한다
  • private 서브넷 인스턴스의 아웃바운드 트래픽을 퍼블릭 IP 주소로 변환하어 인터넷으로 전달
  • VPC public 서브넷에 위치하는 인스턴스

 

Bastion Host

  • ssh를 통해 외부에서 VPC 내 private 서브넷과 통신을 돕는 호스트
  • VPC public 서브넷에 위치하는 인스턴스 , NAT Instance를 겸할 수 있다

 

  1. VPC , 서브넷, 라우팅 테이블, 인터넷 게이트웨이 생성
  2. NATSG 보안그룹 생성
    • 인바운드
      • 모든 ICMP - IPv4, 프라이빗 서브넷 CIDR - 프라이빗 서브넷의 서버로부터의 인바운드 HTTP 트래픽 허용
      • 모든 ICMP - IPv4, 프라이빗 서브넷 CIDR - 프라이빗 서브넷의 서버로부터의 인바운드 HTTPS 트래픽 허용
      • SSH, 네트워크 퍼블릭 IP - (내) 네트워크로부터 NAT 인스턴스에 대한 인바운드 SSH 액세스 허용
    • 아웃바운드
      • SSH, 프라이빗 서브넷 CIDR
      • 모든 ICMP - IPv4, ****Anywhere - IPv4
  3. EC2 Instance 생성
    • AMI
      • 커뮤니티 AMI → “amzn-ami-vpc-nat” 검색 → 최신 버전 선택
    • 네트워크 설정
      • VPC 선택
      • 인터넷게이트웨이가 연결된 Subnet 선택
      • 퍼블릭 IP 주소 선택
  4. NAT Instance 소스/대상 확인변경 끄기
    • 인스턴스 선택 → 네트워킹 → 소스/대상 확인 변경 해제
    • private subnet와 인터넷이 통신할 수 있도록 주소변환(NAT)만 수행하면 된다
  5. NAT Instance를 private 라우팅 테이블에 연결
    • 0.0.0.0/0 NAT instance 지정

테스트

  • 프라이빗 서브넷 인스턴스 생성
  • NAT 인스턴스로 .pem 복사
scp -i [로컬 pem 파일 경로] [로컬 파일 경로] [사용자명]@[IP 또는 도메인]:[복사할 위치]


# scp -i my-pem-file.pem my-pem-file.pem ec2-user@{bastion-host-ip}:/home/ec2-user/
  • NAT 인스턴스 접속후 pem을 통해 프라이빗 서브넷 인스턴스 접속
  • 인터넷 테스트
ping ietf.org
PING ietf.org (4.31.198.44) 56(84) bytes of data.
64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=1 ttl=48 time=74.9 ms
64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=2 ttl=48 time=75.1 ms
...