01
クラウドの中に自分のネットワークを作る:仮想ネットワークとIPアドレス範囲
クラウドのデータセンターでは、たくさんの利用者のサーバーが一緒に動いています。それでも、自分のサーバー同士だけが通信でき、ほかの利用者とは切り離されていなければなりません。そこでクラウドは、利用者ごとに論理的に分けられたネットワークを用意します。これを仮想ネットワークと呼びます。物理的なケーブルやスイッチは共有していますが、アドレスもルートもルールも、利用者ごとに別々です。
仮想ネットワークを作るとき、最初に決めるのは、使うIPアドレスの範囲(アドレス範囲)です。ふつうは、インターネットでは使わないと決められているプライベートアドレスの範囲から選びます。プライベートアドレスは、どの会社や家庭で重ねて使ってもかまわないアドレスなので、そのままではインターネットに出られません(どうやって出るのかは3章で見ます)。
| プライベートアドレスの範囲(RFC 1918) | アドレスの数 | よくある使い道 |
|---|---|---|
| 10.0.0.0/8 | 約1,677万個 | クラウドの仮想ネットワーク、大企業の社内ネットワーク |
| 172.16.0.0/12 | 約105万個 | 社内ネットワーク、コンテナの既定のネットワーク |
| 192.168.0.0/16 | 65,536個 | 家庭用ルーター、小さなオフィス |
CIDR:スラッシュの後ろの数字を読む
IPv4アドレスは32ビットです。10.0.0.0/16は「先頭の16ビット(10.0)は固定し、残りの16ビットをこのネットワークが使う」という意味です。だからアドレスは2^16 = 65,536個になります。/の後ろの数字が大きいほど固定する部分が長くなり、範囲は小さくなります。この書き方をCIDRと呼び、それで表した範囲をCIDRブロックといいます。下の図で、サブネットの大きさを変えてみてください。
- サブネットの大きさ
- /24 · アドレス256個
- 入る数
- 256個
- サーバーに割り当てられるアドレス
- 249個(予約7個)
10.0.0.0/16の範囲(土地)を、同じ大きさのサブネット(区画)に分ける · 黄緑の区画 = 最初のサブネット
/24は、先頭の24ビットがネットワーク、残りの8ビットがアドレスという意味です。1つのサブネットに入るアドレスは2^8 = 256個。サブネットごとに7個が予約されるので、サーバーに割り当てられるアドレスは249個です。/の後ろの数字が1増えるたびに、区画の大きさは半分になり、数は2倍になります。
| プレフィックス | アドレスの数 | /16の中に入る数 |
|---|---|---|
| /16 | 65,536 | 1 |
| /20 | 4,096 | 16 |
| /24 | 256 | 256 |
| /28 | 16 | 4,096 |
仮想ネットワークの範囲は、さらにサブネットに分けます。サブネットは、同じ役割のサーバーをまとめておく区画です。インターネットに見せるWeb層、隠しておくDB層のように役割ごとに分け、サブネットごとに別のルート(2章)やファイアウォール(4章)を設定できます。
サブネットのアドレスは全部は使えない
どのサブネットにも、クラウドがあらかじめ予約しておくアドレスがあります。サブネットの最初のアドレス(ネットワークアドレス)、サブネットの外へ出る出入り口であるゲートウェイ、DNSなどです。いくつ予約するかは、クラウドプロバイダーによって違います。だから/24のサブネットでも、サーバーに割り当てられるアドレスは256個より少し少なくなります。
最初から広めに、重ならないように
アドレス範囲は、作ったあとで変えるのが大変です。サーバーやサービスが増えることを考えて広めに取り、社内ネットワークやほかの仮想ネットワークと重ならないように分けておきます。ここがつまずきやすいところです。社内ネットワークが192.168.0.0/16を使っているのに、クラウドでも同じ範囲を使うと、あとで両方をつなごうとしたとき、どちら側の192.168.1.10なのか区別できず、接続そのものができません(7章)。
問題文にこんな表現があれば → これを選ぶ
- “10.0.0.0/16のネットワークを/24のサブネットに分けると何個”256個
- “/28のサブネットでサーバーに割り当てられるアドレスの数”16 − そのプロバイダーの予約アドレスの数
- “あとで社内ネットワークとつなぐ予定がある”社内ネットワークと重ならない範囲で設計する
- “インターネットでは使わないアドレスの範囲”プライベートアドレスの範囲(10/8、172.16/12、192.168/16)
- “サブネットごとに別のアクセスルールをかけたい”役割(層)ごとにサブネットを分ける
範囲を分けてサブネットを作りました。では、サブネットのサーバーが送ったパケットは、どこへ行けばよいのかをどうやって知るのでしょうか。
02
サブネットとルーティング:パブリックとプライベートを分けるもの
サーバーがパケットを送ると、サブネットに関連付けられたルートテーブルが行き先を決めます。ルートテーブルは「この範囲へ向かうパケットは、あの出入り口へ送る」という行の一覧です。仮想ネットワークには「ネットワーク内のアドレスはネットワーク内で届ける」というデフォルトのルートが最初からあるので、サブネット同士は特に設定しなくても通信できます。
宛先 ネクストホップ(送り先) 10.0.0.0/16 ネットワーク内(ローカル) 172.16.0.0/12 VPN接続 → 社内ネットワーク 0.0.0.0/0 インターネットゲートウェイ
ルートテーブルは、パケットの宛先アドレスに一致する行を探し、その行のネクストホップへ送ります。たとえば、Webサーバーが同じネットワークにあるDBサーバー(10.0.2.15)にパケットを送るとしましょう。10.0.2.15は10.0.0.0/16の中のアドレスなので、1行目に一致します。ところが0.0.0.0/0は「すべてのアドレス」なので、最後の行にも一致します。
このように複数の行が一致するときは、いちばん具体的な行、つまり/の後ろの数字が大きい行が勝ちます。これを最長プレフィックス一致といいます。/16は/0より具体的なので、このパケットはネットワークの中で届けられます。一方、インターネット上のWebサイト(203.0.113.10)は最初の2行には一致せず、0.0.0.0/0だけに一致するので、インターネットゲートウェイへ向かいます。そのため0.0.0.0/0は、ほかのどの行にも一致しないアドレスが最後に行き着く先として、デフォルトルートと呼ばれます。下の図で、宛先とサブネットの種類を変えてみてください。
- 送信元
- Public Subnetのサーバー
- 宛先
- インターネット上のWebサイト(203.0.113.10)
- 結果
- IGW
サーバーが送ったパケットが、標識(Route Table)で道を選ぶ · 黄緑の行 = 勝ったルート、水色の文字 = 一致したけれど負けたルート
203.0.113.10に一致するルートは0.0.0.0/0だけなので、IGWへ向かいます。このとき送信元アドレスは、サーバーのプライベートIP 10.0.1.20ではなく、パブリックIP 198.51.100.20に変わって見えます。プライベートIPはインターネットでは使えないからです。
パブリックサブネットとプライベートサブネット
インターネットへ向かうルート(0.0.0.0/0 → インターネット)があるサブネットをパブリックサブネット、ないサブネットをプライベートサブネットと呼びます。ここがつまずきやすいところです。決めるのはサブネットに付けた名前ではなく、ルートです。また、パブリックサブネットでも、サーバーがインターネットと直接やり取りするには、サーバーにパブリックIPが必要です。プライベートIPしか持たないサーバーは、パブリックサブネットにあってもインターネットからは見つけられません。
よくあるWebサービスは、次のように分けます。
| 層 | 置く場所 | 理由 |
|---|---|---|
| ロードバランサー | パブリックサブネット | インターネットからリクエストを受ける必要がある |
| Web・アプリサーバー | プライベートサブネット | ロードバランサーを通してだけリクエストを受ける |
| データベース | プライベートサブネット | アプリサーバー以外がアクセスする理由がない |
問題文にこんな表現があれば → これを選ぶ
- “サブネットのサーバーにインターネットから直接届かないようにする”プライベートサブネット(インターネットへのルートなし)
- “同じ宛先に一致するルートが2つある”より具体的な(プレフィックスが長い)ルートが勝つ
- “同じネットワークのサブネット同士の通信”デフォルトのローカルルート — 設定は不要
- “DBにインターネットからアクセスできないようにする”プライベートサブネットに置く
- “パブリックサブネットなのに、サーバーがインターネットから見えない”サーバーにパブリックIPがあるか確認
DBやアプリサーバーをプライベートサブネットに隠しました。でも、セキュリティ更新は受け取らなければならないし、クラウドのストレージサービスにも届く必要があります。インターネットへのルートがないのに、どうやって外に出るのでしょうか。
広告
03
プライベートサブネットから外に出る:NATとプライベートエンドポイント
NAT(ネットワークアドレス変換)は、プライベートなサーバーの代わりに外とやり取りします。サーバーがインターネットにパケットを送ると、NATはパケットの送信元アドレスを自分のパブリックIPに変えて送り出します。応答が戻ってくると、誰が送ったリクエストだったかを覚えていて、正しいサーバーに応答を渡します。
- 状況
- サーバー → インターネット(更新を受け取る)
プライベートサブネットのアプリサーバーが外とやり取りする道 · 黄緑 = 出ていくパケット、水色 = 戻ってくるパケット
プライベートサブネットのサーバーにはパブリックIPがないので、自分だけではインターネットに出られません。NATが送信元アドレスを自分のパブリックIPに変えて送り出し、戻ってきた応答を、覚えておいたサーバーに渡します。NAVER CloudのNAT Gatewayは、Purpose(用途)がNAT GatewayのSubnetに作成します。Private SubnetのRoute Tableには、0.0.0.0/0 → NATGWのルートを自分で追加する必要があります。
ポイントは方向です。NATが扱うのは、内側から始まった接続だけです。外から始まった接続は、どのサーバー宛てなのかNATにはわからないので、捨てられます。だから「サーバーは更新を受け取れるようにしたいが、インターネットからは接続されないようにしたい」という問題なら、答えはNATです。インターネットからのリクエストを受け付ける必要があるなら、ロードバランサー(5章)か、サーバーのパブリックIPが必要です。
NATはふつう、クラウドが管理してくれるサービスとして使います。自分のサーバーをNATインスタンスにすることもできますが、そのサーバーが止まるとプライベートサブネット全体が外に出られなくなるので、高可用性も保守も自分で面倒を見ることになります。マネージドNATがどこに置かれるか(1つのゾーンか、リージョン全体か)は、プロバイダーによって違います。
インターネットを通らずにクラウドのサービスへ:プライベートエンドポイント
ストレージ、キュー、鍵管理のようなクラウドのマネージドサービスは、ふつうインターネットに公開されたアドレスを持っています。プライベートなサーバーがそのまま呼び出すと、トラフィックはNATを通ってインターネットに出てから戻ってきます。プライベートエンドポイントを使えば、この道のりがネットワークの中で完結します。方式は2つあります。
| 方式 | 仕組み | 知っておくこと |
|---|---|---|
| ルート方式 | ルートテーブルに「そのサービスの範囲 → エンドポイント」のルートを追加する | サービスの公開アドレスをそのまま使う。対応するサービスは少なく、無料のことが多い |
| インターフェイス方式 | 自分のサブネットに、そのサービス用のプライベートIPを置く | プライベートIPで呼び出す。VPNや専用線でつないだ社内ネットワークからも使える。時間とデータ量で課金 |
問題文にこんな表現があれば → これを選ぶ
- “プライベートなサーバーにパッチは当てたいが、インターネットからは届かないようにする”NAT
- “インターネットを通らずにストレージサービスにアクセスする”プライベートエンドポイント
- “同じクラウドのストレージへの大量転送で、NATの料金が高い”ストレージ用のプライベートエンドポイント
- “社内ネットワークから、プライベートIPでクラウドサービスを呼び出す”インターフェイス方式のエンドポイント
- “プライベートなサーバーがインターネットからのリクエストを受ける必要がある”NATではなくロードバランサー
これでパケットは行き先がわかるようになりました。でも、道があるからといって、誰でも通してよいわけではありません。どのパケットを入れて、どれを止めるかを決める門番が必要です。
Pro限定
ここまでは無料で読めます
残りの5章はPro会員向けです。各章に3D図解と「問題文にこんな表現があれば」の整理が続き、最後の章では実際に解いて確かめられます。
- 042層のファイアウォール(ステートフル・ステートレス)
- 05ロードバランサーとヘルスチェック
- 06DNSとエッジ(CDN・WAF)
- 07ネットワーク同士をつなぐ(ピアリング・VPN・専用線)
- 08つながらないとき
PasslyExam
概念をつかんだら、次は試験形式の問題で確かめましょう
PasslyExamは、各資格の出題範囲に合わせて作成したオリジナルの練習問題・解説・本番形式の模擬試験を提供しています。正解の選択肢がなぜ正しく、似た選択肢がなぜ誤りなのかまで解説します。登録すると毎日無料で練習問題に取り組めます。
この概念が出題される試験
- AIF-C01AWS Certified AI Practitioner
- SAA-C03AWS Certified Solutions Architect - Associate
- CLF-C02AWS Certified Cloud Practitioner
- SOA-C03AWS Certified CloudOps Engineer - Associate
- SAP-C02AWS Certified Solutions Architect - Professional
- AZ-900Microsoft Azure Fundamentals
- AZ-104Microsoft Azure Administrator
- ACEGoogle Cloud Associate Cloud Engineer
- NCA-100NAVER Cloud Platform Certified Associate
- NCP-202NAVER Cloud Platform Certified Professional (Network/Media, Database/Management/Analytics)
- NCP-207NAVER Cloud Platform Certified Professional (Troubleshooting)
- NCP-200NAVER Cloud Platform Certified Professional (Overview, Compute/Storage)