AWSで中にサブネットを複数持つVPCのIPについて勘違いしていたので書きます。
サブネットを作成するとCIDRの最初の4つ(正確には3つ?)最後の1つはAWS側で予約されているので
使えないのはAWSを利用している方ならご存知かと思います。
例えば192.168.0.0/24のCIDRのサブネットの場合、
●192.168.0.0はネットワーク全体を表すのでAWSだからとでなく使えません。
●192.168.0.1はAWS側で予約で使えません。
●192.168.0.2はAWS側で予約で使えません。
●192.168.0.3はAWS側で予約で使えません。
●192.168.0.254はAWS側で予約で使えません。
で、実際に使ってみるとどうやら、
●192.168.0.1はゲートウェイIPになっている模様。
●192.168.0.2はDNSになっている模様。
●192.168.0.3は何やってるかわからない。
●192.168.0.254は何やってるかわからない。
一般的にアドレスの一番最初は大抵DNSとかゲートウェイとかDHCPにしている場合が多いので
納得いきます。最後の1つもゲートウェイにしている場合が多いので納得いきます。
で、サブネットを二つ持つVPCでも各サブネットごとにAWSは予約IPが同じようにあります。
公式サイトにも以下のように書いてあります。
Important AWS は、各サブネット CIDR ブロックの最初の 4 つの IP アドレスと最後の IP アドレスの両方を 予約します。これらのアドレスをユーザーが使用することはできません。 たとえば、CIDR ブロック 10.0.0.0/24 を持つサブネットの場合、 IP アドレス 10.0.0.0、10.0.0.1、10.0.0.2、10.0.0.255、 および 10.0.0.3 が予約されます。 http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_Subnets.html
なので、サブネットを2つ持つVPC、例えば、
ゾーンA:192.168.0.0/25
ゾーンB:192.168.0.128/25
の場合は、
ゾーンAは、192.168.0.0,192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.127
ゾーンBは、192.168.0.128,192.168.0.129,192.168.0.130,192.168.0.131,192.168.0.254
はAWS側で予約されていて使えません。実際に使ってみた経験から、
ゾーンAのゲートウェイは192.168.0.1
ゾーンBのゲートウェイは192.168.0.129
になると推測出来き、実際に確認するとその通りになっています。
次にDNSはこれまでの経験から、
ゾーンAのDNSは192.168.0.2
ゾーンBのDNSは192.168.0.130
と推測出来ます。そして実際に確認すると・・・
ゾーンAのDNSは192.168.0.2
ゾーンBのDNSは192.168.0.2
・・・?ゾーンBにいるのにゾーンAのIPのDNSに聞きにいってる。。
ここで以下の疑問がわきます。
●ゾーンBにいるサーバが名前解決するのにゾーンAのDNSに聞きに行くのは距離が離れている分遅くなるのではないか?
●ゾーンAとゾーンBで冗長化している場合はゾーンAが落ちたらゾーンBのサーバも名前解決出来なくなるではないか?
●ゾーンBの192.168.0.130は何やってるの?DNSじゃないの?
色々ドキュメントを漁る。グーグル先生に聞く。自分であれこれコマンド実行で調べる。
・・・をやってみましたがわかりませんでした。
わからないのでAWSサポートに聞きました。で、回答はこんな感じでした。
DNSはVPCのCIDRの2番目のアドレスです。
そうなんですか。各サブネットごとに存在するのかと思っていました。予約されているし。
でもVPCのCIDRの2番目のアドレスのみなら遠回りの問題とDNSが存在するゾーンが拠点障害
起きたらまずいのかと・・・。
それに対して以下の回答が。
DNSサーバーは冗長化されていて 特定のVPC サブネット上に 配置されたものではありません。 Availability Zone で機能します。 DNS の IP アドレスは仮想的なものとご理解下さい。
だそうです。見かけ上は192.168.0.2に対してゾーンBから名前解決しているように見えても
同じゾーン内にあるDNSに問い合わせいってるとの事です。
自分と同じ勘違いをしている人もいるかもしれませんので共有します。
ゾーンAの192.168.0.2とDNSの仮想IPの192.168.0.2でかぶってるけどどう処理してるんだろう?とかゾーンBからの192.168.0.2のパケットはゾーンB内のIPに変換されているのだろうか?
とか、予約されているIPは何に使われているのだろうか?
などは今もわかりませんが。。(最初のIPはほぼほぼゲートウェイとは思います。)