Infra/cloud

[AFOS] 3주차 네트워킹 서비스 - 실습 : VPC 구성(프라이빗 서브넷)

미니문92 2021. 7. 9. 03:26

6. 프라이빗 서브넷 VPC 구성

 

목표 구성도

퍼블릭 및 프라이빗 서브넷 VPC 실습의 목표 구성도


프라이빗 서브넷 생성

 

서브넷 생성

 

VPC 선택 및 이름, AZ, IPv4 CIDR 블록 입력

 

프라이빗 서브넷 생성 도식화

 

퍼블릭 서브넷에서 외부 인터넷 구간과 통신을 할때는 인터넷 게이트웨이를 통해 통신
프라이빗 서브넷은 NAT게이트웨이를 통해 통신

NAT 게이트웨이 생성

 

NAT 게이트웨이 생성

 

이름, 서브넷(반드시 퍼블릭) 및 탄력적 IP 할당

NAT 게이트웨이는 퍼블릭 서브넷에 생성

 

생성 완료

 

NAT 게이트웨이 생성 도식화


프라이빗 라우팅 테이블 생성 및 서브넷 연결

 

라우팅 테이블 생성

 

이름, VPC 선택

 

라우팅 테이블 생성 후 서브넷 연결 편집

 

프라이빗 서브넷 선택

 

프라이빗 서브넷 연결 완료

 

프라이빗 라우팅 테이블 생성 및 서브넷 연결 도식화


 

프라이빗 라우팅 테이블 경로 추가

 

0.0.0.0/0 NAT 게이트웨이 연결 설정

 

프라이빗 라우팅 테이블 외부 인터넷 경로 추가 도식화

 

EC2 인스턴스 생성 후 접근 및 통신 확인

EC2 생성

 

네트워크 서브넷 선택

 

고급세부 정보 입력

  • 사용자 데이터 입력
  • root 계정으로 qwe123 비밀번호를 사용하겠다는 의미
#!/bin/bash
(
echo "qwe123"
echo "qwe123"
) | 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

 

 

Private-EC2 생성 완료

 

프라이빗 EC2 인스턴스 생성 도식화

 

서버 접속 후 검증 완료


IP 정보 확인 (프라이빗 IP , 퍼블릭 IP)

[root@ip-10-0-1-62 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 0a:71:ee:e9:4d:28 brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.62/24 brd 10.0.1.255 scope global dynamic eth0
       valid_lft 2002sec preferred_lft 2002sec
    inet6 fe80::871:eeff:fee9:4d28/64 scope link
       valid_lft forever preferred_lft forever
       
       
[root@ip-10-0-1-62 ~]# ip route show
default via 10.0.1.1 dev eth0
10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.62
169.254.169.254 dev eth0


[root@ip-10-0-1-62 ~]# ip neigh show
10.0.1.1 dev eth0 lladdr 0a:c3:63:38:46:8e REACHABLE


[root@ip-10-0-1-62 ~]# cat /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
search ap-northeast-2.compute.internal
options timeout:2 attempts:5
nameserver 10.0.0.2


[root@ip-10-0-1-62 ~]# curl ipinfo.io
{
  "ip": "13.124.114.80",
  "hostname": "ec2-13-124-114-80.ap-northeast-2.compute.amazonaws.com",
  "city": "Seoul",
  "region": "Seoul",
  "country": "KR",
  "loc": "37.5660,126.9784",
  "org": "AS16509 Amazon.com, Inc.",
  "postal": "03186",
  "timezone": "Asia/Seoul",
  "readme": "https://ipinfo.io/missingauth"

프라이빗 서브넷 통신 흐름

 

프라이빗 서브넷에서 외부 인터넷 구간과 통신 흐름

① 프라이빗 서브넷의 프라이빗 EC2 인스턴스가 외부 인터넷 구간과 통신하기 위해 데이터를 가상 라우터로 전달

② 가상 라우터는 프라이빗 라우팅 테이블을 참고하여 NAT 게이트웨이로 향하는 라우팅 경로 확인

③ 가상 라우터는 NAT게이트웨이로 데이터를 전달하고, NAT 게이트웨이에서 프라이빗 IP를 퍼블릭 IP로 전달

④ NAT 게이트웨이에서 인터넷 구간을 넘어가기 위해 인터넷 게이트웨이를 거쳐 사용자에게 전달. 이때 사용자는 NAT게이트웨이에서 변환한 퍼블릭 IP로 전달받음


NAT 인스턴스(NAT 게이트웨이와 유사)를 통한 외부 접속 시 트래픽 흐름에 따른 동작 설명

 

① 내부 인스턴스(10.40.2.101)에서 외부 웹서버(60.1.1.1)로 HTTP 접속을 시도. ‘프라이빗 서브넷 라우팅 테이블’에 따라서 NAT 인스턴스로 트래픽 전송

② NAT 인스턴스는 IP masquerading 기능을 통해서 출발지 IP(10.40.2.101 → 10.40.1.100)와 포트 번호를 변환하고 정보를 기록. 이후 ‘퍼블릭 서브넷 라우팅 테이블’에 따라서 인터넷 게이트웨이로 트래픽 전송

③ 인터넷 게이트웨이는 프라이빗 IP와 탄력적 IP간의 IP 변환(NAT) 수행. 출발지 IP를 10.40.1.100에서 a.b.c.d로 변환하고 외부 인터넷으로 트래픽 전송

④ 외부 웹서버(60.1.1.1)에서 요청을 처리하고 응답 트래픽 전송

⑤ 인터넷 게이트웨이에 인입된 트래픽은 목적지 IP를 a.b.c.d에서 10.40.1.100으로 IP 변환(NAT)하여 VPC 내부로 전송

⑥ NAT 인스턴스는 ‘변환 정보’에 따라서 출발지 IP(10.40.1.100 → 10.40.2.101)와 포트 번호를 변환하여 프라이빗 서브넷으로 전송

⑦ 최종적으로 응답 트래픽이 내부 인스턴스(10.40.2.101)로 도달