はじめに
急遽 AWS でインフラを構築しないといけない機会が訪れ、AWSに再入門しました。僕のAWSの経験は初心者向けハンズオンを何個か試した程度だったのでとても浅く、ネットワークの知識も忘れかけていたので、この機会に取り急ぎネットワーク基礎知識を復習から始めました。
その後どうにかAWSでインフラを構築できたので、これからAWSに入門しようとしている方の役に立てばと思い、記事にまとめました。
本記事には AWS に入門する際に必要な最低限のことしか書いてありません。可能ならネットワークについて体系的に勉強してから AWS に入門するのがオススメです。また、僕は AWS の経験も浅いので、場合によってはこの記事に書いていてある知識だけでは足りない可能性もあります。
ネットワーク基礎知識
ネットワークとは、簡単に言うと複数のコンピュータを接続する技術です。複数のコンピュータが接続できるようにするためにルールが定められており、それぞれのルールは プロトコル と呼ばれ、たくさんのプロトコルによってネットワークが成立しています。有名なものだと HTTP(Hypertext Transfer Protocol)
や IP(Internet Protocol)
などがあります。どんなプロトコルがあるのか気になる方は、OSI参照モデル
や TCP/IP
で検索しましょう。
さて、本記事では AWS に入門するための最小限の知識に絞っています。具体的には IPアドレス
とそれに関連する サブネット
についてです。
IPアドレス
IPアドレス は通信の相手先を識別するための番号です。IPアドレスといっても様々な種類があります。IPv4 と IPv6という分け方や、グローバルIPアドレス と プライベートIPアドレスといった分け方があります。それぞれについて簡単に説明します。
IPv4 と IPv6
初めに IPv4 (Internet Protocol version 4) ですが、これは 32bit の値です。種類は約43億個なのですが、それだけでは足りなさそうということで 128bit の IPv6 (Internet Protocol version 6) が生まれました。
IPv4 は 32bit を 4分割して 8bit ずつに分けて表記します。(例: 192.168.1.1
)
グローバルIPアドレス と プライベートIPアドレス(ローカルIPアドレス)
ネットワークには主に グローバルエリアネットワーク (インターネット) と ローカルエリアネットワーク (LAN) の2種類です。グローバルエリアネットワークで試使用される IP アドレスが グローバルIPアドレス、ローカルエリアネットワークで使用される IP アドレスがプライベートIPアドレス(ローカルIPアドレス)となります。
インターネットで使用されるグローバルIPアドレスはICANNという組織によって管理されており、さらにそこから各地域・各国の組織がそれぞれの地域のIPアドレスを管理しています。日本ではJPNICという組織が管理しており、最終的にISP(インターネットサービスプロバイダ)から各家庭・会社にIPアドレスが分配されます。
プライベートIPアドレス(ローカルIPアドレス)は各家庭・会社内のLAN内で使用される IP アドレスです。LAN内の機器がインターネットへの接続を行うためには、プライベートIPアドレスをグローバルIPアドレスに変換する必要があります。変換方法として、NAT や NAPT(IPマスカレード) などがあります。
AWS EC2 のインスタンスのアドレスなど、ローカルなのかグローバルなのか、わからないと接続することができないので、これらの違いを知っておく必要があります。
サブネット
1つのネットワーク内の一部を、部分的なネットワークとして扱うサブネットというものがあります。IPアドレスを「ネットワーク部」と「ホスト部」に分けることで、ネットワーク部が同じものを同じサブネットとして扱うことができます。「ネットワーク部」と「ホスト部」に分ける方法として、クラスフルアドレッシングやCIDRが代表的です。
クラスフルアドレッシングは「クラスA」から「クラスE」のように5種類存在し、それぞれの「ネットワーク部」と「ホスト部」をどのように分けるかが決まっています。一方CIDRは「ネットワーク部」と「ホスト部」をどのように分けるかが決まっていないため、追加で サブネットマスク というもので、どこまでが「ネットワーク部」なのかを示す必要があります。例として、192.168.1.1
のネットワーク部が上位24ビットの場合はサブネットマスクは 255.255.255.0
となります。サブネットマスク込みで IPアドレスを表記する方法として CIDR表記というものがあり、上位24ビットがネットワーク部の場合は 192.168.1.1/24
のように書きます。
AWSを使う上で、CIDR表記がいたるところで出てくるので、覚えておく必要があります。
ドメイン
さいごにドメインについて軽く触れておきます。ここまでIPアドレス関連のことを紹介してきましたが、IPアドレスは数字なのでどのIPアドレスが何を指しているのかわかりにくいです。そこで、それぞれのIPアドレスに紐づけた名前がドメインです。
AWS でもドメインを設定することなどあると思うので、覚えておくとよいでしょう。
おわりに
ここまで説明した知識があれば、AWSに入門することができると思います。僕はこの辺がうろ覚えだったので、AWSで最初にVPCを作る際や、その中でサブネットをどう作ればいいのか、EC2にアクセスするためにはどうすればいいかなどかなり苦戦しました。ですので、AWS に入門しようとしている人のために、前提知識としてこれらのネットワーク知識が必要であることを伝えたいと思いました。AWSは専門用語や様々なサービスの特徴など慣れるまで大変ですが、使いこなすことでインフラを自由自在に構築することができます。(もちろん Google Cloud や Azure も便利だと思いますが、僕はまだ使ったことがないです...)。クラウド時代の今だからこそ、それらを身に着けるためにも基礎となるネットワークはしっかり勉強しておきたいですね!
また気が向いたら、付け焼刃のネットワーク基礎知識で苦戦しながらAWSでインフラを構築した話を記事にまとめたいと思います!