본문 바로가기

AWS/내맘대로 AWS cmdlet

#2 (Get-AWSIpRanges) AWS의 IP 대역을 확인해 보자

제목에 Cmdlet 간략한 설명을 같이 쓰려니 길어지네요. 만들기도 거시기한 내용입니다만, 세줄 라인을 쳐야 하는 것을 줄로 줄여주는 것만으로 만족하는 빅두입니다. ㅋㅋㅋ

 

먼저 AWS 페이지에서 제공하는 AWS IP Address Ranges 페이지를 살펴보시죠

AWS IP Address Ranges : http://docs.aws.amazon.com/ko_kr/general/latest/gr/aws-ip-ranges.html

 



 

여러가지 설명이 있습니다만, 한마디로 줄이면 "AWS에서 사용하는 ip-ranges 담고있는 .json 파일을 제공한다" 것입니다. 그럼 우리는 ip-ranges.json 파일을 다운로드 받아서 Powershell에서 불러와서 Powershell에서 있는 Object형식으로 Convert해서 Filter 적용해 봐야 그제서야 ip-ranges 있습니다.

 

쓰고나니 3~4줄정도의 cmdlet 쓰면 되겠네요. 먼저 ip-ranges.json 파일을 다운로드 받아 Powershell 불러오는 방법을 생각해 봅시다. Linux 사용하시는 분들은 curl 이라는 간단한 명령어를 생각하실 텐데요. 당연히 Powershell에도 해당 기능의 cmdlet 있습니다. 놀랍지 않습니까?

그럼 확인해 봅시다.



 

 

 

역시 Powershell답게 Output Object형식으로 생성되네요. 우리가 원하는 정보는 누가 봐도 json 형식인 Content겠네요. 그럼 명령을 변수에 담고, Content 값만 출력 받아 json형식을 Object형식으로 convert 봅시다.


PS> $IP_ranges_url = Invoke-WebRequest https://ip-ranges.amazonaws.com/ip-ranges.json

PS> $IP_ranges_url.content | ConvertFrom-Json


 


 

Convert 내용을 보니 Prefixes 정보가 우리가 알고 싶어하는 정보인 같네요. 그럼 변수에 다시 저장하여 Prefixes 값을 출력해 봅시다.


PS> $IP_ranges_json = $IP_ranges_url.content | ConvertFrom-Json

PS> $IP_ranges_json.prefixes


 


 

어마어마하게 나오네요. Count함수로 확인해 보니 542 ip-ranges 확인됩니다. 그럼 이쯤에서 AWS 문서를 다시 확인해 보겠습니다. 저희가 확인해 내용은 다음 내용입니다.

 

 

결과값에서 우리가 filter 적용할 있는 부분들에 대한 내용인데요. Ip_prefix 대략적인 IP대역을 찾을 있을것 같고, Region Service 대한 내용들은 지정하여 확인해 보실 있겠습니다. 그런데 EC2, CloudFront, Route53, 이외의 서비스들은 정확하게 ip_prefix 가지고 있지 않아 보이네요? AMAZON이라는 이름 아래에 공통으로 쓰는 처럼 보입니다. 제가 느끼기에는 AWS에서 Managed 해주는 서비스들은 전부 AMAZON이라는 Service 묶어둔 같습니다.

 

위에서 정의한 내용들을 조금 편하게 사용하기 위하여 Get-AWSIpRanges.ps1 만들어 보았습니다. 개인적으로 쓰려고 만든거라 서명되지 않은 script 입니다. Powershell 설명 그대로 작성해 보겠습니다.

 

 

이름

    Get-AWSIpRanges

   

개요

    AWS에서 제공하는 ip-ranges.json 파일을 불러와서 입력받은 값으로 필터링하여 CIDR block을 출력한다.

   

   

구문

    Get-AWSIpRanges [-All] <CommonParameters>

 

    Get-AWSIpRanges [-Regions <Striong[]>] [-Services <Striong[]>] <CommonParameters>

 

    Get-AWSIpRanges [-Likeip <Striong>] <CommonParameters>

 

    Get-AWSIpRanges [-Rangeip <Striong>] <CommonParameters>

   

   

설명

    AWS에서 제공하는 ip-ranges.json 파일을 불러와서 입력받은 값으로 필터링하여 CIDR block을 출력한다.

   

 

매개 변수

    -All [<SwitchParameter>]

        설명.

       

    -Regions <String[]>

        설명.

Valid values: ap-northeast-1 | ap-southeast-1 | ap-southeast-2 | cn-north-1 | eu-central-1 | eu-west-1 | sa-east-1 | us-east-1 | us-gov-west-1 | us-west-1 | us-west-2 | GLOBAL

       

    -Services <String[]>

        설명.

Valid values: AMAZON | EC2 | CLOUDFRONT | ROUTE53 | ROUTE53_HEALTHCHECKS

       

    -Likeip <String>

        설명.

       

    -Rangeip <String>

        설명.

       

    <CommonParameters>

        이 cmdlet은 Verbose, Debug, ErrorAction, ErrorVariable,

        WarningAction, WarningVariable, OutBuffer, PipelineVariable 및

        OutVariable과 같은 일반 매개 변수를 지원합니다. 자세한 내용은

        about_CommonParameters(http://go.microsoft.com/fwlink/?LinkID=113216)를 참조하십시오.

   

    -------------------------- EXAMPLE 1 --------------------------

   

    PS C:\>Get-AWSIpRanges

   

    AWS에서 제공하는 ip-ranges를 전부 보여줍니다.

   

   

    -------------------------- EXAMPLE 2 --------------------------

   

    PS C:\>Get-AWSIpRanges -All

   

    EXAMPLE 1과 같이 AWS에서 제공하는 ip-ranges를 전부 보여줍니다.

   

   

    -------------------------- EXAMPLE 3 --------------------------

   

    PS C:\>Get-AWSIpRanges -Regions ap-northeast-1

   

    지정한 Region에 해당하는 ip-ranges를 보여줍니다.

    사용 가능한 값: ap-northeast-1 | ap-southeast-1 | ap-southeast-2 | cn-north-1 | eu-central-1 | eu-west-1 |

    sa-east-1 | us-east-1 | us-gov-west-1 | us-west-1 | us-west-2 | GLOBAL

   

   

    -------------------------- EXAMPLE 4 --------------------------

   

    PS C:\>Get-AWSIpRanges -Services EC2

   

    지정한 Services에 해당하는 ip-ranges를 보여줍니다.

    사용 가능한 값: AMAZON | EC2 | CLOUDFRONT | ROUTE53 | ROUTE53_HEALTHCHECKS

   

   

    -------------------------- EXAMPLE 5 --------------------------

   

    PS C:\>Get-AWSIpRanges -Regions ap-northeast-1 -Services EC2

   

    지정한 Region과 Services에 해당하는 ip-ranges를 보여줍니다.

   

   

    -------------------------- EXAMPLE 6 --------------------------

   

    PS C:\>Get-AWSIpRanges -Likeip "54."

   

    입력한 문자열 값을 포함하는 ip-ranges를 보여줍니다. 입력한 문자열이 중간에 위치하면 찾지 못합니다.

    위의 입력 결과는 내부적으로 "54.*" 으로 입력됩니다.

   

   

    -------------------------- EXAMPLE 7 --------------------------

   

    PS C:\>Get-AWSIpRanges -Rangeip 54.240.250.229

   

    입력한 IP를 포함하는 ip-Range를 보여줍니다.

 

    ip_prefix       region    service

    ---------       ------    -------

    54.240.248.0/21 us-west-2 AMAZON

 

 

파일 첨부해 드리겠습니다. (원활한 다운로드를 위해 압축하였습니다.) 앞으로 어떻게 공유해야할지가 고민이네요...


첨부파일 : 


Get-AWSIpRanges.zip



'AWS > 내맘대로 AWS cmdlet' 카테고리의 다른 글

#1 [서론] 이 게시판은 뭔가요?  (0) 2016.01.25