본문 바로가기
AWS

[AWS][VPC] Traffic Mirroring으로 패킷 확인하기

by chan10 2024. 1. 25.

Traffic Mirroring 기능은 Cloud 환경에서 보기 어려운 패킷을 Mirroring을 통해 직접 확인 할 수 있도록 하는 기능입니다.

ENI를 이용해 VPC 내부에서 통신되는 EC2, LB 등 트래픽의 상세한 분석이 필요한 경우 유용하게 사용할 수 있습니다.

VPC내의 통신을 확인 할 수 있는 방법은 VPC Flow Logs도 있습니다.

VPC Flow Logs는 VPC 내 통신을 로그 형식으로 가시성을 제공하고 Traffic Mirroring은 통신 패킷을 직접 확인 할 수 있는 차이점이 있습니다.

 

Traffic Mirror 구성요소

  • Traffic Mirror Source
  • Traffic Mirror Target
  • Traffic Mirror Filter
  • Traffic Mirror Session

Traffic Mirror Targets

미러링 된 트래픽을 보낼 타켓을 지정하며 타겟의 종류는 3가지 입니다.

  • ENI (Elastic Network Interface)
  • NLB (Network LoadBalancer)
  • GWLB (Gatewayt LoadBalancer Endpoint

 

생성할 미러 타켓의 이름을 작성합니다. 다음으로 타겟의 종류 및 타겟을 선택합니다.

 

생성된 미러 타켓을 확인합니다.

 

Traffic Mirror Filters

Mirror할 트래픽에 대해 정의합니다. Protocol, Port, IP CIDR로 Filtering이 가능합니다.

 

Filter의 이름과 설명을 작성합니다.

Filter는 Inbound, Outbound Rule을 정할 수 있으며 In/Outbound 80,443 포트만 필터링 되도록 설정했습니다.

 

설정한 Filter를 확인합니다.

 

Traffic Mirror Sessions

설정한 Mirror Targer, Filter를 이용해 하나의 Mirror Session을 생성합니다.

 

Mirror Session의 이름을 작성하고 트래픽을 복사 할 Source Interface를 선택합니다.

미리 생성한 Mirror Target을 선택하거나 없을 경우 Create target을 이용해 생성할 수 있습니다.

마찬가지로 이전에 생성한 Filter를 생성하거나 없을 경우 Create filter을 이용해 생성할 수 있습니다.

 

추가로 Session number, VNI를 선택할 수 있습니다.

Session number는 우선 순위를 나타내며 1이 가장 높은 우선순위를 가집니다.

VNIMirroring 된 Traffic은 VXLAN을 통해 전송되는데 이 때 사용되는 VXLAN ID를 정의합니다. (미 정의 시 자동 할당 됩니다.)

 

생성된 Mirror Session을 확인합니다.

 

Mirroring Traffic 확인

VXLAN 통신으로 트래픽이 Mirror되기에 Target Interface의 Security Group에 UDP 4789가 허용되어 있어야 합니다.

 

[참고사항]

  • ENI당 세션 수 - 각 ENI에서 최대 세 개의 활성 세션을 가질 수 있습니다.
  • 대역폭 - Mirror Traffic은 인스턴스에서 사용할 수 있는 전체 대역폭에 포함됩니다. 트래픽 정체 발생 시에는 Mirroing 트래픽이 먼저 삭제됩니다.
  • Target은 Source와 다른 계정이더라도 가능합니다.  (Resouce Access Manager 이용)
  • Mirror Source와 Mirror Target이 동일한 VPC 혹은 Peering, TGW로 연결 및 라우팅 테이블이 존재해야 합니다.
    (즉, Mirror Traffic은 라우팅에 의해 전송됩니다.)
  • Incomming Security Group이나 Network ACL에 의해서 Drop된 패킷은 Mirroring 되지 않습니다.

[Linux]

리눅스의 tcpdump로 확인 시 VXLAN 패킷 및 실제 통신 패킷이 같이 캡쳐되는 것을 볼 수 있습니다.

 

[Windows]

Wireshark로 캡쳐 시 좀 더 명확하게 Traffic 확인이 가능합니다.

VXLAN은 Layer 3,4 단계의 패킷을 Encapsulation을 통해 원하는 목적지로 전송 후 Decapsulation을 하게 됩니다.

따라서 Mirror Traffic은 VXLAN 통신을 하기에 패킷 확인 시 VXLAN 용 IP와 실제 통신 IP가 같이 캡쳐됩니다.

  Source IP Source Port Destination IP Destination Port 비고
VXLAN 10.11.1.239
(MirrorSource)
65460 10.10.1.13
(MirrorTarget)
4789  
원본 Packet 112.220.71.244
(Client)
64485 10.11.1.239
(WebServer)
80 Destination
3.39.105.146
10.11.1.239

2개 IP존재 하나
내부로 전송되는 사설 구간만 캡쳐 됨


 

VXLAN 패킷 확인 시 UDP 4789 번호 및 VNI 번호를 확인 할 수 있습니다.

그래서 보안그룹에 UDP 4789 오픈이 필요했으며 Mirror Session 생성 시 작성하지 않았던 VNI는 자동 할당되어 사용됨을 알수 있습니다.

 

AWS Cloud 환경에서는 이슈 발생 시 트래픽 확인이 쉽지 않아 로그 형식으로 보곤합니다.

그러나 직접 트래픽 확인이 필요할 경우 VPC Traffic Mirroring 기능을 사용하면 간단한 설정으로 트래픽 확인이 가능하기에 유용하게 활용할 수 있을 것 입니다.

 

[참고사이트]

https://aws.amazon.com/ko/blogs/korea/new-vpc-traffic-mirroring/

https://whchoi98.gitbook.io/aws-hybrid/5networkmonitoring/5.5.vpc-traffic-mirror