본문 바로가기

클라우드,네트워크,서버/AWS Basic

[AWS Basic] NAT 인스턴스를 이용한 인터넷 연결(Internet connection using a NAT instance)

728x90
반응형
NAT 인스턴스를 통한 인터넷 연결

목표 구성 : NAT 인스턴스를 통해 프라이빗 서브넷 인스턴스가 외부 통신 연결

NAT 인스턴스를 통한 인터넷 연결

1. VPC 생성(서비스>VPC>Virtual private cloud>VPC 생성)

이름 : NAT-Instance-VPC

대역 : 10.0.0.0/16

VPC생성

2. 퍼블릭,프라이빗 서브넷 생성(서비스>VPC>Virtual private cloud>서브넷 생성)

이름 : Public-instance-subnet  , vpc : NAT-Instance-VPC 선택 , IP 대역 : 10.0.2.0/24 , AZ: ap-northeast-2a

이름 : Private-instance-subnet  , vpc : NAT-Instance-VPC 선택 , IP 대역 : 10.0.1.0/24 , AZ: ap-northeast-2a

서브넷 생성

3. 인터넷 게이트웨이 생성(서비스>VPC>Virtual private cloud>인터넷게이트웨이)

이름 : NAT-Instance-IGW , VPC 연결 : NAT-Instance-VPC

인터넷 게이트웨이 생성

4. 라우팅 테이블 서브넷 연결 및 라우팅추가(서비스>VPC>Virtual private cloud>서브넷)

서브넷 연결 : 10.0.2.0/24 , 라우팅 추가 : 0.0.0.0/0->NAT-Instance-IGW

서브넷연결 및 라우팅추가
라우팅 추가

5. 프라이빗 서브넷 생성 및 연결(서비스>VPC>Virtual private cloud>서브넷)

이름 : Private-Nat-RT , VPC : NAT-Instance-VPC, 연결 서브넷 : 10.0.1.0/24

라우팅 서브넷 연결

6. 인스턴스 생성(서비스>EC2>인스턴스생성)

1) 이름 : NAT-INSTANCE , 애플리케이션 및 OS 이미지 : amzn-ami-vpc-nat-2018.03.0.20211111.0-x86_64-ebs

인스턴스 유형 : t2.micro , 키페어 : 생성키선택,  VPC : NAT-Instance-VPC , 서브넷 : Public-instance-subnet

어드밴스드 네트워크 구성 > 기본ip : 10.0.2.100

(이미지 검색을 통해 ami-vpc-nat 포함된 ami사용)

vpc-nat ami 선택

2) 이름 : Private-EC2-1 , 애플리케이션 및 OS 이미지 :  amazon linux 2 ami , 인스턴스 유형 : t2.micro, 키페어 : 생성키

VPC : NAT-Instance-VPC, 서브넷 : Private-instance-subnet , 기본 ip : 10.0.1.101

사용자 데이터 

#!/bin/bash 
( 
echo "test123" 
echo "test123" 
) | passwd --stdin root 
sed -i "s/^PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config 
sed -i "s/^#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config 
service sshd restart

3) 이름 : Private-EC2-1 , 애플리케이션 및 OS 이미지 :  amazon linux 2 ami , 인스턴스 유형 : t2.micro, 키페어 : 생성키

VPC : NAT-Instance-VPC, 서브넷 : Private-instance-subnet , 기본 ip : 10.0.1.102

#!/bin/bash 
( 
echo "test123" 
echo "test123" 
) | passwd --stdin root 
sed -i "s/^PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config 
sed -i "s/^#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config 
service sshd restart

 

7. 탄력적 IP 생성 및 연결(서비스>ec2>네트워크 및 보안>탄력적 ip)

리소스 유형 : 인스턴스, 인스턴스 : NAT-instance , 프라이빗 IP 주소 : 10.0.2.100

탄력적 IP 생성
탄력적 IP<->프라이빗 IP 주소 연결

8. 보안그룹 생성 및 보안그룹 변경(서비스>ec2>네트워크 및 보안>보안그룹)

이름 : NAT-Instance-SG , VPC ID : NAT-Instance-VPC, 인바운드 규칙 : SSH,ICMP 0.0.0.0/0, HTTP- 10.0.0.0/16

이름 : Private-instance-SG , VPC ID : NAT-Instance-VPC, 인바운드 규칙 : SSH10.0.0.0/16, ICMP- 0.0.0.0/0

NAT-Instance-SG 인바운드 규칙
Private-instance-SG 인바운드 규칙

9. NAT-Instance 접속 및 통신 상태 확인

ec2 인스턴스 eth0 ip : 10.0.2.100 

외부 통신 ip : 52.x.x.x

Nat instance ip 확인 및 외부통신확인

Private-ec2-1 인스턴스 ip : 10.0.1.101

외부통신 : 불가

Private-ec2-2 인스턴스 ip : 10.0.1.102

외부통신 : 불가

10. NAT 인스턴스 라우팅 및 IP masquerade

cat /proc/sys/net/ipv4/ip_forward

라우팅 가능 : 1 이 확인됨.

라우팅 가능 확인

ip 테이블 확인

sudo iptables -nL POSTROUTING -t nat -v

ip테이블 확인

11. Private-NAT-RT 라우팅테이블 라우팅추가

대상 : 0.0.0.0 -> NAT 인스턴스 eth0 eni 선택 

nat 인스턴스 eni 라우팅 추가

12. NAT-instance 소스/대상 확인 비활성화

자신이 목적지가 아닌 트래픽이 nat 인스턴스를 통해 외부로 나가기 때문에 소스/대상 확인 비활성화를 해서 트래픽 폐기방지

소스/대상 확인 변경
소스/대상 확인 비활성화

13. private 인스턴스 외부 통신확인

통신확인 결과 NAT-Instance 의 퍼블릭 ip 로 통신 확인.

Private-ec2-1 에서의 외부 통신확인
Private-ec2-2 에서의 외부통신확인

14. NAT 인스턴스에서 tcpdump 확인

tcpdump 설치

sudo yum install tcpdump

tcpdump 설치

프라이빗 인스턴스에서 amazonaws.com 호출

NAT인스턴스에서 TCP 80 Dump 확인

10.0.1.102->10.0.2.100 으로 변환하여 통신

nat 인스턴스에서 ip 변경확인

15. 자원삭제

인스턴스 삭제>vpc삭제>인터넷게이트웨이vpc분리>인터넷게이트웨이 삭제>탄력적ip주소 릴리스

728x90
반응형