こんにちは、daihaseです。
AWSですが、皆さん活用してますでしょうか? 今回はAWSでVPC領域を作る際の最低限の知識、その際考えるIPアドレス周りのことなどをまとめてみました。
VPCを作成するのにIPアドレスはどういうのにしたら?サブネットってなんだ?てかCIDRっそもそも何?みたいな、AWSを使う上で最低限知っておくべきことをこちらで解消出来ればと。
VPCとは
AWSではAmazon VPC(以下VPC)と呼ばれる領域を作ることで、そこに自分だけの自由なネットワークを作れます。ちなみに契約してる方は知ってると思いますがVPCにはあらかじめdefault VPCという最初から作成済みの領域があります。
そのためインスタンス(EC2)を建てる時は、VPCを自分で作成し選択しない場合このデフォルトのVPC内で起動されることとなります。
サブネットとは
サブネットはVPCを作った後、それをさらにいくつかの細かいネットワークに分割する際に用います。実際この作成したサブネット内にWebサーバー(EC2インスタンス)、DBサーバー等を設置していくことになります。
実際VPCをAWS管理画面上で作成する際にCIDR表記でIPアドレス範囲を指定する必要があるのですが、その際CIDR、IPアドレスの最低限の知識がないと適当に設定してしまいそうですよね!? というわけで次はIPアドレスを見て行きましょう。
IPアドレスとは
全部は書ききれないので最低限だけまとめると、IPアドレスは大きくプライベートIPアドレス、グローバルIPアドレスに分けられます。また単にIPアドレスといっても好きなアドレスを割り当てることが出来るわけではなく、ちゃんとクラス分けというグルーピングが行われています。
プライベートIPアドレス
簡単にいうと社内や自宅でのネットワーク内におけるIPアドレスです。このプライベートIPアドレスはインターネット上では使用できず、この宛先にIPパケットを送ってもルーターは転送せず破棄します。自分のPCに割り当てられてるIPアドレスってなんだ?って時はターミナルで「ifconfig」と叩けばこのプライベートIPを調べることができます。
グローバルIPアドレス
グローバルIPアドレスはインターネット上で一意に割り当てられるIPアドレスのことで、重複することは決してありません。
グローバルIPアドレス、と言われてもピンとこないかもしれませんが、イメージとしては一般家庭に割り振られる電話番号や住所的なものです。そしてインターネットを使用するにはプロバイダーと契約しますよね。そのプロバイダーにこのグローバルIPアドレスが与えられていて、僕達がお家でインターネットをする際はルーターを介しインターネットに接続しており、実はルーターからは各機器(PC等)にそれぞれプライベートIPアドレスを割り当てているんですね。
IPアドレスのクラス
IPアドレスのグルーピングですが、具体的には以下のようになっています。
- クラスA 10.xxx.xxx.xxx (10.0.0.0〜10.255.255.255)
- クラスB 172.xxx.xxx.xxx (172.16.0.0〜172.31.255.255)
- クラスC 192.168.xxx.xxx (192.168.0.0〜192.168.255.255)
それぞれに用途と決まりがあり、クラスAは大規模ネットワーク向けで、最上位ビットが0で始まり残り7ビットはネットワークアドレスを表します。これが使用出来る範囲で、つまり2進数だと「00000000〜011111111」、10進数では「0〜127」になりますね。つまり128個使用出来る!...と思いがちですが、クラスAのネットワークは、0と127は予約されており使用出来ないため、実際は126個(27-1)の中で利用可能ということになります。
続いてクラスBですが、最上位2ビットが10で始まり残り14ビットがネットワークアドレスとなります。同じく2進数で「10000000 00000000〜10111111 11111111」、10進数で「128.0〜191.255」ですね。そしてクラスBも128.0と191.255が予約されているため使用出来ません。そのため16382個(214-2)の中から使用出来るということになりますね。
最後にクラスC、こちらは最上位3ビットが110で始まり残り21ビットがネットワークアドレスとなります。2進数で「11000000 00000000 00000000」~「11011111 11111111 11111111」、10進数では「192.0.0~223.255.255」、これも最初と最後である192.0.0と223.255.255が予約されているため2097150個(221-1)の中から使用出来ますね。
ゴチャゴチャ書いててビットがどうとか10進数だとこうとか、わけがわからない人もいるかもしれませんが、この辺はAWSやネットワークというよりプログラミングを行う上でも基礎的なことの一つなので、もしさっぱりでしたら情報処理に関係する書籍などで勉強しましょう。
こんなに長々と書いたこのクラス分けなんですが、実際は使われないIPアドレスなどが出来てて、現在はこのクラスの考え方を排した「クラスレスアドレッシング」と呼ばれるCIDR(Classless Inter-Dmain Routing)が主流となっています。
そこで出てきましたCIDR...。VPC作成時にはこのCIDR表記による理解がないと正しいIPを割り当て、使用していくことができません。
早速見ていきましょう。
CIDRとは
CIDR(Classless Inter-Domain Routing)、なんて読むか...サイダーです。昔なんて読むかわからなかったのは内緒です。IPアドレスをネットワークアドレス部、ホストアドレス部の2つに分割し、またネットワークアドレスを任意の長さに設定出来きることで、結果無駄を減らせるようになった素晴らしい仕組みなんです。
表記の仕方ですが、IPアドレスを2進数で表した時に「ネットワーク部のビット長」を「/ビット長」で示します。またこのネットワーク部分の長さのことを「プレフィックス」と言います。
終わりに
AWSでちゃんと理解してサブネットやIPアドレスを設定していくのにこうした知識が前提となってきます。せっかくAWSなどを使用していくのならこの辺の基礎知識もちゃんと頭に入った上で使用していくと、今後も色々捗って行くかと思います。
それでは良い開発ライフを〜