LoginSignup
5
1

More than 3 years have passed since last update.

GASを利用したWebサーバのグローバルIPアドレスを調べてみたら、訳のわからない事実が判明

Last updated at Posted at 2019-10-10

目的

ただのいたずら心と好奇心です。

やったこと

まずは、GASがGAS自身(という表現が正しいかはわかりませんが)のグローバルIPアドレスを教えてくれるサービスを作りました。

グローバルIPアドレスの取得には、ifconfig.co/jsonを利用しました。
リクエストを投げると、グローバルIPアドレスを返してくれます。
また、プログラムからリクエストを投げるためにはURLFetchApp.fetchメソッドを利用しました。

endpoint.gs
  //ifconfig.co/jsonへリクエストを投げる
  var response = UrlFetchApp.fetch("https://ifconfig.co/json"); 
  //レスポンスを受け取る
  var rawJSON = response.getContentText();
  //受け取ったJSONをパース
  var parsed = JSON.parse(rawJSON);
  //このWebサイトのレスポンス値としてそのまま受け取ったJSONを返す
  return ContentService.createTextOutput(JSON.stringify(parsed)).setMimeType(ContentService.MimeType.JSON);

上記コードを書いた後、Webアプリとして公開します。

返ってきたレスポンス

自分で立てたWebサーバへアクセスしてみたところ
レスポンスが返ってきたので、一部伏せますがこんな感じでした。

{
  "ip":"35.187.XXX.XXX",
  "ip_decimal":599491999,
  "country":"United States",
  "country_eu":false,
  "country_iso":"US",
  "city":"Mountain View",
  "latitude":37.4043,
  "longitude":-122.0748,
  "asn":"AS15169",
  "asn_org":"Google LLC"
}

ここでやめておけばよかったのですが...。
興味本位でもう一度アクセスしてみると、なんとIPアドレスが変わってる!?
ついでに、レスポンスの内容が微妙に違う!
hostnameがついていてどうやらGAE(Google App Engine)上でホストされているらしい。

{
 "ip":"107.178.XXX.XXX",
 "ip_decimal":1806877999,
 "country":"UnitedStates",
 "country_eu":false,
 "country_iso":"US",
 "hostname":"135.194.XXX.XXX.gae.googleusercontent.com",
 "latitude":38.6583,
 "longitude":-77.2481,
 "asn":"AS15169",
 "asn_org":"Google LLC"
}

もう止まりません。
何度も何度もやっていると、時々1つ目の結果のような感じになることもあれば、
2つ目と同じIPアドレスだけどhostnameが微妙に違うとか、わけがわかりません。

{
 "ip":"107.178.XXX.XXX",
 "ip_decimal":1806877999,
 "country":"United States",
 "country_eu":false,
 "country_iso":"US",
 "hostname":"100.194.XXX.XXX.gae.googleusercontent.com",
 "latitude":38.6583,
 "longitude":-77.2481,
 "asn":"AS15169",
 "asn_org":"Google LLC"
}

考察兼まとめ

貧弱な知識で考えましたが、結局まともな考察はできませんでした。
Google Cloud Platformはちょくちょく弄っているのでなんとなくの察しはつきますが、
・CDN的なキャッシュサーバから応答が返ってきていることがある
・私が実際に立てているサービス自体が負荷分散されている
・GASが自体がFunction as a Service的な感じなので、そのときに都合の良いコンピュータ上で処理が行われている

ぐらいしか思いつきませんでしたが、そこそこ楽しかったです。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1