[AWS] EC2 환경에서 Failover 실습: `nc` 명령어를 이용한 TCP 통신 테스트

Hyunjun Kim·2025년 5월 12일

실습 - (AWS 환경)

목록 보기
7/61

AWS EC2 환경에서 Failover를 테스트하거나, 간단한 서버-클라이언트 구조를 실습해보고 싶다면 nc (netcat)를 이용한 TCP 통신이 유용하다.

이번 글에서는 EC2 인스턴스를 활용한 간단한 echo 서버 구축부터, 보안 그룹 설정, 내부 통신 방법까지 설명해보려고 한다


1. nc 명령어로 echo 서버 띄우기

먼저 EC2 인스턴스에서 아래 명령어를 실행하여 TCP 서버를 띄워보자.

nc -lk -p 2000

각 옵션의 의미

옵션설명
-l리스닝 모드로 동작
-k연결이 종료되어도 계속 대기
-p포트 번호 지정

예를 들어, 위 명령어는 EC2에서 2000번 포트로 들어오는 TCP 요청을 무한히 받고 응답하는 서버 역할을 한다.


2. 외부 클라이언트에서 접속 테스트

이제 다른 컴퓨터(예: Mac)에서 해당 EC2 인스턴스의 공인 IP로 접속을 시도해보자.

echo hi | nc <EC2_PUBLIC_IP> 2000

예:

echo hi | nc 3.39.10.245 2000

"hi"라는 메시지를 TCP로 전송하고 응답을 기다리는 간단한 테스트다.


3. 응답이 안 된다면? → 보안 그룹 확인

EC2 인스턴스에서 nc가 리슨 중인데도 응답이 없다면 대부분 보안 그룹(Security Group) 설정 문제다.

원인

  • AWS는 기본적으로 22번(SSH) 외 모든 포트를 차단한다.
  • 2000번 포트로의 요청이 EC2에 도달하지 못하는 상황임.

해결 방법: 보안 그룹 인바운드 규칙에 포트 2000 추가

  1. AWS 콘솔 접속
    • EC2 인스턴스 선택
    • 설명 탭 → 보안 그룹 클릭

  1. 인바운드 규칙 수정
    • 인바운드 규칙 → 편집
    • 다음과 같이 규칙 추가:
항목
유형사용자 지정 TCP
프로토콜TCP
포트 범위2000
소스내 IP (또는 0.0.0.0/0 테스트용)

⚠️ 주의: 0.0.0.0/0은 모든 외부에서 접속 가능하므로 테스트 후에는 꼭 삭제하거나 제한해야 함


인바운드 규칙을 수정하기 전에는 아무 응답 없었는데
수정 후에는 응답을 잘 해주는 모습이다.

4. 같은 VPC / 서브넷 내에서만 통신하기

서로 다른 EC2 인스턴스를 같은 VPC 안에 만들었다면 Public IP 없이도 Private IP로 직접 통신할 수 있다.

예:

  • EC2-A: 172.31.10.101
  • EC2-B: 172.31.10.102

EC2-A에서:

echo hello | nc 172.31.10.102 2000

EC2-B에서:

nc -l 2000

5. 내부 통신을 위한 보안 그룹 설정

같은 VPC에 있다고 해도 보안 그룹에서 내부 통신을 허용해야 함.

  • 같은 보안 그룹을 사용하고 있다면:
    • 인바운드 규칙에 다음 항목 추가:
항목
유형사용자 지정 TCP
포트 범위2000
소스자기 자신 보안 그룹 (sg-xxxx 형태)

✅ 요약 정리

항목설명
IP 사용Public IP ❌, Private IP(172.31.x.x) ✅
보안 그룹내부 통신을 허용하는 인바운드 규칙 설정 필요
인터넷 필요 여부❌ 불필요 (VPC 내부 통신만)
장점빠르고 보안적으로 안전하며 트래픽 비용 없음

✅ 추가 팁

  • EC2 내부 통신은 IGW(Internet Gateway)나 NAT 없이도 가능하다
  • ping, netcat(nc), ssh 모두 사용 가능하다
  • 여러 대의 서버를 구성하여 분산 처리, 클러스터 구성, 로드 밸런싱 실습에도 유용하다
profile
Data Analytics Engineer 가 되

0개의 댓글