NAT Gateway 사용해보기

redwood
6 min readFeb 6, 2019

이번 블로그에서는 NAT Instance 대신 NAT Gateway를 사용해보겠습니다.

주요 변경 내용
- NAT Instance를 NAT Gateway로 변경
- NAT Instance에서 사용했던 Security Group (NAT-SG)를 사용하지 않음
- PrivateSubnet-2a 에 연결된 Route Table (Private-RT-2a)변경

NAT Gateway 구성을 위한 아키텍처

NAT Gateway 생성

NAT Gateway를 생성하기 위해서는 NAT Gateway가 위치할 Subnet ID 해야 합니다. PublicSubnet-2a에 생성합니다.

PublicSubent-2a Subnet ID : subnet-042c2e1ede75591f6

PublicSubnet-2a의 Subnet ID

NAT Gateway 생성 화면에서 Subnet ID를 선택하고, NAT Gateway에서 사용할 Elastic IP를 할당합니다.

NAT Gateway 생성

생성이 완료되었습니다. NAT Gateway ID는 nat-0c07cf619006e73f5 입니다.

PrivateSubnet-2a 에 연결된 Route Table (Private-RT-2a)변경

PrivateSubnet-2a 에서 0.0.0.0/0을 목적지로 하는 Packet을 NAT Gateway로 전달하기 위해 Route Table의 Routing Rule을 추가해줍니다.

0.0.0.0/0 → nat-0c07cf619006e73f5

Route Table 변경

Web 서버 생성

Web 서버는 PrivateSubnet-2a 안에 생성하고 Private IP만 할당해줍니다.

Web 서버 Instance Details

Web 서버에서 사용할 Security Group을 선택합니다. Source 10.10.1.0/24 (PublicSubnet-2a) 에서 ssh 접속을 허용하기 위해서 Inbound Rule을 추가해주었습니다.

Web 서버 Security Group

Bastion 서버 생성

보안을 고려하여 서버에 대한 ssh 접속은 Bastion 서버를 거치도록 설정하기 위해 Bastion 서버를 PublicSubnet-2a에 생성합니다.

Bastion 서버 Instance Details

외부에서 접속이 가능해야 하므로 Source 0.0.0.0/0에서 ssh 접속이 가능하도록 Inbound Rule을 설정하였습니다. 편의상 0.0.0.0/0으로 했지만, 접속을 허용한 IP를 지정하는 것이 안전합니다.

Bastion 서버 Security Group

접속 테스트

아래와 같은 경로 Web 서버에 접속하였습니다. ping 테스트를 한 결과 NAT Gateway를 통해 인터넷 통신이 되는 것을 확인할 수 있습니다.

PC -> Bastion 서버 (Public IP) -> Web 서버 (Private IP)

[ec2-user@ip-10-10-11-189 ~]$[ec2-user@ip-10-10-11-189 ~]$ ping www.google.comPING www.google.com (172.217.31.132) 56(84) bytes of data.64 bytes from nrt20s08-in-f4.1e100.net (172.217.31.132): icmp_seq=1 ttl=44 time=30.9 ms64 bytes from nrt20s08-in-f4.1e100.net (172.217.31.132): icmp_seq=2 ttl=44 time=30.6 ms64 bytes from nrt20s08-in-f4.1e100.net (172.217.31.132): icmp_seq=3 ttl=44 time=30.6 ms64 bytes from nrt20s08-in-f4.1e100.net (172.217.31.132): icmp_seq=4 ttl=44 time=30.5 ms64 bytes from nrt20s08-in-f4.1e100.net (172.217.31.132): icmp_seq=5 ttl=44 time=30.6 ms64 bytes from nrt20s08-in-f4.1e100.net (172.217.31.132): icmp_seq=6 ttl=44 time=30.5 ms^C--- www.google.com ping statistics ---6 packets transmitted, 6 received, 0% packet loss, time 5006msrtt min/avg/max/mdev = 30.563/30.677/30.952/0.130 ms[ec2-user@ip-10-10-11-189 ~]$

--

--