기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
VPC 네트워킹 문제 해결
네트워크 모니터링 및 문제 해결
CloudTrail 로깅
VPC 네트워킹을 사용하는 모든 구성 API 작업 및 워크플로 실행은 CloudTrail에 로깅됩니다. CloudTrail을 사용하여 구성 변경 사항을 감사하고 VPC 네트워킹을 사용하는 실행을 추적합니다.
ENI 흐름 로그 문제 해결
워크플로가 인터넷을 통해 외부 리소스에 액세스할 때 VPC 흐름 로그를 사용하여 연결을 확인하고 문제를 진단할 수 있습니다. HealthOmics는 VPC 서브넷에 탄력적 네트워크 인터페이스(ENIs)를 프로비저닝하여 워크플로 작업의 트래픽을 라우팅합니다. 이러한 ENIs의 흐름 로그를 검사하여 외부 대상과의 네트워크 트래픽을 추적할 수 있습니다.
VPC 흐름 로그에 대한 비용 관리
VPC 흐름 로그는 특히 VPC 수준에서 상당한 비용이 발생할 수 있습니다. 비용을 최소화하려면:
문제 해결 후 흐름 로그를 삭제합니다. 연결 문제를 해결했으면 흐름 로그를 삭제하여 요금 발생을 중지합니다.
장기 스토리지에는 CloudWatch Logs 대신 Amazon S3를 사용합니다. Amazon S3 스토리지는 CloudWatch Logs보다 훨씬 저렴합니다. 규정 준수 또는 보안 분석을 위해 로그를 보존해야 하는 경우 Amazon S3에 게시하도록 흐름 로그를 구성합니다.
CloudWatch Logs 보존 정책을 설정합니다. CloudWatch Logs를 사용하는 경우 자동 로그 만료(예: 7일)를 구성하여 무기한 스토리지 비용을 방지합니다.
문제 해결을 위해 ENI 수준 흐름 로그를 사용합니다. 일회성 디버깅의 경우 전체 VPC가 아닌 특정 고객 ENI에 흐름 로그를 생성합니다.
문제 해결을 위한 흐름 로그 설정
옵션 1: VPC 수준 흐름 로그(지속적인 모니터링용)
VPC에서 흐름 로그를 활성화하여 모든 HealthOmics 워크플로 실행의 트래픽을 자동으로 캡처합니다. 이는 워크플로 실행이 많고 개별 ENIs 추적하지 않고 포괄적인 가시성을 원하는 경우에 가장 좋습니다.
-
VPC 흐름 로그를 활성화합니다. Amazon VPC 콘솔에서:
VPCs 선택하고 HealthOmics 구성에 사용되는 VPC를 선택합니다.
흐름 로그 탭을 선택합니다.
흐름 로그 생성을 선택합니다.
모든 트래픽(승인 및 거부 모두)을 캡처하도록 흐름 로그 구성
CloudWatch Logs를 더 쉬운 쿼리를 위한 대상으로 선택
-
워크플로 실행을 시작합니다. VPC 네트워킹이 활성화된 상태에서 워크플로 실행을 시작합니다. 나중에 흐름 로그를 필터링하기 위한 실행 ID와 시작 시간을 기록해 둡니다.
기간, 대상 IP 또는 트래픽 패턴별로 CloudWatch Logs Insights를 사용하여 흐름 로그를 쿼리합니다. 특정 ENI IDs 식별할 필요는 없습니다.
옵션 2: ENI 수준 흐름 로그(대상 문제 해결용)
계정에 ENIs가 몇 개만 있는 경우 특정 ENIs에 대한 흐름 로그를 활성화합니다. HealthOmics 이는 가장 비용 효율적인 접근 방식이며 특정 워크플로 실행에 대한 트래픽을 쉽게 격리할 수 있습니다.
-
고객 ENI를 찾습니다. Amazon EC2 콘솔에서:
네트워크 인터페이스 선택
태그를 기준으로 필터링
Service: HealthOmics하여 HealthOmics에서 생성한 ENIs만 표시선택적으로 HealthOmics 구성의 서브넷 ID를 기준으로 추가 필터링
ENI ID 및 프라이빗 IP 주소 기록
-
ENI에서 흐름 로그를 활성화합니다.
ENI를 선택하고 흐름 로그 탭을 선택합니다.
흐름 로그 생성을 선택합니다.
모든 트래픽을 캡처하도록 흐름 로그 구성
CloudWatch Logs를 대상으로 선택
참고
흐름 로그는 활성화된 시점의 트래픽만 캡처합니다. VPC 수준 흐름 로그의 경우 워크플로를 실행하기 전에 활성화합니다. ENI 수준 흐름 로그의 경우 ENI에서 활성화되면 동일한 흐름 로그가 해당 ENI를 사용하는 모든 향후 워크플로 실행에 대한 트래픽을 캡처합니다.
VPC 흐름 로그 형식 이해
VPC 흐름 로그는 다음 필드와 함께 공백으로 구분된 형식을 사용합니다.
version account_id interface_id srcaddr dstaddr srcport dstport protocol packets bytes start end action log_status
필드 설명:
버전 - 흐름 로그 형식 버전(일반적으로 2)
account_id - AWS 계정 ID
interface_id - ENI ID(예: eni-0e57c5476efeac402)
srcaddr - 소스 IP 주소
dstaddr - 대상 IP 주소
srcport - 소스 포트 번호
dstport - 대상 포트 번호
프로토콜 - IANA 프로토콜 번호(6=TCP, 17=UDP, 1=ICMP)
패킷 - 흐름의 패킷 수
바이트 - 흐름의 바이트 수
시작 - 흐름 시작 시간(Unix 타임스탬프)
종료 - 흐름 종료 시간(Unix 타임스탬프)
작업 - 수락 또는 거부
log_status — OK, NODATA 또는 SKIPDATA
흐름 로그 항목의 예:
2 074296239033 eni-0e57c5476efeac402 10.0.130.58 13.226.238.96 40565 443 6 13 1502 1774338927 1774338929 ACCEPT OK 2 074296239033 eni-0e57c5476efeac402 13.226.238.96 10.0.130.58 443 40565 6 8 1024 1774338928 1774338930 ACCEPT OK
이러한 항목은 성공적인 양방향 HTTPS 통신을 보여줍니다. 키 IPs: 10.0.130.58은 계정의 HealthOmics에서 생성한 고객 ENI이고, 13.226.238.96은 워크플로가 액세스하는 외부 퍼블릭 도메인입니다. 첫 번째 항목은 아웃바운드 트래픽이고 두 번째 항목은 반환 트래픽입니다. 둘 다 ACCEPT를 표시하여 보안 그룹에서 트래픽이 허용되었음을 나타냅니다.
CloudWatch Logs Insights에서 흐름 로그 쿼리
흐름 로그가 CloudWatch Logs에 게시되면 CloudWatch Logs Insights를 사용하여 데이터를 쿼리하고 분석합니다.
거부된 트래픽 찾기(여기에서 시작)
fields @timestamp, interfaceId, srcAddr, dstAddr, srcPort, dstPort, protocol, action | filter action = "REJECT" | sort @timestamp desc
이렇게 하면 결과가 반환되면 연결 문제가 발생할 수 있습니다. 거부된 항목은 보안 그룹 또는 네트워크 ACLs에 의해 차단되는 트래픽을 보여줍니다.
특정 외부 IP에 대한 트래픽 찾기
먼저 nslookup 또는를 사용하여 도메인을 IP 주소로 확인합니다dig.
$ nslookup ftp.ncbi.nlm.nih.gov Server: 127.53.53.53 Address: 127.53.53.53#53 Non-authoritative answer: ftp.ncbi.nlm.nih.gov canonical name = ftp.wip.ncbi.nlm.nih.gov. Name: ftp.wip.ncbi.nlm.nih.gov Address: 130.14.250.10 Name: ftp.wip.ncbi.nlm.nih.gov Address: 130.14.250.11
상단의 "서버" 및 "주소"는 DNS 해석기입니다. "권한 없는 답변"(130.14.250.10 및 130.14.250.11) 아래의 주소는 도메인의 실제 IPs.
접두사를 사용하여 해당 범위의 IP와 일치하는 흐름 로그를 쿼리합니다.
fields @timestamp, interfaceId, srcAddr, dstAddr, srcPort, dstPort, protocol, action | filter dstAddr like "130.14.250" | sort @timestamp desc
이는 130.14.250로 시작하는 모든 IP와 일치하며 해당 서브넷의 모든 IPs.
외부 대상으로 향하는 HTTPS 트래픽 찾기
fields @timestamp, interfaceId, srcAddr, dstAddr, srcPort, dstPort, protocol, action | filter dstPort = 443 and protocol = 6 | filter not (dstAddr like /^10\./ or dstAddr like /^172\./ or dstAddr like /^192\.168\./) | sort @timestamp desc
두 번째 필터는 외부(퍼블릭) 대상에 대한 트래픽만 표시하는 프라이빗 IP 범위를 제외합니다.
참고
프로토콜 번호: 6=TCP, 17=UDP, 1=ICMP. 로드 밸런싱된 서비스(예: CloudFront)의 경우 DNS가 다른 IPs 반환할 수 있으므로 IP 주소 대신 대상 포트를 기준으로 필터링합니다.
일반적인 흐름 로그 패턴 및 문제
- 아웃바운드 트래픽 거부됨
-
Outbound: 2 074296239033 eni-0e57c5476efeac402 10.0.130.58 13.226.238.96 40565 443 6 1 60 1774338927 1774338929 REJECT OK원인: 보안 그룹이 대상 포트 또는 IP 범위로의 아웃바운드 트래픽을 허용하지 않습니다.
해결 방법: 보안 그룹에 아웃바운드 규칙을 추가합니다.
HTTPS의 경우: TCP 포트 443~0.0.0.0/0 허용
HTTP의 경우: TCP 포트 80~0.0.0.0/0 허용
더 광범위한 액세스를 위해: 모든 TCP/UDP를 0.0.0.0/0으로 허용
- 반환 트래픽 거부됨
-
Outbound: 2 074296239033 eni-0e57c5476efeac402 10.0.130.58 8.8.8.8 54321 53 17 1 64 1774338927 1774338929 ACCEPT OK Return: 2 074296239033 eni-0e57c5476efeac402 8.8.8.8 10.0.130.58 53 54321 17 1 64 1774338928 1774338930 REJECT OK원인: 네트워크 ACL이 반환 트래픽을 차단하고 있습니다. 보안 그룹(상태 저장)과 달리 네트워크 ACLs은 상태 비저장이며 양방향에 대한 명시적 규칙이 필요합니다.
해결 방법: VPC 콘솔에서 서브넷의 네트워크 ACL을 확인하고 인바운드 규칙이 외부 소스의 임시 포트(1024-65535)에서 트래픽을 허용하는지 확인합니다. 필요한 경우 규칙 추가: 0.0.0.0/0에서 TCP/UDP 포트 1024-65535 허용
- 반환 트래픽 누락
-
Outbound: 2 074296239033 eni-0e57c5476efeac402 10.0.130.58 8.8.8.8 54321 53 17 1 64 1774338927 1774338929 ACCEPT OK원인: NAT 게이트웨이/인터넷 게이트웨이가 제대로 구성되지 않았거나 ENI가 인터넷에 연결되지 않았습니다.
해결 방법:
라우팅 테이블에 NAT 게이트웨이에 대한 경로가 있는지 확인(0.0.0.0/0 → nat-xxxxx)
탄력적 IP를 사용하여 NAT 게이트웨이가 AVAILABLE 상태인지 확인
NAT 게이트웨이가 인터넷 게이트웨이로 라우팅되는 퍼블릭 서브넷에 있는지 확인
- 예상 트래픽에 대한 흐름 로그 항목 없음
-
원인: 트래픽이 ENI에 도달하지 않거나 흐름 로그가 올바르게 구성되지 않았습니다.
해결 방법:
흐름 로그가 활성화되고 모든 트래픽을 캡처하도록 구성되어 있는지 확인
CloudWatch Logs의 워크플로 로그를 확인하여 워크플로가 외부 리소스에 액세스하려고 시도하는지 확인합니다.
라우팅 테이블에 NAT 게이트웨이에 대한 경로가 있는지 확인(0.0.0.0/0 → nat-xxxxx)
탄력적 IP를 사용하여 NAT 게이트웨이가 AVAILABLE 상태인지 확인
흐름 로그 문제 해결 모범 사례
-
문제 해결을 시작하기 전에 흐름 로그를 활성화합니다. 흐름 로그는 활성화된 시점의 트래픽만 캡처합니다. 워크플로를 실행하기 전에 HealthOmics 구성의 모든 서브넷에서 활성화합니다.
-
분석에 CloudWatch Logs Insights를 사용합니다. CloudWatch Logs Insights는 흐름 로그에 대한 강력한 쿼리 기능을 제공합니다. 빠른 액세스를 위해 일반적으로 사용되는 쿼리를 저장합니다.
-
기간을 기준으로 필터링합니다. 워크플로 실행이 활성화된 특정 기간으로 흐름 로그 쿼리를 좁혀 노이즈를 줄이고 쿼리 성능을 개선합니다.
-
트래픽의 양방향을 찾습니다. 항상 아웃바운드 트래픽과 반환 트래픽 모두에 ACCEPT가 표시되는지 확인합니다. 연결에는 양방향 통신이 필요합니다.
-
조사 결과를 문서화합니다. 연결 문제를 해결할 때 고객 ENI ID, IP 주소, 포트 및 흐름 로그 항목을 문서화합니다. 이 정보는 지원 사례 및 향후 문제 해결에 유용합니다.
-
먼저 간단한 워크플로로 테스트합니다. 복잡한 워크플로를 실행하기 전에 외부 리소스에 액세스하려고 시도하고 결과를 기록하는 간단한 워크플로로 연결을 테스트합니다. 이렇게 하면 네트워크 문제를 워크플로 로직 문제로부터 격리할 수 있습니다.
구성 문제 해결
구성이 CREATING 상태에서 멈춤
원인: 네트워크 리소스 프로비저닝에는 몇 분 정도 걸릴 수 있습니다.
해결 방법: 최대 10분간 기다립니다. 상태가 ACTIVE로 변경되지 않으면 다음을 확인합니다.
서브넷과 보안 그룹이 존재하며 동일한 VPC에 있습니다.
필요한 IAM 권한이 있습니다.
서비스 연결 역할이 성공적으로 생성되었습니다.
VPC 네트워킹으로 실행을 시작하지 못함
원인: 구성이 ACTIVE가 아니거나 네트워크 연결 문제가 있을 수 있습니다.
해결 방법:
를 사용하여 구성 상태가 ACTIVE인지 확인합니다
GetConfiguration.보안 그룹 규칙이 필요한 아웃바운드 트래픽을 허용하는지 확인합니다.
서브넷이 HealthOmics가 작동하는 가용 영역에 있는지 확인합니다.
구성을 삭제할 수 없음
원인: 활성 워크플로 실행에서 구성을 사용 중입니다.
해결 방법: 구성을 사용하여 모든 실행이 완료될 때까지 기다린 다음 삭제를 다시 시도합니다.
서비스 연결 역할을 삭제할 수 없음
원인: 활성 VPC 구성이 계정에 있습니다.
해결 방법: 먼저 모든 VPC 구성을 삭제한 다음 서비스 연결 역할을 삭제합니다.
워크플로가 외부 리소스에 연결할 수 없음
원인: 보안 그룹 또는 라우팅 테이블 구성이 잘못되었습니다.
해결 방법:
VPC 흐름 로그를 활성화하여 거부된 패킷 식별
보안 그룹 아웃바운드 규칙이 대상에 대한 트래픽을 허용하는지 확인
라우팅 테이블에 NAT 게이트웨이에 대한 경로가 있는지 확인(0.0.0.0/0 → nat-xxxxxx)
리전 간 AWS 서비스 액세스의 경우 대상 리전에 연결할 수 있는지 확인합니다.
동일한 서브넷의 Amazon EC2 인스턴스에서 연결 테스트
네트워크 성능 문제
증상: 느린 데이터 전송 또는 워크플로 제한 시간입니다.
원인: 네트워크 처리량 제한 또는 NAT 게이트웨이 포화.
해결 방법:
네트워크 처리량은 ENI당 10Gbps에서 시작되며 지속적인 트래픽으로 60분 동안 최대 100Gbps까지 확장됩니다.
즉각적인 처리량이 높은 요구 사항이 있는 워크플로의 경우 Support에 문의 AWS 하세요.
CloudWatch에서 NAT 게이트웨이 지표를 모니터링하여 포화도 식별
처리량을 높이려면 여러 가용 영역에 추가 NAT 게이트웨이를 배포하는 것이 좋습니다.
워크플로가 인터넷에 연결할 수 없음
원인: 프라이빗 서브넷에 NAT 게이트웨이에 대한 경로가 없거나 보안 그룹 규칙이 아웃바운드 트래픽을 차단하고 있을 수 있습니다.
해결 방법:
프라이빗 서브넷의 라우팅 테이블에 NAT 게이트웨이(0.0.0.0/0 → nat-xxxxxxxxx)에 대한 경로가 포함되어 있는지 확인합니다.
보안 그룹 규칙이 필요한 포트에서 아웃바운드 트래픽을 허용하는지 확인합니다.
NAT 게이트웨이가 인터넷 게이트웨이로 라우팅되는 퍼블릭 서브넷에 있는지 확인합니다.
연결 오류와 함께 워크플로 실행 실패
원인: 네트워크 트래픽이 차단되거나 잘못 구성될 수 있습니다.
해결 방법:
를 사용하여 구성이 여전히 활성 상태인지 확인합니다
GetConfiguration.VPC의 ENIs에 VPC 흐름 로그를 생성하여 트래픽을 검사합니다. 자세한 내용은 Amazon VPC 사용 설명서의 VPC 흐름 로그를 참조하세요.
흐름 로그에서 REJECT 항목을 확인합니다. 거부된 패킷이 표시되면 필요한 아웃바운드 트래픽을 허용하도록 보안 그룹 규칙을 업데이트합니다.
흐름 로그에서 근본 원인이 드러나지 않으면 AWS Support에 문의하세요.