フラミナル

考え方や調べたことを書き殴ります。IT技術系記事多め

外部IPを持たないインスタンスに対するインターネットからのアクセスについて

GCPにもAWSにも外部IPを持たないインスタンスを作ることができます。

AWSの場合はプライベートサブネットで作成したEC2インスタンスへアクセスをさせるためには、ALBやNLBなどのロードバランサーを使うかプロキシサーバを経由して外部アクセスを許容する方法 が存在しています。

f:id:lirlia:20210922013955p:plain

引用:https://d2908q01vomqb2.cloudfront.net/b6692ea5df920cad691c20319a6fffd7a4a766b8/2020/06/01/EMRAppLoadBalancer1.png

この方法はパブリックサブネットにネットからの通信を経由する何かをつくり、そこを経由してインスタンスにアクセスしているので非常にイメージがつきやすいです。

GCPの場合

一方でGCPの場合は、外部IPを持たないインスタンスにアクセスをする際にLBを経由するのはAWSと同じですが、そのLBがVPCには存在しません。

f:id:lirlia:20210922014800p:plain

公式サイトにもあるように、外部通信を受け付けるためのLBを配置しそれを経由してインスタンスに通信する場合は 二つのグローバルIPをファイヤーウォールに設定する必要 があります。

f:id:lirlia:20210922013200p:plain

外部 HTTP(S) 負荷分散の概要  |  Google Cloud

このことからGCPでは 外部IPを持たないインスタンスに対してグローバルIPの通信が届くこと がわかります。

ん?それって外部IP持ってるってことじゃないの…?と頭がこんがらがってきました。

グローバルIPからの通信が全部とどく?

No です。GCPでは特殊なケースとしてLBの例が存在しています。

GCPでは以下の通信のみを特別に外部IPを持たないインスタンスでも受け入れます。

  • IAP (Identity Aware Proxy)
  • ロードバランサー
  • DNS

詳細はこちら-> ルートの概要  |  VPC  |  Google Cloud

まとめ

まとめると、GCPは外部公開のために特殊なIPに関しては外部IP無しでも通信を受信できます。

ここがAWSとは異なるので理解が難しいところですね。