NAT 인스턴스를 통한 인터넷 연결
목표 구성 : NAT 인스턴스를 통해 프라이빗 서브넷 인스턴스가 외부 통신 연결
1. VPC 생성(서비스>VPC>Virtual private cloud>VPC 생성)
이름 : NAT-Instance-VPC
대역 : 10.0.0.0/16
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사용)
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
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
9. NAT-Instance 접속 및 통신 상태 확인
ec2 인스턴스 eth0 ip : 10.0.2.100
외부 통신 ip : 52.x.x.x
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
11. Private-NAT-RT 라우팅테이블 라우팅추가
대상 : 0.0.0.0 -> NAT 인스턴스 eth0 eni 선택
12. NAT-instance 소스/대상 확인 비활성화
자신이 목적지가 아닌 트래픽이 nat 인스턴스를 통해 외부로 나가기 때문에 소스/대상 확인 비활성화를 해서 트래픽 폐기방지
13. private 인스턴스 외부 통신확인
통신확인 결과 NAT-Instance 의 퍼블릭 ip 로 통신 확인.
14. NAT 인스턴스에서 tcpdump 확인
tcpdump 설치
sudo yum install tcpdump
프라이빗 인스턴스에서 amazonaws.com 호출
NAT인스턴스에서 TCP 80 Dump 확인
10.0.1.102->10.0.2.100 으로 변환하여 통신
15. 자원삭제
인스턴스 삭제>vpc삭제>인터넷게이트웨이vpc분리>인터넷게이트웨이 삭제>탄력적ip주소 릴리스