さて、つい最近とあるプロジェクトにて。
「Azureの設定的には、インタフェースには静的なIPを振りますが、OSの設定としてはdhcpを設定します」
と説明したところ
「そんなのあり得ない!」
という反応を受けました。
どうやら「クラウドに中途半端に詳しい人が勘違いしてることあるある」っぽいネタのようですので、解説していきたいと思います。
Azure(やらAWSやら)では基本的にOS設定はDHCP
さて、皆さんはAzure、或いはAWSで新規に仮想マシンを建てる時、OSの中身はほぼデフォルト設定になっているという事は理解されているかと思います。
OSのデフォルト設定は、DHCP設定なのです。
つまり、事実として、OSはDHCP設定のままでいると、AzureなりAWSなりが設定している「ネットワークの設定」が設定される仕組みになっているのです。その際、サブネットマスクだの、デフォルトゲートウェイだの、DNSだのが自動で設定されるのです。
DHCP設定しないとどうなるの?
こまる事だらけです。
特に[VMのクローンを作る]という時に大変困った事になります。
例えばOSの設定として、192.168.0.10というアドレスを設定してしまったとしましょう。すると、そのクローンとして192.168.0.11というIPアドレスを持つクローンを作っても、そのクローンはパケットを受信して来れません。そのクローンの仮想マシンは、自分のIPを192.168.0.10だと思っているからです。
バカハブという言葉を聞いた事がありますか?とにかくネットワークに流れるパケットを、つながっている全てのノードに送信してしまうハブの事です。最近はめったに見なくなりました。ネットワークのキャプチャなどで大変に役に立つものです。
そして、そのバカハブにつないでも、大抵のPCは混乱なく通信をする事が可能です。それは、自分のIPアドレスを知っていて、そのIP以外の通信を受け取らない、という仕組みが出来ているからです。
クラウドの設定と、OSの設定は違うんだよ
「何を当たり前の事を言ってるんだ」と思われるかもですが、これが理解出来ていない人、ホントに多いんですよ。
上記を読めば、まさかの勘違いも解消するかもと思っているのですが、ウチの職場で延々と「わからない」を繰り返している方がいらっしゃったので、改めて執筆してみました。