Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 웹사이트를 호스팅합니다. 사용자가 HTTP(포트 80) 또는 HTTPS(포트 443)를 통해 내 웹사이트에 연결하기를 원합니다.
해결 방법
포트 80 또는 포트 443에서 트래픽을 허용하려면 관련 보안 그룹 및 네트워크 액세스 제어 목록(ACL)을 구성해야 합니다.
보안 그룹 규칙 구성
HTTP 트래픽의 경우 소스 주소 0.0.0.0/0의 포트 80에 인바운드 규칙을 추가합니다.
HTTP 트래픽의 경우 소스 주소 0.0.0.0/0의 포트 443에 인바운드 규칙을 추가합니다.
이전 인바운드 규칙은 IPv4 주소로부터의 트래픽을 허용합니다. IPv6 트래픽을 허용하려면 소스 주소 ::/0의 동일한 포트에 인바운드 규칙을 추가합니다.
보안 그룹의 아웃바운드 규칙은 수정할 필요가 없습니다. 보안 그룹은 스테이트풀이므로 인스턴스의 반환 트래픽을 자동으로 허용합니다.
다음 예제 구성에는 TCP 포트 80 및 443에서 IPv4 및 IPv6 트래픽을 허용하는 규칙이 있습니다.
인바운드 규칙
| 유형 | 프로토콜 | 포트 범위 | 소스 |
|---|
| HTTP(80) | TCP(6) | 80 | 0.0.0.0/0 |
| HTTP(80 | TCP(6) | 80 | ::/0 |
| HTTPS(443) | TCP(6) | 443 | 0.0.0.0/0 |
| HTTPS(443) | TCP(6) | 443 | ::/0 |
참고: SSH 또는 원격 데스크톱 프로토콜(RDP) 같은 다른 트래픽 소스의 인스턴스 로그인을 허용해야 하는지 확인합니다. 그런 다음 보안 그룹에 필요한 트래픽을 허용하는 인바운드 규칙이 있는지 확인하십시오.
네트워크 ACL 구성
기본 네트워크 ACL은 모든 인바운드 및 아웃바운드 IPv4 트래픽을 허용합니다. Amazon Virtual Private Cloud(Amazon VPC)에 연결된 IPv6 CIDR 블록이 있는 경우 기본 네트워크 ACL에서 모든 인바운드 및 아웃바운드 IPv6 트래픽을 허용하는 규칙도 자동으로 추가합니다. 하지만 규칙이 더 제한적인 사용자 지정 네트워크 ACL을 사용하는 경우, 포트 80 및 443에서 트래픽을 명시적으로 허용해야 합니다.
네트워크 ACL은 스테이트리스(stateless)이므로 웹사이트 연결을 허용하려면 인바운드 규칙과 아웃바운드 규칙을 모두 추가해야 합니다.
다음 구성은 TCP 포트 80 및 443에서 트래픽을 허용하는 사용자 지정 네트워크 ACL의 예입니다. 단일 Amazon EC2 인스턴스뿐만 아니라 서브넷의 모든 리소스에 네트워크 ACL을 사용합니다. 다음 구성은 대상 포트 80과 443을 제외하고 서브넷의 리소스와 주고받는 모든 트래픽을 차단합니다.
인바운드 규칙
| 규칙 # | 유형 | 프로토콜 | 포트 범위 | 소스 | 허용/거부 |
|---|
| 100 | HTTP(80) | TCP(6) | 80 | 0.0.0.0/0 | 허용 |
| 101 | HTTPS(443) | TCP(6) | 443 | 0.0.0.0/0 | 허용 |
| 102 | HTTP(80) | TCP(6) | 80 | ::/0 | 허용 |
| 103 | HTTPS(443) | TCP(6) | 443 | ::/0 | 허용 |
| * | 전체 트래픽 | 모두 | 모두 | ::/0 | 거부 |
| * | 전체 트래픽 | 모두 | 모두 | 0.0.0.0/0 | 거부 |
아웃바운드 규칙
| 규칙 # | 유형 | 프로토콜 | 포트 범위 | 대상 | 허용/거부 |
|---|
| 100 | 사용자 지정 TCP 규칙 | TCP(6) | 1024~65535 | 0.0.0.0/0 | 허용 |
| 101 | 사용자 지정 TCP 규칙 | TCP(6) | 1024~65535 | ::/0 | 허용 |
| * | 전체 트래픽 | 모두 | 모두 | ::/0 | 거부 |
| * | 전체 트래픽 | 모두 | 모두 | 0.0.0.0/0 | 거부 |
참고: SSH 또는 RDP 같은 다른 트래픽 소스의 인스턴스 로그인을 허용해야 하는지 확인합니다. 그런 다음 네트워크 ACL에 필요한 트래픽을 허용하는 인바운드 규칙이 있는지 확인하십시오.
"connection refused" 오류 문제 해결
보안 그룹 또는 네트워크 ACL 규칙에 지정되지 않은 포트에서 연결이 라우팅되면 "connection refused" 오류가 발생합니다. 예를 들어 호스트 A가 호스트 B에 대한 TCP 연결을 시작합니다. 먼저 호스트 A가 호스트 B에 TCP SYN 패킷을 보낸 다음 호스트 B가 이에 대한 응답으로 호스트 A에 TCP RST 패킷을 보냅니다. 지정된 포트에서 이러한 연결 요청이 발생하지 않으면 호스트 A가 "connection refused" 오류를 수신합니다.
이 문제를 해결하려면 포트 80 또는 443에서 인스턴스의 웹 서버 서비스가 실행 중 상태인지 확인하십시오.
"connection timeout" 오류 해결
TCP 포트 80 및 443을 명시적으로 허용한 후 "connection timeout" 오류가 발생하면 운영 체제(OS) 방화벽을 확인하십시오. 방화벽이 필수 포트의 인바운드 TCP 트래픽을 차단하지 않는지 확인합니다.