본문 바로가기

Cloud/AWS

AWS VPC Reachability Analyzer - Part 1

Today Keys :  reachability, analyer, analyze, path, 경로, 확인, network, trace, check, vpc, aws


이번 포스팅은 신규 기능인 AWS VPC Reachability Analyzer을 이용해서 간단한 테스트를 해봅니다. VPC Reachability Analyzer 운영자가 의도한 대로 네트워크 구성(네트워크 보안을 포함하여)이 되었는지를 확인하고 어느 구간에 문제가 있는지를 손쉽게 알 수 있게 도와주는 기능입니다.

 이번 포스팅에서는 VPC Reachability Analyzer에 대한 일반적인 내용은 다루지 않았으며, 해당 내용은 추가 포스팅에서 다룰 예정입니다.


 

 

 

오늘 포스팅에서 다뤄질 구성입니다.     

 

   Reachability Analyzer을 사용하기 위해서 VPC의 REACHABILITY를 메뉴를 확인합니다.

 

'Create and analyze path'를 클릭해서 새로운 analyze path를 만들어 봅니다.

 

     analyze path를 만들기 위해서는    

tag(optional),

Source Type, Source, Source IP(optional),

Destination Type, Destination, Destination IP address(optional),

Destination port(optional), Protocol

을 지정합니다.

 

  Source Type으로 선택 가능한 AWS 서비스는 다음과 같습니다.  

 

선택한 Source Type에 대해서 실제 어떤 리소스를 선택할 것인지 지정하게 되는 데, 

기본적으로 표기되는 것은 각 Resouce ID 값입니다. 

하지만, name tag를 달아두면, Resource ID 밑에 name tag 내용이 함께 표기 됩니다.   

아래 예시는 Internet Gateway 입니다.

 

 Destination Type으로 Intance를 선택하여, name tag가 보이는 것을 확인할 수 있습니다. 

 

 입력한 값을 확인해 보면, 출발지가 Internet Gateway이며 목적지가 Web서버 Instance입니다.   

이제 analyze path 생성하면서 경로 추적을 합니다.

 

'Create and analyze path'를 선택해서  analyze path를 만듬과 동시에 최초 경로 확인을 합니다.

결과를 확인하는 데에는 경로에 따라서 수 분이 소요 될 수 있습니다.

Reachability status가 'pending' 상태임을 확인 할 수 있습니다.

 

 자 이제 잠시 후, 시간이 지나면

Reachability status를 확인 할 수 있습니다.  

현재는 'Not reachable'임을 볼 수 있습니다.

하단의 'Explanations'을 보면 Security Group 이슈 임을 볼 수 있고,

detail을 누르면 좀 더 자세한 내용을 확인할 수 있습니다.

 

 Detail을 눌러서 확인한 정보입니다. 

Explanations의 표기된 Security Group을 클릭하면 해당 Security Group 편집화면으로 바로 가게 됩니다.  

 

 Security Group을 보면, 22번 포트만 열린 것을 볼 수 있습니다.

테스트로 80을 하고 있기 때문에 포트를 추가합니다.  

 

 정상적으로 포트가 추가된 것을 볼 수 있습니다.  

   

 

  다시 경로 확인을 합니다. 

 

   

  기존에 Not reachable 인 것이, 

 

    Reachable한 경로로 된 것을 확인할 수 있습니다.

Analyysis explorer을 보면 추적한 경로의 리소스를 확인 할 수 있습니다.

 

 

 하지만, 이러한 테스트는 Internet Gateway에서 Instance까지의 경로 체크입니다.

즉 AWS 내부에서의 접근이기 때문에 실제 외부에서의 접근한 것을 테스트 할 수 없습니다.  

이를 좀 더 실제 환경과 근접하게 테스트를 하기 위해서

Source 설정에서 optional이었던, Source IP Address에 실제 외부에서 접근하는 외부 IP를 입력합니다.

2X.XX.XX.18이 현재 외부 IP이기 때문에 새로운 analyze path를 만들고

Source IP Address에 해당 외부 IP를 입력합니다.

 

  그리고, 해당 IP를 허용하지 않기 위해서 Security Group에서 다른 IP만 허용합니다.

 

  Security Group에서 analyze path의 Source IP Address에 입력한 IP를 열어주지 않으면

다음과 같이 Not reachable 상태가 된 것을 볼 수 있습니다.

다시 Security Group을 전체로 열거나 원래 외부 IP로 열면 정상적으로 Reachable로 변경됩니다.

 

 

 

  하지만, 보통 인스턴스가 직접 서비스를 받지는 않고 앞단의 ELB 등을 구성합니다. 

제일 앞에서 본 본 포스팅의 테스트 구성도를 보면,

 

중간에 NLB가 있는 것을 볼 수 있습니다.

하지만, analyze path를 만들 때는 출발지와 목적지만 기입하게 되어 있기 때문에

각 구간별로 리소스를 따로 찍어서 구간 테스트를 사용할 수 있습니다.

하지만, 이렇게 개별 구간 테스트를 하기가 복잡하기 때문에 출발지와 목적지 사이의 있는

경로상의 컴포넌트를 추가해서 경로 테스트가 가능합니다.

 

 

analyze path에서 만약 출발지와 목적지 사이에 추가로 테스트할 경로가 있는 경우에 아래와 같이

multiple reachable path가 있음을 결과에 함께 알려줍니다.

그 옆에 'Analyze path with intermediate component filter'를 클릭하면

 

다시 analyze path를 수행하기 위한 창이 뜨게 되는 데,

여기서 Drop box형태로 중간에 들어간 컴포넌트를 선택할 수 있습니다.

intermediate component를 선택하고 confirm을 누르면,

 

 

다음과 같이 다시 analyze path를 수행하게 되는 것을 볼 수 있습니다.

 

실제 완료된 경로를 보면, 출발지와 목적지가 동일하게 igw와 instance이지만,

NLB가 포함된 전체 경로 체크가 된 것을 볼 수 있습니다.

 

명시적으로 analyze path 메뉴를 눌러서

 

analyze path를 다시 수행할 수 있는 데,

이 때 intermediate componet는 Drop box 형태로 선택되지는 않고, ARN을 직접 입력해줘야 합니다.

이후 Confirm을 누르면 동일하게 Analyze path를 수행합니다.

 

이번 포스팅에서는 AWS의 신규 기능인 Reachability Analyzer를 사용하여, 

외부에서 Instance까지 정상적으로 접근하는 데 문제가 없는지 체크해보는 예시를 살펴보았습니다.

 

여기서 유의할 것은 출발지/목적지 혹은 해당 옵션 값이 추가되는 것에 따라서

모두 개별적으로 analyze path를 만들어주어야 한다는 것입니다.

왜냐하면, 각 analyze path는 1회성이 아니라 기존의 경로 테스트했더 history를 모두 포함하고 있기 때문에

각각의 값이 달라지게 되면 history의 의미가 없어지게 됩니다.

그래서 analyze path를 한 번 만들면 중간에 수정은 불가하며 다시 새로운 값으로 만들어서 수행해야 합니다.