JavaScript勉強会

JavaScriptの学習日記

GoogleのIPアドレスを調べる方法

Webサーバーにアクセス制限を設定して、外部からサーバーへの攻撃を防御しています。

利用しているGoogleのサービスからのアクセスは通さないといけないので、GoogleIPアドレスを調べてみました。

Googleのサービスには、どんなIPアドレスが割り当てられているのでしょうか?

 

Google サービス IPアドレス - Google 検索

 

support.google.com

 

f:id:jsstudy:20190209144903p:plain

 

 

DNSで調べる方法

dev.classmethod.jp

 

Googleが使っている公開IPアドレスを取得したいと思います。以下のSPFを見ればOKなようです。

$ dig -t txt _netblocks.google.com

 

410gone.click

 

Googleが利用する公開IPアドレスの範囲は、DNSSPFレコードを調べることで取得できます。 

  1. _spf.google.comドメインSPFレコードを取得する。
  2. 取得したレコードに含まれているドメイン名から、IPアドレス範囲を取得する。

 

digコマンドを使って、_spf.google.comドメインSPFレコードを取得してみます。 

$ dig -t txt _spf.google.com

 

3つのドメイン名が取得できました。

取得できたドメイン名から、IPアドレス範囲を取得します。

 

2. 取得したレコードに含まれているドメイン名から、IPアドレス範囲を取得する

digコマンドでIPアドレス範囲を取得します。

ここで取得できたアドレスがGoogleの公開IPアドレスになります。 

$ dig -t txt _netblocks.google.com
$ dig -t txt _netblocks2.google.com
$ dig -t txt _netblocks3.google.com

 

上記のやり方を真似したら、Googleのサービスで使われているIPアドレスが分かりました。

 

Webサーバー(Linux)にログインして、以下のようなコマンドを入力してみます。

 

$ dig -t txt _netblocks.google.com

;; ANSWER SECTION:
_netblocks.google.com.  3035    IN      TXT     "v=spf1 ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:66.102.0.0/20 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:74.125.0.0/16 ip4:108.177.8.0/21 ip4:173.194.0.0/16 ip4:209.85.128.0/17 ip4:216.58.192.0/19 ip4:216.239.32.0/19 ~all"

 

$ dig -t txt _netblocks2.google.com

;; ANSWER SECTION:
_netblocks2.google.com. 1739    IN      TXT     "v=spf1 ip6:2001:4860:4000::/36 ip6:2404:6800:4000::/36 ip6:2607:f8b0:4000::/36 ip6:2800:3f0:4000::/36 ip6:2a00:1450:4000::/36 ip6:2c0f:fb50:4000::/36 ~all"

 

$ dig -t txt _netblocks3.google.com

;; ANSWER SECTION:
_netblocks3.google.com. 3539    IN      TXT     "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"

 

GoogleIPv4IPv6IPアドレスCIDR表記の一覧として返されました。

これらを1つにまとめると、現時点でのGoogleIPアドレスは以下のようになりました。

 

GoogleIPアドレス(CIDR表記)

ip4:

  • 35.190.247.0/24
  • 35.191.0.0/16
  • 64.233.160.0/19
  • 66.102.0.0/20
  • 66.249.80.0/20
  • 72.14.192.0/18
  • 74.125.0.0/16
  • 108.177.8.0/21
  • 108.177.96.0/19
  • 130.211.0.0/22
  • 172.217.0.0/19
  • 172.217.32.0/20
  • 172.217.128.0/19
  • 172.217.160.0/20
  • 172.217.192.0/19
  • 173.194.0.0/16
  • 209.85.128.0/17
  • 216.58.192.0/19
  • 216.239.32.0/19

 

ip6:

  • 2001:4860:4000::/36
  • 2404:6800:4000::/36
  • 2607:f8b0:4000::/36
  • 2800:3f0:4000::/36
  • 2a00:1450:4000::/36
  • 2c0f:fb50:4000::/36

 

外部には公開されていないIPアドレスも、何かで使われているかもしれないけど、とりあえず、公開されているサービスの部分については、上記の方法で良いでしょうか?

 

Googleはサービスの拡充とともに、使ってるIPアドレスも頻繁に変更するのではないか?と思います。

定期的に検査しておかないと、GoogleIPアドレスリストで過不足が発生するかもしれませんね。

 

(参考)

digコマンドの使い方

qiita.com

 

digとは

domain information groperのこと。

ネームサーバから情報を引き出すツール。

 

centos.bungu-do.jp

 

まずはdigがどこにあるか調べる。

which dig

/usr/bin/dig

 

www.atmarkit.co.jp

 

qiita.com

 

co-akuma.directorz.jp

 

f:id:jsstudy:20190209144320j:plain

 

SPFとは?

SPF - Google 検索

 

ja.wikipedia.org

 

Sender Policy Framework(センダー・ポリシー・フレームワーク)とは、電子メールにおける送信ドメイン認証のひとつ。

差出人のメールアドレスが他のドメイン名になりすまししていないか検出する技術である。

 

www.ipa.go.jp

 

組織で使用している送信用メールサーバを漏れなくリストアップし、その出口のIPアドレスを控えます。

この情報は、SPFレコードをDNSサーバに設定する際に使用します。

 

 

まとめ

DNSって普段意識しないで使っているけど、結構複雑で面倒くさい仕組みのやつですね。(泣)

プログラムを組めば、上記の手順を自動化して、自動的にIPアドレスを取得する方法も用意できそうです。

GoogleIPアドレスでWebサーバーのアクセス制限を設定して、Googleのサービスは利用許可にしてみたいと思います。

 

 

 

DNSがよくわかる教科書

DNSがよくわかる教科書