AWSの「DHCPオプションセット」を完全攻略!VPCのネットワークに自分好みのルールを教えよう
こんにちは!クラウドインフラの現場で、日々パケットと格闘しているSREです。
AWSでVPC(仮想プライベートクラウド)を構築し始めたとき、皆さんはこんなことを考えたことはありませんか?
「インスタンスを立てるたびに、DNSサーバーの設定を手動で変えるのは面倒だな…」
「社内の独自ドメインを使って、サーバー同士で名前解決できるようにしたいな…」
実は、それを一発で解決してくれる魔法の杖があるんです。それが「DHCPオプションセット」です。今日は、ネットワーク初心者の方でもスッと頭に入るよう、身近な例えを交えながら解説していきますね。
—
そもそも「DHCP」って何をしているの?
まずは基本から。VPCの中にインスタンス(仮想サーバー)を立てた瞬間、そのインスタンスは「私はネットワークに参加したい!」と声を上げます。
このとき、誰かが「君のIPアドレスはこれだよ」「DNSサーバーはあっちだよ」と教えてあげないと、インスタンスは迷子になってしまいますよね。この「ネットワークの設定情報を教えてくれる係」が DHCPサーバー です。
郵便配達に例えるなら、こんな感じです。
- DHCPサーバー:住所(IPアドレス)や、最寄りの案内所(DNSサーバー)の場所を教えてくれる「役所の窓口」
- DHCPオプションセット:その窓口で渡される「案内パンフレット」
デフォルトのままだと、AWSが用意した標準的なパンフレットが配られます。でも、私たちは「もっとうちの会社専用の情報を載せたい!」ということがありますよね。その時に使うのが、この「DHCPオプションセットのカスタマイズ」というわけです。
—
なぜカスタマイズが必要なの?
例えば、社内にActive Directoryサーバーや、独自のDNSサーバーを立てている場合。インスタンスが外部のDNSしか知らないと、社内のサーバーの名前を解決できず、通信が弾かれてしまいます。
DHCPオプションセットを使えば、VPC内の全インスタンスに対して、「名前解決に困ったら、まずはこのDNSサーバーに聞きに行きなさい!」という強力な指示を、最初から刷り込んでおくことができるんです。
—
DHCPオプションセットで設定できる主な項目
カスタマイズで設定できる主な項目は以下の4つです。
1. domain-name-servers:DNSサーバーのIPアドレス。独自サーバーを指定します。
2. domain-name:ドメイン名(例: corp.example.com)。これを入れておくと、ホスト名だけで通信できるようになります。
3. ntp-servers:時刻同期サーバーの指定。
4. netbios-node-type:古いWindows環境で使われる設定(最近はあまり使いませんが、念のため)。
—
実践:AWS CLIで設定を作ってみよう
設定はマネジメントコンソールでもできますが、SREとしては「コードで管理(IaC)」できるようにコマンド操作を覚えておくと便利です。一歩ずつやってみましょう!
1. DHCPオプションセットを作成する
まずは「オリジナルのパンフレット」を作ります。
# 独自DNSサーバー(10.0.0.5)を指定した設定を作成します
aws ec2 create-dhcp-options \
--dhcp-configuration "Key=domain-name-servers,Values=10.0.0.5" \
--tag-specifications 'ResourceType=dhcp-options,Tags=[{Key=Name,Value=my-custom-dhcp}]'
2. VPCに適用する
作ったパンフレットを、特定のVPCに紐付けます。これを行わないと、設定は適用されません。
# 作成したオプションセットのIDを、対象のVPCにセットします
aws ec2 associate-dhcp-options \
--dhcp-options-id dopt-xxxxxxxxxxxxxxxxx \
--vpc-id vpc-xxxxxxxxxxxxxxxxx
たったこれだけで、そのVPC内で新しく立ち上がるインスタンスは、自動的にあなたの決めた設定で動き出します。なんてスマートなんでしょうか!
—
現場のエンジニアが教える「注意点」
最後に、現場で泣きを見ないためのワンポイントアドバイスです。
- 適用タイミングに注意!
DHCPオプションセットを変更しても、既に動いているインスタンスの設定はすぐには変わりません。インスタンスを再起動するか、OS側でDHCPの再要求(dhclientの再実行など)を行う必要があります。
- DNSサーバーの到達性
せっかくDNSサーバーを指定しても、そのサーバーまでのネットワーク経路(セキュリティグループやルーティング)が繋がっていなければ意味がありません。「設定したのに名前解決できない!」というトラブルの9割はこれです。まずはpingやdigコマンドで、通信経路が確保できているか確認しましょう。
—
まとめ
DHCPオプションセットは、ネットワークという広大な海を渡るインスタンスたちに、正しい航路図を手渡すような役割です。
- DHCPは自動設定の仕組み
- オプションセットは配布する情報のテンプレート
- CLIでサクッと設定して、インフラを自動化しよう!
最初は難しく感じるかもしれませんが、一度やってみると「なるほど、こうやってネットワークは成り立っているのか!」という実感が湧いてくるはずです。ぜひ皆さんのVPCでも試してみてくださいね。
それでは、また次回の記事でお会いしましょう!Happy Clouding!
コメント