インフラ

Route53のヘルスチェッカーのIPを一括抽出する

AWSのRoute53を使ってHTTP(S)によるヘルスチェックする際に、対象ホストがBasic認証とかIP制限してる場合はヘルスチェッカーのIPだけ素通しさせる必要があります。
ヘルスチェックは多数のリージョンに存在するヘルスチェッカーからリクエストが飛んできます。
そのIPを一括で取得する方法について。

ヘルスチェッカーのIP取得については下記ページに記載されています。

Amazon Route 53 サーバーの IP アドレス範囲 - Amazon Route 53
Amazon Route 53 ネームサーバーとヘルスチェッカーで使用する IP アドレス範囲を取得する方法を説明します。

リンクを辿るとAWS関連のIP範囲の一覧が下記URLのJSONで取得できます。

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

中身はこんな感じのオブジェクトが配列で入っています。

    {
      "ip_prefix": "15.177.0.0/18",
      "region": "GLOBAL",
      "service": "ROUTE53_HEALTHCHECKS",
      "network_border_group": "GLOBAL"
    },

"service": "ROUTE53_HEALTHCHECKS"のオブジェクトにあるip_prefixだけを収集する必要があります。
下記のjqコマンドで一発抽出できます。

$ curl https://ip-ranges.amazonaws.com/ip-ranges.json --silent | jq -r '.prefixes[] | sele
ct(.service == "ROUTE53_HEALTHCHECKS")'.ip_prefix
15.177.0.0/18
52.80.197.0/25
52.80.197.128/25
52.80.198.0/25
52.83.34.128/25
52.83.35.0/25
52.83.35.128/25
54.248.220.0/26
54.250.253.192/26
54.251.31.128/26
54.255.254.192/26
54.252.254.192/26
54.252.79.128/26
176.34.159.192/26
54.228.16.0/26
177.71.207.128/26
54.232.40.64/26
107.23.255.0/26
54.243.31.192/26
54.183.255.128/26
54.241.32.64/26
54.244.52.192/26
54.245.168.0/26

CIDRの表記になっていますが、nginxなどではallowディレクティブでそのまま使うことができます。
なお、IPv6が取得したい場合はip_prefixの代わりにipv6_prefixを抽出すればいいようです。

以上。

スポンサーリンク
記事を書いた人

システムえんじにゃー🐈
趣味はエレキギター、自転車など。作曲したい。
World of Warshipsやってます。
記事に関する質問はお気軽にどうぞ。

surface0 (さーふぇす)をフォローする

コメント

タイトルとURLをコピーしました