[AWS] VPC: 트래픽 미러링

트래픽 미러링은 특정 리소스로 들어오는 네트워크 트래픽을 캡쳐해서 다른 리소스에도 복제해서 보내주는 특수한 기능이다.
기능적인 한계상 부하를 옮겨서 부하테스트를 하는 목적으로는 사용이 어렵고, 네트워크 패킷 검사 등에 사용하기에 적합하다.
그래서 사실 일반 개발환경에서는 응용할 일이 잦지는 않다.




한계

AWS의 트래픽 미러링은 모든 리소스에 대해서 지원되지는 않는다.
미러링 타겟은 ENI, Network LoadBalancer로 제한된다.

EC2나 ECS 단일 노드에 대해서만 테스트를 할거라면 그 ENI를 타겟으로 잡으면 되지만, 멀티 노드 환경에서의 미러링 테스트를 원한다면 Network LoadBalancer나 Gateway LoadBalancer를 중간 레이어에 끼워놔야만 한다.

게다가 일반적인 웹서버 환경에서 프로덕션 트래픽을 옮기는데도 사용하기 어렵다.
그냥 예상하지 못한 트래픽이 침범하는지 아닌지, 그정도 검사하는데나 쓸만하다.




비용

당연히 공짜가 아니다.

https://aws.amazon.com/ko/vpc/pricing/
시간당 고정 요금이 발생한다.





전제사항

일단 원본과 대상 리소스가 존재할 것이다.
미러링을 수행하면 원본->대상으로 트래픽을 복제한다.

대상 리소스는 UDP 4789 포트를 수신할 수 있도록 인바운드를 구성해야 한다.

이게 닫혀있으면 받질 못한다.





트래픽 미러링 만들기

VPC 섹션으로 이동하면 미러링 섹션이 존재한다.

여기서 가장 먼저 해야할건 대상을 만드는 것이다.

미러링을 받을 리소스의 ENI나 LB를 넣으면 된다.

그 다음에는 필터를 정의한다.

다 받고싶다면 그냥 0.0.0.0/0에 모든 프로토콜로 다 열어도 된다.

세션을 만들면 그때부터 미러링이 시작되는 것이다.

원본 소스와 아까 만들었던 대상을 지정해서 만든다.

그럼 미러링 대상에서는 tcpdump 같은 스니핑 도구를 활용해서 캡쳐 및 분석을 수행할 수 있다.

sudo tcpdump -i eth0 port not 22 -c 2




참조
https://aws.amazon.com/ko/blogs/korea/new-vpc-traffic-mirroring/
https://docs.aws.amazon.com/vpc/latest/mirroring/what-is-traffic-mirroring.html
https://docs.aws.amazon.com/vpc/latest/mirroring/traffic-mirroring-getting-started.html
https://medium.com/@yojohndunn/aws-traffic-mirroring-4d1fa60d9d6f
https://anilaugustinechalissery.medium.com/aws-vpc-traffic-mirroring-dadfe0dec3