공부/AWS

NAT GATEWAY

HY13 2021. 1. 7. 12:10

NAT 게이트웨이란?

프라이빗 서브넷의 인스턴스를 인터넷 또는 기타 AWS 서비스에 연결하는 한편, 인터넷에서 해당 인스턴스와의 연결을 시작하지 못하게 할 수 있습니다. 

 

 

NAT 게이트웨이 설정 순서

1. NAT 게이트웨이를 만들려면 NAT 게이트웨이가 속할 퍼블릭 서브넷을 지정해야한다.

2. NAT 게이트웨이를 만들 때 NAT 게이트웨이와 연결할 탄력적 IP 주소도 지정해야한다.

3. NAT 게이트웨이와 연결한 후에는 탄력적 IP 주소를 변경할 수 없다.

4. NAT 게이트웨이를 만든 뒤, 하나 이상의 프라이빗 서브넷과 연결된 라우팅 테이블을 업데이트하여 인터넷 바운드 트래픽이 NAT 게이트웨이를 가리키도록 해야한다. 그러면 프라이빗 서브넷의 인스턴스가 인터넷과 통신할 수 있습니다.

 

NAT 게이트웨이 기본 사항

NAT 게이트웨이가 있는 VPC의 아키텍처

기본 라우팅 테이블은 프라이빗 서브넷의 인스턴스에서 NAT 게이트웨이로 인터넷 트래픽을 보낸다.

NAT 게이트웨이는 NAT 게이트웨이의 탄력적 IP 주소를 소스 IP 주소로 사용하여 인터넷 게이트웨이로 트래픽을 보낸다.

 

NAT 게이트웨이 규칙 및 제한

  • 하나의 탄력적 IP 주소만 NAT 게이트웨이에 연결할 수 있다. 연결된 후에는 NAT 게이트웨이에서 탄력적 IP 주소의 연결을 끊을 수 없다. 
  • 보안 그룹을 NAT 게이트웨이와 연결할 수 없다. 프라이빗 서브넷의 인스턴스에 대한 보안 그룹을 사용하여 해당 인스턴스에서 주고받는 트래픽을 제어할 수 있다.
  • 네트워크 ACL을 사용하여 NAT 게이트웨이가 위치하고 있는 서브넷에서 주고받는 트래픽을 제어할 수 있다. 네트워크 ACL은 NAT 게이트웨이의 트래픽에 적용된다. NAT 게이트웨이는 포트 1024 - 65535를 사용한다.
  • NAT 게이트웨이가 생성되면 서브넷의 IP 주소 범위에 속하는 프라이빗 IP 주소가 자동으로 할당된 네트워크 인터페이스를 받는다. Amazon EC2 콘솔에서 NAT 게이트웨이의 네트워크 인터페이스를 볼 수 있다. 이 네트워크 인터페이스의 속성을 수정할 수 없다.

 

Route 53

Route 53 대시보드 -> DNS 관리 -> 호스팅 영역 생성

저번 포스팅에서 구매한 도메인 등록

 

 

NS 레코드 값 네개 복사 -> 가비아 > 내 가비아 > 도메인 정보 변경 > 네임서버에 값 새로 붙여넣기

ns-931.awsdns-52.net

ns-1317.awsdns-36.org

ns-330.awsdns-41.com

ns-2025.awsdns-61.co.uk

 

 

인스턴스 생성 - PRIVATE 인스턴스

단계 3)

사용자 데이터 넣어주기

 

단계 6)

새 보안 그룹: SG-WEB

SSH, 내 IP

HTTP, 위치 무관

 

 

Route 53 - A 레코드 생성

레코드 이름: 원하는 이름 설정

값: 인스턴스 퍼블릭 아이피

 

 

서브넷 생성

왼쪽 메뉴에서 서브넷 클릭

서브넷 계산해서 넣어주기

(현재 0,16,32,48이 있으므로 64를 넣어주었다)

서브넷 생성 클릭

 

 

 

라우팅 테이블 생성

 

 

 

서브넷 연결

방금 만든 라우팅 테이블 체크

아래 서브넷 연결 클릭

서브넷 연결 편집 클릭

 

 

인스턴스 생성 - DB (인터넷 안되는 인스턴스 생성)

단계 1)

Ubuntu AMI

 

단계 3)

서브넷: 인터넷 연결되지 않던 PRIVATE-SUBNET 선택

(라우팅 게이트웨이에 정보가 없으면 퍼플릭 아이피도 연결이 되지 않는다)

 

단계 5)

값: DB

 

단계 6)

새 보안 그룹 생성: SG-DB

SSH, 사용자 지정:SG-WEB

MYSQL, 사용자 지정:SG-WEB

 

 

 

mobaXterm으로 WEB01을 열어준다.

창 하나를 duplication 해준다.

Duplication된 창에 키를 업로드 해준다.

키의 권한이 너무 높으면 연결이 안되므로 권한을 400으로 낮춰준다.

DB의 프라이빗 아이피를 복사해 연결해준다.

$ ssh -i 20210107.pem ubuntu@172.31.77.207

-> ubuntu로 접속이 되었다.

-> 아직 핑이  나가지 않는다.

 

 

 

NAT 게이트웨이를 이용해 핑이 나가도록 해준다. (과금 발생)

 

NAT 게이트웨이 생성

이름: MY-NGW

서브넷: 퍼블릭 서브넷에 넣기 위해서 서브넷 선택해주는 것이므로 퍼블릭 서브넷인 디폴트 서브넷을 선택해준다

2a 또는 2c 둘중 하나 선택해준다.

탄력적 IP 할당: 탄력적 IP를 할당 버튼 클릭하면 자동으로 만들어준다.

NAT 게이트웨이는 탄력적 IP할당을 무조건 해주어야 한다.

 

 

 

라우팅 테이블 설정 - 라우팅테이블에 NAT게이트웨이를 연결 해줘야 인터넷 연결이 된다

PRIVATE-RTB 클릭

라우팅 > 라우팅 편집 클릭

모든 위치로 아이피 추가 해주고, 방금 만든 NAT게이트웨이 선택

라우팅 저장 클릭

 

이제 PING이 나가는 모습을 볼 수 있다.

 

 


MariaDB 설치

$ sudo apt-get -y update
$ sudo apt-get -y install mariadb-server
$ sudo mysql_secure_installation
Enter current password for root (enter for none):        // 엔터 클릭
Set root password? [Y/n] y
New password:                        // 원하는 비밀번호 입력
Re-enter new password:             // 비밀번호 확인

$ sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
#bind-address = 127.0.0.1 << 주석 추가

 

DB 설정

$ sudo systemctl restart mysql 
$ sudo mysql -u root -p 
Enter password:                         // 방금 만든 비밀번호 입력

MariaDB [(none)]> CREATE USER 'wpuser'@'%' IDENTIFIED BY 'wppass'; 

MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS wordpress; 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'%'; 

MariaDB [(none)]> quit 

 

워드프레스 설치(/home/ec2-user) - WEB

# wget https://ko.wordpress.org/wordpress-4.8.2-ko_KR.zip
# sudo yum install -y httpd php php-mysql php-gd php-mbstring wget unzip
# cd /var/www/html
# sudo unzip /home/ec2-user/wordpress-4.8.2-ko_KR.zip # sudo chown -R apache:apache wordpress
# sudo systemctl restart httpd

 

 

NAT 게이트웨이 삭제

 

 

NAT 게이트웨이가 끊겨도 다시 연결할 수 있다.

-> 퍼블릭 아이피 생성

 

 

라우팅 편집을 통해 인터넷 게이트웨이를 모든 위치로 연결해준다.

 

탄력적 주소 IP 연결 클릭

 

DB 인스턴스를 연결해준다.

 

핑이 다시 나가는 모습을 볼 수 있다.

-> 확인 했으면 과금이 발생 할 수 있으므로 탄력적 IP와 라우팅의 인터넷게이트웨이를 삭제해준다. **

 

 

 

 

'공부 > AWS' 카테고리의 다른 글

EFS(Elastic File Storage)  (0) 2021.01.07
Route 53 / Auto Scaling (2)  (0) 2021.01.06
Route 53 / Auto Scaling  (0) 2021.01.05
RDS  (0) 2021.01.04
ELB - ALB(2)  (0) 2021.01.04