퍼블릭 서브넷의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 퍼블릭 IP 주소 또는 인터넷 게이트웨이가 있지만 인터넷에 액세스할 수 없습니다.
해결 방법
사전 요구 사항:
- 인터넷 게이트웨이에 대한 기본 경로(0.0.0.0/0)가 있는 인스턴스의 서브넷과 라우팅 테이블을 연결합니다.
- 경로와 연결된 인터넷 게이트웨이를 삭제하지 않았는지 확인하십시오.
- 포트 및 프로토콜에 대한 아웃바운드 인터넷 트래픽(0.0.0.0/0)을 허용하는 규칙을 사용하여 인스턴스의 탄력적 네트워크 인터페이스에 연결된 보안 그룹을 구성합니다.
- 인스턴스의 서브넷과 연결된 네트워크 액세스 제어 목록(ACL)에 인터넷으로의 아웃바운드 트래픽과 인바운드 트래픽을 모두 허용하는 규칙이 있는지 확인합니다.
퍼블릭 서브넷에 있는 인스턴스에 퍼블릭 IP 주소가 없는 경우 가상 프라이빗 클라우드(VPC) 외부에서 해당 인스턴스에 액세스할 수 없습니다. 이는 인스턴스에 인터넷 게이트웨이가 있는 경우에도 마찬가지입니다.
인스턴스의 인터넷 연결을 허용하려면 탄력적 IP 주소를 할당한 다음 인스턴스와 이 탄력적 IP 주소를 연결합니다.
퍼블릭 IP 주소가 있는 인스턴스의 경우 인터넷 액세스를 차단하는 방화벽 규칙이 있는지 확인한 다음 규칙을 제거하십시오. 또는 방화벽을 비활성화하십시오.
액세스를 차단하는 방화벽 규칙 제거
운영 체제(OS)에서 실행되는 로컬 방화벽은 특정 포트 또는 IP 주소에 대한 아웃바운드 액세스를 차단할 수 있습니다. 이 문제를 해결하려면 방화벽 규칙을 나열한 다음 액세스를 차단하는 규칙을 삭제하십시오.
참고: 규칙을 삭제하기 전에 규칙을 파일에 백업하십시오.
Linux 배포
방화벽 규칙을 나열하려면 인스턴스에 구성된 방화벽을 기반으로 다음 명령 중 하나를 실행합니다.
복잡하지 않은 방화벽
sudo ufw status numbered
firewalld
sudo firewall-cmd --list-all-zones
iptables
sudo iptables -L --line-numbers
방화벽 규칙을 삭제하려면 인스턴스에 구성한 방화벽을 기반으로 다음 명령 중 하나를 실행합니다.
복잡하지 않은 방화벽
sudo ufw delete rule_number
참고: rule_number를 삭제하려는 방화벽 규칙으로 바꾸십시오.
firewalld
sudo firewall-cmd --zone=zone --remove-rich-rule=rule --permanent
sudo firewall-cmd --reload
참고: --permanent 규칙을 제거한 후 방화벽을 다시 로드해야 변경 사항이 런타임 구성에 즉시 적용됩니다.
iptables
sudo iptables-save > iptables_backup.txt
sudo iptables -D chain rule_number
Windows Server
Windows Server 기본 방화벽의 방화벽 규칙을 나열하려면 다음 명령을 실행합니다.
netsh advfirewall firewall show rule name=all
위 명령 출력의 규칙 중에 차단된 트래픽을 표시하는 규칙이 하나라도 있다면 다음 명령을 실행하여 방화벽 규칙을 제거합니다.
netsh advfirewall firewall delete rule name=rule_name
참고: rule_name을 트래픽을 차단하는 방화벽 규칙의 이름으로 바꾸십시오.
자세한 내용은 Microsoft Learn 웹 사이트에서 Windows 방화벽 도구를 참조하십시오.
방화벽 비활성화
Linux 배포
로컬 방화벽을 비활성화하고 대신 ](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)보안 그룹을 사용[할 수도 있습니다.
참고: 방화벽 비활성화는 워크로드에 영향을 미칠 수 있습니다.
방화벽을 비활성화하려면 다음 명령 중 하나를 실행합니다.
복잡하지 않은 방화벽
sudo ufw disable
firewalld
sudo systemctl disable firewalld --now
iptables
sudo systemctl disable iptables
방화벽을 사용해야 하는 경우 다음 명령 중 하나를 실행하여 발신 트래픽을 허용하십시오.
복잡하지 않은 방화벽
sudo ufw default allow outgoing
iptables
sudo iptables P OUTPUT ACCEPT
sudo iptables I OUTPUT j ACCEPT
참고: 기본적으로 firewalld는 리치 규칙이 없는 한 모든 영역의 시스템에서 모든 발신 트래픽을 허용합니다.
Windows Server
기본 방화벽인 Windows Server용 Windows 방화벽을 비활성화하려면 다음 명령을 실행합니다.
netsh advfirewall set allprofiles state off
자세한 내용은 Microsoft Learn 웹 사이트에서 Windows 방화벽 도구를 참조하십시오.
관련 정보
인터넷 게이트웨이를 사용하여 VPC의 인터넷 액세스 활성화
프라이빗 서브넷의 EC2 인스턴스를 인터넷에 연결하는 데 NAT를 사용할 수 없는 이유는 무엇입니까?