제육's 휘발성 코딩
반응형

통신망

통신망이란 노드 간 연결된 링크로 구성된 하나의 시스템을 의미한다. 여기서의 노드는 IP로 식별할 수 있는 대상이며, 링크란 물리적 회선을 뜻한다. 즉, 하나의 서브넷을 하나의 망으로 볼 수 있다.

image

기업의 기본 보안 정책은 외부망, 내부망으로 망 분리하는 것이다. On-premise 방식을 사용하는 경우 회사 내에서 별도로 관리하는 private 서버 관리를 통해 망 분리 구축을 하지만, 클라우드인 AWS를 사용하여 망 분리를 한다면 VPC를 통해 public과 private 망을 구분할 수 있다. AWS에선 망 분리를 위해 VPC, Subnet, Region(국가/지역), 데이터 센터(Availability Zone), Router, Internet gateway 등 여러 가지 기능을 제공한다.

 

AWS 통신 과정

L2 Switch 통신 과정

  • MAC 테이블에 장비가 기록되어 있으면, 있다고 인지하고 Forwarding하고 정보가 없다면 Flooding한다.

Router

  • 서로 다른 네트워크 간의 통신을 중계하며, MAC 테이블에 정보가 있으면 Forwarding하고 없으면 Drop한다.
  • 라우터는 Private IP가 목적지일 경우 인터넷 구간으로 보내지 않는다. 즉 외부 네트워크와 통신하기 위해선 Public IP(공인 IP)가 필요하다.

인터넷 통신

image

  • Private Subnet은 기본적으로 인터넷이 차단되어 보안 규칙(인바운드, 아웃바운드)을 설정하지 못하고, 오로지 다른 서브넷과 연결만 가능하다. Public Subnet이 가지고 있는 NAT를 통해 Private Subnet의 인터넷 연결을 할 수 있다.
  • 자신이 속한 subnet(172.16.0.0/24)의 서버는 가상 스위치를 통해 직접 통신하고 자신이 속하지 않은 subnet은 가상 라우터를 통해 직접 통신한다. 그 외의 0.0.0.0/0 과 같은 전체 대역은 인터넷 게이트웨이로 통신을 보낸다.

 

VPC 란?

VPC란 Virtual Private Cloud로 사용자 전용 가상 클라우드다. VPC는 public cloud에서 망을 구성하며, 이 안에서 네트워크를 격리시킬 수 있다. 즉, VPC는 물리적으로 같은 서버에 있지만 논리적으로 네트워크를 분리할 수 있어서 외부망과 내부망으로 분리할 수 있다. 이때 사용하는 것이 서브넷이다.

 

VPC는 IP 주소 범위와 VPC 범위를 설정하고 퍼블릿 또는 프라이빗 서브넷을 추가하고 보안 그룹을 연결한 다음 라우팅 테이블을 구성한다. VPC는 Amazon 콘솔에서 생성 가능하며, 하나의 Region내에서만 생성 가능하다. (두 개이상의 Region을 가질 수 없다.) 단, 하나의 VPC는 여러 데이터센터(AZ)를 가질 수 있으며, 최대 2^16 까지의 IP를 만들 수 있다.

VPC 생성

image

  • 다음과 같이 AWS 콘솔에서 태그 네임과 CIDR 설정을 할 수 있다.

image

  • VPC 생성 후 정보를 보면 다음과 같이 DHCP나 라우팅 테이블이 자동 생성된다. 태그이름은 자동 생성되지 않으므로 라우팅 테이블의 태그 이름을 (sasca37-rt)와 같이 지정하자.

서브넷 생성

image

  • 다음과 같이 두 개의 AZ를 기반으로 각각 1개의 외부망(IP 64개), 내부망 (IP 32개)를 갖도록 구성하자.

image

  • 서브넷이 다음과 같이 정상적으로 생성되는 것을 볼 수 있다.

image

  • (참고) CIDR표

 

EC2 생성

image

  • AWS 콘솔에서 EC2를 들어가면 다음과 같이 생성 화면을 볼 수 있다. 기존에 설정한 VPC와 서브넷(퍼블릭)을 넣어주자.
  • 키 페어는 AWS 콘솔에서 생성할 수 있으며 이후 ssh 접속 시에 사용한다.

 

image

  • 보안 그룹을 추가적으로 생성하고 ssh는 보안 강화를 위해 접근할 IP만 등록하자. 하위에 ICMP는 ping 테스트를 위해 허용한다.

 

image

  • 다음과 같이 EC2 인스턴스가 생성되고 실행 중인 것을 볼 수 있다. 정보에 보면 IPv4 에 지정된 IP를 기반으로 핑 테스트를 진행할 수 있지만, 현재 인스턴스는 인터넷 연결을 위한 설정이 안돼있다. 인터넷 게이트웨이를 통해 학습이 필요한 상태이다.
  • 동일한 방식으로 내부망용인 EC2-sasca37-internal EC2를 생성하자. 이번에는 EIP할당을 위해 퍼블릭 IP 자동 활성화를 비활성화로, 서브넷은 internal-c 로 등록했다.

 

EIP 탄력적 IP주소 등록

image

  • EIP는 서버 당 무료로 하나를 사용할 수 있다. 하지만 인스턴스를 연결해주지 않으면 돈이 나간다. 생성과 동시에 상단의 작업 버튼을 눌러 인스턴스를 연결하자.

 

인터넷 게이트웨이 생성

image

  • VPC 콘솔 하위에 있는 인터넷 게이트웨이를 생성하자.

 

image

  • 생성한 게이트웨이를 VPC에 연결하자.

 

라우팅 테이블 설정

image

  • 이전에 생성한 라우팅 테이블에 모든 네트워크에 대해 인터넷게이트웨이를 연결해준다.

image

  • 터미널에서 ping Ipv4를 입력 시 정상적으로 응답이 오는 것을 확인할 수 있다.

image

  • EIP로 등록한 내부망 서버도 정상 응답하는 것을 볼 수 있다.

현재 내부망은 인터넷 게이트웨이가 연결되어 있는 상태이다. 그 이유는 인터넷 게이트웨이와 VPC를 연결했고 VPC 하위의 서브넷들이 연결되어 있는데 내부망 서브넷에 인터넷 격리를 지정하지 않았기 때문이다. 별도의 라우팅 테이블을 생성해서 대역을 나누는 작업이 필요하다.

image

  • 다음과 같이 내부망의 별도 설정을 위한 라우팅 테이블을 추가 생성하자.

 

image

  • 생성한 라우팅 테이블은 기본적으로 VPC에서 설정한 대역폭만 사용한다. 내부망으로 사용할 서브넷들을 등록하자.

 

image

  • 이전에 생성한 라우팅 테이블 (핑 허용)에는 외부망 서브넷 2개를 선택해주자. 전체 라우팅 테이블은 다음과 같다. 내부망에 인터넷게이트웨이를 설정하지 않았으므로 핑테스트를 하면 내부망은 연결되지 않는다.

 

EC2 접속

Telnet 접속

telnet을 설치하지 않았다면 brew install telnet 으로 설치하자. telnet EIP 22 를 입력하면 정상적으로 접속되는 것을 볼 수 있다.

현재는 내부망 보안그룹에 SSH는 로컬 공인 IP로 되어있다. 즉, 외부망에서 내부망 접근이 불가능한 상황이다. (로컬에서 내부망 접근 가능한 상태) 이를 처리하고 싶은 경우 내부망 보안그룹에 SSH를 VPC 대역이나 외부망 대역으로 설정하면 된다.

ssh 접속

image

  • pem키의 권한이 높기 때문에 보안을 위해 읽기 권한인 0400으로 낮추고 ssh -i pem ubuntu@EIP 를 통해 접속하면 정상적으로 접속된다.
  • ssh 접속 후 공인 IP를 확인하고 싶다면 curl wgetip.com 을 통해 확인할 수 있다.
  • 외부망에서 내부망 접속도 동일한 방법으로 pem키를 이용해서 접속할 수 있다. 참고로 vi ~/.ssh/authorized_keys 를 입력해보면 자동으로 키 페어가 발급되어 있는 것을 볼 수 있다. AMI라는 기능이 자동으로 이미지를 복사해서 넣어준다.

외부망에서 내부망 인터넷 접속 허용

image

  • 현재는 내부망에서 인터넷을 사용할 수 없다. 인터넷을 사용하기 위해선 외부망에서 NAT 게이트웨이를 사용해줘야 한다.

 

NAT 게이트웨이 생성

image

  • 다음과 같이 VPC 콘솔 하위에 NAT 게이트웨이를 생성할 수 있다. EIP를 할당받고 생성하자.

 

image

  • 내부망 라우팅 테이블에서 0.0.0.0/0 (모든 네트워크)에 대해 NAT 게이트웨이를 추가해주자.

 

image

  • NAT 게이트웨이 설정으로 인해 내부망에서도 외부망의 도움으로 인터넷을 사용할 수 있다.

image

  • 다음과 그림과 같이 AWS 환경에서의 망 분리를 적용해볼 수 있다.

REFERENCES

https://edu.nextstep.camp/

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/what-is-amazon-vpc.html

https://tech.cloud.nongshim.co.kr/2018/10/16/4-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B5%AC%EC%84%B1%ED%95%98%EA%B8%B0vpc-subnet-route-table-internet-gateway/

https://colinkang.tistory.com/127

반응형
profile

제육's 휘발성 코딩

@sasca37

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 맞구독은 언제나 환영입니다^^