AWS EC2 인스턴스를 만들고 난 직후에는 인터넷이 되지 않아 curl이나 apt-get과 같은 명령어를 사용할 수 없다.
외부(인터넷)에서 EC2로 접속하는 것도 되지 않는다.
인터넷으로의 outbound 및 inbound 통신이 모두 되지 않는다는 소리다.
인터넷 통신이 가능하게 하려면 어떤 설정을 해야하는지 적어보려한다.
1. EIP 할당
EC2에서 인터넷을 사용하려면 해당 EC2에 'Elastic IP(=EIP)'가 할당되어있어야 한다.
험난한 인터넷 세계(?)에서 자신의 이름역할을 하는 공인IP가 있어야 길을 찾아서 돌아올 수 있기 때문이다.
EIP를 할당했다면, EC2에서의 인터넷 접속(outbound)이 가능해질 것이다.
2. Routing Table, NACL, SG 설정
역으로 인터넷(외부)에서 EC2로 접속하기 위해서는 VPC 내부의 3 건의 항목들의 설정을 확인해야한다.
아래는 AWS에서 가장 기본적으로 구성되는 VPC 구성의 예제이다.
1)
인터넷에서 EC2로의 접속이 가능하려면 해당 EC2는 'Public Subnet'에 위치해야 한다.
EC2가 속한 서브넷의 Routing Table에 internet gateway로의 라우팅이 잘 잡혀있는지 확인한다.
0.0.0.0 >> igw
만약 internet gateway가 언급된 라우팅 항목이 없다면, 그 서브넷은 Private Subnet이다.
기본적으로 Private Subnet은 인터넷으로부터 격리한 환경이기 때문에 외부에서의 접속이 불가하다.
다만, 아래의 그림과 같이 Private Subnet에 NAT gateway를 붙여서, Private subnet에 위치한 EC2에 SSH로 접속하게 하는 방법도 있다고 한다.
2)
NACL 및 SG의 inbound 정책에서 접속자 IP/Port가 허용되어 있는지 확인해본다.
아무것도 설정하지 않았던 상태라면 접속자의 IP/Port를 SG정책에 Allow로 추가해준다.
1) Routing Table
- Routing Table은 Subnet에 달리며, 네트워크 통신이 가고자하는 목적지(dst) 별로 가야할 곳을 지정해준다.
ex. dst IP >> instance
0.0.0.0.0 >> igw(internet gateway)
10.0.0.0/8 >> vgw(virtual gateway, direct connection to 내부망)
- 목적IP에 따라 목적지로 보내주는 역할만 한다. (in/out bound 구분이 없다)
- 순서에 상관없이 가장 많이 일치하는 IP로 매칭되어 라우팅 된다.
- Public Subnet은 인터넷에 오픈된 서브넷, Private Subnet은 인터넷에서 격리된 서브넷이다.
. public subnet의 routing table에는 igw가 있다.
(= routing table에 igw가 언급되어 있다면 그건 public subnet이다.)
. private subnet의 routing table에는 igw가 없다.
혹여, EIP를 할당받더라도 인터넷 사용(outbound)은 가능하나 외부에서 접속(inbound)은 불가하다.
2) Network ACL
- Subnet 단에서 특정 inbound 또는 outbound IP/Port 를 허용하거나 거부하기 위해 쓰인다.
3) Security Group
- Resource(ex. EC2)단에 달리며, 한 개 이상의 Security Group을 달 수있다.
- 기본 정첵은 Outbound Any Open, Inbound는 Deny All이므로,
필요한 접속 정보를 Inbound 정책에 allow로 넣어주면 된다.
(= EC2 에서 밖으로 나가고자하는 통신은 허용, EC2로 외부에서 들어오는 통신은 모두 차단.)
참고로, outbound는 내부에서 시작된 통신, inbound는 외부에서 시작된 통신이라고 이해하면 편하다.
3. 그래도 접속이 안된다면
tracert 명령어를 통해 네트워크 통신경로를 한번 탐색해보자
나의 경우 나의 VPC와 유사한 대역의 공인IP까지 오는 것이 확인되었다.
#. 참고 블로그
. AWS 공식 문서 :
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/VPC_Security.html
. 핵심만 이해하기 쉽게 정리된 블로그 :
. AWS vpc , igw, nat 구성 방법 :
https://dev.classmethod.jp/articles/for-beginner-vpc-construction/
. AWS Private Network EC2에 NAT gateway를 통해 접속하기 :
https://dev.classmethod.jp/articles/accessed-private-subnet-ec2-using-aws-session-manager/
'[500] Infra, Network' 카테고리의 다른 글
AWS EC2 VScode 원격 개발환경 설정 (0) | 2022.09.22 |
---|---|
Mysql DB설치 및 사용 방법 #1 (0) | 2022.09.21 |
MongoDB 설치 및 사용 방법 #1 (0) | 2022.09.21 |
댓글