読者です 読者をやめる 読者になる 読者になる

しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Windows Azure Web サイトと IP アドレス

今日も Windows Azure Web サイトを使っていて、Web サイト上のサービスから外部の IP アドレスで制限されている API を叩く時、困ったことになりました。*1

調べてもよくわからなかったので、またも Twitter で呟いてみると、河野さんから回答を頂きました。毎度毎度すいません、また帰国された際には一杯奢らせてください。

Web サイトの標準インスタンスを選択している場合、実際にリクエストを処理するワーカーの IP アドレスは「だいたい」変わらないらしいです。だいたいというのがミソですね。

今回は IP アドレスでのアクセス制限がかかっている API を叩きたいので、これだとまだ困った感じです。

そしてフロントエンドの IP アドレスは IP SSL を有効にすれば、課金発生しますが固定になるようです。

ちなみに、ここで指しているフロントエンドとは LB の後ろにいる ARR のことだと思います。大本となる LB の IP アドレス自体は、Web サイトでは A レコードによるドメイン設定が出来るので固定です。

仮想マシンやクラウドサービスでは、インスタンスを完全に停止させない限り VIP は変わらないのですが、Web サイトは LB の後ろに ARR があって、そこからワーカー*2となっているので、IP アドレスが 3 つ関係してくるみたいです。

Web サイトの詳しい仕組みについては、河野さんが Developer Camp 2012 Japan Fall で発表されたスライドを参照するのが超おすすめです。

分からないなりにまとめておくとこんな感じでしょうか。

  1. Azure LB の IP アドレス
    • Web サイトの場合は固定(独自ドメインの為にも)
  2. IIS ARR の IP アドレス
    • IP SSL を有効にすることで固定(実際には同じ IIS ARR が割り当てられるようになる?)
  3. Worker の IP アドレス
    • 標準インスタンスなら「だいたい」同じ
    • fabric がインスタンスを落とす可能性がある = IP アドレスが変化

Web サイトの細かい内部構造に自信が無いので、どこか間違っている気がします。間違いを見つけたら、是非教えてください。

*1:クレームベースの認証とかなら良かったのに

*2:普通のクラウドサービスだったはず