Print
카테고리: [ Amazon Web Services ]
조회수: 6116

1. 개요


특정 AWS Service가 사용중인 IP 대역을 확인해야하는 경우가 있을 수 있다. 예를 들어 특정 서비스(CloudFront, Global Accelerator 등)에 대해서 방화벽을 오픈해야 하지만, domain base로 방화벽을 오픈할 수 없을 때, 각 서비스가 사용하는 IP 대역을 확인해야 한다. 이런 경우에 각 Service가 사용하는 IP 대역을 확인하는 방법을 소개한다.

 

2. AWS IP 대역 확인


AWS에서는 현재 사용중인 IP 대역을 json 형태의 파일로 제공하고 있다.

다음 주소에서 해당 json 파일을 다운로드 받을 수 있다. 이 파일은 비정기적으로 변경될 수 있기 때문에, 만약 파일 변경을 감지해야 한다면 AWS SNS와 연동하여 이메일로 변경 알림을 수신할 수 있다.

https://ip-ranges.amazonaws.com/ip-ranges.json

$ curl -O https://ip-ranges.amazonaws.com/ip-ranges.json
$ head -10 ip-ranges.json 
{
  "syncToken": "1591680792",
  "createDate": "2020-06-09-05-33-12",
  "prefixes": [
    {
      "ip_prefix": "35.180.0.0/16",
      "region": "eu-west-3",
      "service": "AMAZON",
      "network_border_group": "eu-west-3"
    },

json을 확인해보면 위와 같은 형태로 IP 대역이 기록되어 있다.

 

3. JSON 파싱하여 특정 서비스 IP 대역 확인하기


위의 json 파일은 현재 기준 19400 라인으로 되어 있기 때문에, 서비스를 하나하나 찾다보면 사용중인 IP 대역을 찾기 힘들 것이다.

이 때, jq라는 툴을 사용하면 JSON에서 필요한 정보만 필터링하여 확인할 수 있다.

설치 방법은 Mac OS 기준

$ brew install jq

## 특정 리전에 해당하는 IP 대역만 가져오기
$ jq '.prefixes[] | select(.region=="ap-northeast-2")' < ip-ranges.json
{
  "ip_prefix": "52.219.60.0/23",
  "region": "ap-northeast-2",
  "service": "AMAZON",
  "network_border_group": "ap-northeast-2"
}
...(생략)...
{
  "ip_prefix": "3.34.38.0/23",
  "region": "ap-northeast-2",
  "service": "WORKSPACES_GATEWAYS",
  "network_border_group": "ap-northeast-2"
}

## 특정 서비스에 해당하는 IP 대역만 가져오기
$ jq -r '.prefixes[] | select(.service=="CLOUDFRONT") | .ip_prefix' < ip-ranges.json
120.52.22.96/27
205.251.249.0/24
180.163.57.128/26
...(생략)...
52.57.254.0/24
52.78.247.128/26
52.47.139.0/24

 

4. CloudFront의 IP 대역 확인하기


위의 방법으로 JSON을 파싱하여 CloudFront에 대한 IP 대역을 확인할 수 있지만, AWS에서는 친절하게도 CloudFront가 사용중인 IP 대역을 따로 확인할 수 있게 링크를 제공하고 있다. CloudFront의 IP 대역만 필요하다면 아래 링크를 참고하면 된다.

http://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips