
동일한 AZ와 동일한 계정에 두 개의 EC2 인스턴스를 생성했습니다. 그들은 다른 보안 그룹을 사용합니다. 인스턴스 A가 인스턴스 B의 특정 포트에 대한 연결만 허용하도록 하고 싶습니다.
이 인스턴스가 VPC라고 생각되지 않지만 확인하는 방법을 모르겠습니다. 보안 그룹을 변경할 수 없어 VPC가 아닌 것으로 생각됩니다.
예를 들어 보안 그룹에서 AI는 포트에 대한 규칙을 추가하고 인스턴스 B의 퍼블릭 IP /32를 소스로 사용했습니다. 그런 다음 인스턴스 A의 퍼블릭 IP를 사용하여 인스턴스 B에서 연결을 시도했지만 연결 시도가 즉시 실패했습니다.
각 인스턴스의 개인 IP로 동일한 단계를 시도했습니다. 내가 무엇을 놓치고 있나요?
비슷한 질문에 답변하는 기사가 있지만 VPC가 관련되어 있습니다.VPC(Amazon AWS)의 EC2 인스턴스에 연결할 수 없습니다..
두 인스턴스 모두 동일한 VPC ID와 서브넷 ID를 갖습니다.
또한 소스를 인스턴스 B의 보안 그룹으로 설정해 보았지만 역시 작동하지 않았습니다.
나는 이것을 mysql로 시도하고 있습니다. 인스턴스 B에서 실행 중인 mysql 클라이언트는 다음 오류로 인해 즉시 실패했습니다.
오류 2003(HY000): '54.xx.xx.xx'에서 MySQL 서버에 연결할 수 없습니다(113).
mysqld 설정에 문제가 없는지 확인하기 위해 ICMP Echo Reply로 동일한 작업을 시도했지만 작동하지 않았습니다.
편집하다 초기 답변 덕분에 이 두 인스턴스가 VPC에서 실행되고 있음을 확인할 수 있었습니다(VPC 콘솔로 이동). 그래서 제 질문은 링크된 기사와 매우 유사합니다. 하지만 이 경우 문제는 인스턴스가 기본 인스턴스가 아니어서 적절한 경로와 서브넷이 생성되지 않았다는 것입니다. 내 VPC가 설정되는 방법은 다음과 같습니다. VPC는 기본값이며 이와 연결된 라우팅 테이블이 있습니다. 라우팅 테이블은 VPC와 연결된 서브넷과 암시적으로 연결됩니다. 경로 테이블에는 단일 경로가 있고 대상은 "로컬"입니다.
문서에서 두 인스턴스가 서로 연결되도록 허용해야 한다는 것을 이해하기 때문에 이것들은 모두 기본적으로 생성됩니다. 나는 (아직도) 무엇을 놓치고 있나요?
답변1
AWS 기술 지원의 도움으로 이 문제를 해결했습니다. 저와 같은 미래의 초보자를 위한 정보는 다음과 같습니다.
문제는 iptables가 인스턴스 B에서 실행 중이고 트래픽을 허용하지 않는다는 것입니다. EC2 인스턴스에는 보안 그룹(AWS 콘솔에서 관리됨)과 iptables(호스트에서 관리됨)라는 두 가지 수준의 방화벽이 있다는 것을 알게 되었습니다. 예를 들어 iptables를 사용하는 이유가 있습니다. https://wincent.com/wiki/Using_iptables_on_EC2_instances
대부분의 경우 Amazon EC2를 실행할 때 iptables와 같은 호스트 수준 방화벽 사용에 대해 걱정할 필요가 없습니다. Amazon에서는 "보안 그룹" 내에서 인스턴스를 실행할 수 있기 때문입니다. 인스턴스에 도달하도록 허용해야 하는 외부 세계의 연결을 지정합니다. 그러나 이는 "화이트리스트" 접근 방식이므로 실행 중인 인스턴스에서 "블랙리스트" 목적으로 사용하는 것은 간단하지 않습니다.
내 경우에는 호스트 수준 방화벽이 필요하지 않으므로 iptables를 끕니다.
sudo service chkconfig stop
sudo chkconfig iptables off
이 질문에 게시된 댓글과 관련하여 제가 얻은 몇 가지 결과는 다음과 같습니다.
- 개인 IP로 연결이 작동했습니다.
- 개인 DNS 이름으로 연결이 작동했습니다.
- 공용 IP와 연결이 작동했습니다.
- Public EIP와의 연결이 작동했습니다.
- 공용 DNS와의 연결은 작동했지만 Chad Smith가 답변에서 말했듯이 DNS는사적인이 이름의 IP
이것이 다른 인스턴스에서 나에게 효과가 있었던 이유는 해당 인스턴스에서 사용한 이미지가 iptables를 실행하지 않았기 때문입니다. 모든 이미지가 다릅니다. 이 경우에 사용한 이미지는 iptables를 사용하여 SSH를 제외한 모든 연결을 허용하지 않았습니다.
답변2
주제에서 약간 벗어났지만 이것이 이 문제에 대한 유일한 검색 결과입니다.
비슷한 문제가 있었지만 기존 인스턴스가 재부팅되어 갑자기 통신할 수 없었습니다. 보안 그룹에 너무 많은 규칙이 있는 것으로 나타났습니다. 재개하려면 허용된 통신 중 일부를 제거하면 됩니다. API에 대한 자동화된 호출을 통해 시간이 지남에 따라 규칙이 추가되기 때문에 재부팅 전에도 여전히 작동했습니다.
이것이 미래에 누군가에게 도움이 되기를 바랍니다.
답변3
실행 중인 인스턴스의 보안 설정을 수정할 수 없는 경우 해당 인스턴스는 VPC로 시작되지 않습니다.
VPC에 없는 인스턴스의 경우에도 EC2는 인스턴스를 상호 연결된 프라이빗 네트워크에서 시작합니다. 따라서 다음을 지정해야 합니다.개인 IP 주소인스턴스 A의 보안 그룹에 있는 인스턴스 B의
답변4
AWS에는 VPC 및 비VPC 인스턴스에 대한 별도의 보안 그룹이 있으므로 VPC에 있는지 여부를 어떻게든 알아낸 다음(VPC 콘솔로 이동하여 인스턴스가 표시되는지 확인) 보안 그룹이 있는지 확인해야 합니다. 같은 맥락에서 만들어졌습니다. 그런 다음 보안 그룹 A를 보안 그룹 B에 신뢰할 수 있는 그룹으로 추가하고 그 반대도 수행할 수 있습니다. 이렇게 하면 개별 포트에서 두 호스트 사이의 모든 트래픽을 허용할 수 있습니다(이것이 귀하의 의도라고 가정합니다).