상세 컨텐츠

본문 제목

RDS 외부 접속 불가 문제 해결

디스코드 - 공부봇

by myeongjaechoi 2025. 10. 29. 10:57

본문

문제 상황

MacBook CLI에서 AWS RDS(PostgreSQL)에 접속을 시도했으나 연결 실패.

 
psql -h 엔드포인트 \
     -U username \
     -d dbname \
     -p 5432

오류 메시지:

psql: error: connection to server failed

네트워크 진단 결과:

 
ping <엔드포인트>
# → Request timeout

nc -vz <엔드포인트> 5432
# → Operation timed out

즉, RDS 인스턴스가 외부에서 접근 불가능한 상태임을 확인.


🔍 원인 분석

  1. RDS가 Private Subnet에 존재함
    • RDS Subnet Group이 연결된 서브넷(RDS-Pvt-subnet-1, RDS-Pvt-subnet-2, …)이 모두
      **라우팅 테이블 RDS-Pvt-rt**에 연결되어 있었음.
    • 해당 라우팅 테이블에는항목이 존재하지 않음.
      즉, 외부 인터넷과 통신이 불가능한 프라이빗 네트워크 구조.
    •  
      0.0.0.0/0 → igw-xxxxx (인터넷 게이트웨이)
  2. 인터넷 게이트웨이(IGW) 미연결 상태
    • VPC에는 IGW가 존재했지만, RDS 서브넷 라우트 테이블(RDS-Pvt-rt)에는 연결되어 있지 않았음.
  3. Mac → RDS 직접 통신 불가능
    • 퍼블릭 접근이 비활성화된 RDS는 외부에서 psql로 접속할 수 없음.

⚙️ 해결 과정

1. 인터넷 게이트웨이(IGW) 생성 및 연결

  • 콘솔 경로: VPC → 인터넷 게이트웨이 → 생성
  • VPC 연결: vpc-0200d06ef7532123
 
IGW 이름: my-rds-igw VPC 연결: vpc-0200d06ef7532123

2. 퍼블릭용 라우팅 테이블 생성 및 구성

  • 콘솔 경로: VPC → 라우팅 테이블 → 생성
  • 라우팅 추가:
  •  
    대상: 0.0.0.0/0 대상: igw-xxxx (방금 생성한 인터넷 게이트웨이)
  • 이름: RDS-Public-rt

3. 퍼블릭 서브넷 연결

  • “서브넷 연결” 탭에서 외부 접근용 서브넷 선택 (예: RDS-Pub-subnet-1)
  • “서브넷 연결 편집” → RDS-Public-rt 연결

💡 해당 서브넷의 속성에서 Auto-assign public IPv4 옵션을 활성화해야 퍼블릭 IP가 자동 부여됨.


4. RDS 설정 수정

  • 콘솔 → RDS → 인스턴스 선택 → 수정(Edit)
  • 연결 섹션에서:
    • 퍼블릭 액세스 가능 여부: ✅ 예(Yes)
    • 서브넷 그룹: 퍼블릭 서브넷이 포함된 그룹으로 교체
  • 저장 후 재시작.

5. 외부 접속 테스트

nc -vz <엔드포인트> 5432

성공 시:

Connection to ... port 5432 [tcp/postgresql] succeeded!

✅ 결과

  • 외부(MacBook)에서 RDS(PostgreSQL)에 성공적으로 접속 확인.
  • 0.0.0.0/0 → igw-xxxx 라우트가 연결되지 않았던 것이 핵심 원인이었음.
  • IGW를 추가하고 퍼블릭 서브넷을 구성함으로써 해결 완료.

💡 배운 점 (Key Takeaways)

  • RDS가 위치한 서브넷이 어떤 라우팅 테이블을 사용하는지 항상 확인해야 한다.
  • 0.0.0.0/0 → IGW 가 없으면 외부 인터넷 접근 불가.
  • 퍼블릭 액세스 가능 RDS는 보안 그룹에서 IP 접근 제한 설정을 꼭 해야 한다.
  • Private RDS를 유지하려면 Bastion EC2를 통한 내부 접근을 고려할 수 있다.

'디스코드 - 공부봇' 카테고리의 다른 글

디스코드 봇 생성  (0) 2025.10.29

관련글 더보기