aws

인바운드 아웃바운드에 대하여

gini1031 2025. 3. 13.

 

 

0. 들어가며

이전에 aws 강의를 들으며 배포를 하던 중에 보안 그룹과 관련하여 이슈가 발생했어서 이에 대해 더 공부를 진행해보았다.

 

 

1. 발생한 이슈

 

vpc 생성 및 ec2 연결을 모두 끝내고 vs code에서 ssh를 연결한 후 터미널에 `sudo apt update` 명령어를 입력했는데, 다음과 같이 명령이 ignore되는 상황이 발생했다.

당시 보안 그룹을 확인했을 때 아웃바운드 규칙이 설정되지 않았으며, 이에 대한 문제임을 알게 되었다. 

(분명 보안 그룹 생성하면 자동으로 아웃바운드 규칙이 설정되던데 왜 나는 안되는 걸까...........)

 

 

 

2. 해결 방법

다음과 같이 ubuntu 서버에서 정보를 가져올 때 필요한 포트들을 열어, 가능하게 했다.

일반적으로 아웃바운드 규칙은 외부의 서버에서 데이터를 가져와야하기 때문에 '모든 트래픽'으로 설정해도 무방하다!!

 

 

 

3. 인바운드, 아웃바운드 규칙이란?

외부 서버로 나가기 위해서는 아웃바운드 규칙이 필요하다는 건데... 그렇다면 인바운드와 아웃바운드의 차이는 무엇일까?

 

인바운드 규칙

: 클라이언트가 자신의 서버 데이터에 들어올 수 있는 규칙. 기본적으로 모든 규칙을 닫는 것을 전제로 하며, 인바운드 규칙에서 설정하지 않은 포트들은 사용할 수 없다.

 

아웃바운드 규칙

: 서버에서 나갈 수 있는 데이터에 대한 모든 규칙. 인바운드 규칙에서 허용된 포드로 들어왔다고 한들, 아웃바운드 규칙에서 데이터 반출이 허용되지 않은 포트라면 클라이언트는 "다운로드"할 수 없다.

 

어느정도 개념은 알겠으니, 앞서 진행한 배포를 그림으로 확인해보자.

 

나의 경우에는 vs code를 통해 ssh에 접속하기 위해 인바운드 규칙으로 22번 포트를 열었다. 이를 통해 노트북으로부터 생성된 ec2로 접속이 가능했다.

이후 ec2는 서버가 ubuntu로 설정되어 있기 때문에, 추가적으로 필요한 패키지는 ubuntu 저장소로부터 가져와야한다. ec2에서 ubuntu 저장소로 나갈 때 아웃바운드 규칙이 적용되는데, 아웃바운드 규칙의 경우 내부 네트워크의 디바이스가 외부 서비스에 자유롭게 접속할 수 있어야 하기 때문에 일반적으로 "모든 트래픽"으로 설정한다.

예시를 들자면, ubuntu는 앱 스토어라 보면 된다. 클라이언트인 ec2에서 다운받고자 하는 앱이 있다면, ubuntu 저장소에 가서 해당 앱스토어의 최신 목록을 가져오는 것이다.

 

 

마지막 그림으로 최종 정리하자면 다음과 같다.

 

 

 

4. 마치며

나는 강의에서 아웃바운드에 대해 언급을 안해서 따로 필요가 없는 줄 알았는데, 무조건적으로 필요해서 이야기를 안해준 것 같다... 앞으로는 그저 강의를 따라하는 것이 아닌 개념과 함께 공부해야겠다는 다짐을 하게 되었다.

댓글