🌐

VPC DHCP オプションと
カスタム DNS 完全ガイド

EC2インスタンスに「ネットワーク設定」を自動配布する仕組みを理解しよう

💡 まずはイメージをつかもう

🏨 ホテルのチェックインサービス

VPC の DHCP オプション は、 ホテルのチェックイン時に渡される案内情報 のようなものです。


🏨 ホテルにチェックインすると、フロントから以下の情報をもらいますよね:

  • 📶 WiFiパスワード → DNS サーバーのアドレス
  • 🍳 朝食会場の場所 → ドメイン名
  • チェックアウト時間 → NTPサーバー(時刻同期)

EC2インスタンスも起動時に、DHCPオプションから「どのDNSを使うか」「どのドメインに属するか」などの情報を自動的に受け取ります。

🏨

ホテルのチェックイン

案内情報を受け取る

💻

EC2 の起動

DHCP で設定を受け取る

📚 DHCP の基礎知識

🔍 DHCP(Dynamic Host Configuration Protocol)とは?

コンピューターがネットワークに参加する際に、IPアドレスやDNSサーバーなどの設定を 自動的に配布 するプロトコルです。

💡
AWSでのDHCP: VPC内のEC2インスタンスは、起動時にDHCPサーバーから自動的にIPアドレスや各種設定を取得します。この「配布する設定内容」を定義するのが DHCPオプションセット です。
1
EC2 インスタンス起動

インスタンスがVPC内で起動を開始

2
DHCP リクエスト送信

「設定情報をください」とDHCPサーバーに要求

3
DHCP オプション適用

DHCPオプションセットの内容がインスタンスに配布される

4
ネットワーク設定完了

DNS、ドメイン名、NTPなどが自動設定される

⚙️ DHCP オプションの種類

VPCのDHCPオプションセットで設定できる5つのパラメータを見ていきましょう。

domain-name
📛
インスタンスに設定するドメイン名。ホスト名の完全修飾に使用されます。
🏨 「このホテルは○○リゾートグループです」という所属情報
domain-name-servers
🔍
名前解決に使用するDNSサーバーのIPアドレス(最大4つ)。
🏨 「施設の場所を聞くときは、このコンシェルジュに聞いてね」
ntp-servers
時刻同期に使用するNTPサーバーのIPアドレス(最大4つ)。
🏨 「正確な時刻はこの時計を見てね」という基準時計
netbios-name-servers
🖥️
NetBIOS名前解決用のWINSサーバー(Windows環境向け)。
🏨 Windows専用の「別館案内係」
netbios-node-type
🔢
NetBIOS名前解決の方式を指定(1, 2, 4, 8)。通常は2を推奨。
🏨 「案内係への問い合わせ方式」の指定

🔄 デフォルト DNS vs カスタム DNS

🏢 オフィスビルのたとえ

デフォルトDNS(AmazonProvidedDNS) = ビル備え付けの案内板
→ 基本的な場所は分かるが、会社独自の部署名は載っていない


カスタムDNS = 自社専用の受付係を配置
→ 社内の独自ルールや非公開サーバーの場所も案内できる

項目 🏢 デフォルト DNS 🎯 カスタム DNS
提供元 AWS(AmazonProvidedDNS) 自前のDNSサーバー
IPアドレス VPC CIDR + 2
(例: 10.0.0.2)
任意のIPアドレス
Route 53連携 ✅ 自動連携 ⚠️ 設定が必要
社内DNS連携 ❌ 不可 ✅ 可能
ユースケース シンプルな構成 ハイブリッド環境、エンタープライズ
⚠️
注意: カスタムDNSを使う場合、Route 53 プライベートホストゾーンの名前解決には追加設定(Route 53 Resolver)が必要になります。

🏗️ DNS解決の仕組み

📊 デフォルト DNS の動き
💻
EC2 インスタンス
app.internal を解決したい
🔍
AmazonProvidedDNS
VPC CIDR + 2
🗺️
Route 53
Private Hosted Zone
📊 カスタム DNS + Route 53 Resolver の動き
💻
EC2 インスタンス
🏢
カスタムDNS
社内サーバー
🔀
Route 53 Resolver
Inbound Endpoint
🗺️
Route 53

🛠️ カスタム DHCP オプションの作成

AWS CLI でのDHCPオプションセット作成

AWS CLI
# カスタムDHCPオプションセットを作成
aws ec2 create-dhcp-options \
    --dhcp-configurations \
        "Key=domain-name,Values=mycompany.internal" \
        "Key=domain-name-servers,Values=10.0.1.100,10.0.2.100" \
        "Key=ntp-servers,Values=169.254.169.123"

# VPCにDHCPオプションセットを関連付け
aws ec2 associate-dhcp-options \
    --dhcp-options-id dopt-1234567890abcdef0 \
    --vpc-id vpc-0987654321fedcba0
💡
Amazon Time Sync Service: NTPサーバーには 169.254.169.123 を指定すると、AWSのTime Sync Serviceを使用できます。うるう秒にも対応した高精度な時刻同期が可能です。

CloudFormation テンプレート

YAML
AWSTemplateFormatVersion: '2010-09-09'
Description: 'Custom DHCP Options Set'

Resources:
  CustomDHCPOptions:
    Type: AWS::EC2::DHCPOptions
    Properties:
      DomainName: 'mycompany.internal'
      DomainNameServers:
        - '10.0.1.100'
        - '10.0.2.100'
      NtpServers:
        - '169.254.169.123'
      Tags:
        - Key: Name
          Value: 'Custom-DHCP-Options'

  DHCPOptionsAssociation:
    Type: AWS::EC2::VPCDHCPOptionsAssociation
    Properties:
      DhcpOptionsId: !Ref CustomDHCPOptions
      VpcId: !Ref MyVPC

AmazonProvidedDNS との併用

カスタムDNSを使いながらRoute 53も使いたい場合は、DNSサーバーの一つに AmazonProvidedDNS を含めることができます。

AWS CLI
# AmazonProvidedDNS とカスタムDNSの併用
aws ec2 create-dhcp-options \
    --dhcp-configurations \
        "Key=domain-name-servers,Values=AmazonProvidedDNS,10.0.1.100"
⚠️
注意: この設定ではDNSクエリが両方のサーバーに分散されます。一貫した名前解決が必要な場合は、Route 53 Resolver を使用してください。

📋 ユースケース

🏢

ハイブリッドクラウド環境

オンプレミスのActive DirectoryやDNSサーバーと連携。社内ドメインの名前解決をAWSからも可能に。

設定例:
DNS: オンプレミスDNS (192.168.1.10)
Domain: corp.mycompany.com
🔒

セキュリティ要件対応

DNSクエリを監査可能な自前のDNSサーバー経由に統一。DNSログの一元管理を実現。

メリット:
・全DNSクエリの監査
・悪意あるドメインのブロック
🌐

マルチリージョン構成

各リージョンで異なるDNS設定を適用。グローバル展開時の地域固有の名前解決に対応。

活用例:
東京: jp.internal
US: us.internal
⏱️

厳密な時刻同期

金融システムなど、ミリ秒単位の時刻精度が求められる環境でカスタムNTPを指定。

推奨設定:
NTP: 169.254.169.123
(Amazon Time Sync Service)

✅ ベストプラクティス

🔄
冗長化を確保する

DNSサーバーは必ず2台以上指定。異なるAZに配置してSPOFを防止しましょう。

📝
変更は計画的に

DHCPオプションの変更は、既存インスタンスには即座に反映されません。DHCPリース更新または再起動が必要です。

🏷️
命名規則を統一

ドメイン名は組織全体で一貫した命名規則を使用。例: env.region.company.internal

📊
DNSサーバーの監視

カスタムDNSサーバーの可用性とレスポンスタイムを監視。障害時の影響は甚大です。

🔙
ロールバック計画

変更前の設定を記録し、問題発生時はデフォルトDHCPオプションに戻せるようにしておきましょう。

🧪
テスト環境で検証

本番適用前に開発/テスト環境でDNS解決が正常に動作することを確認しましょう。

🔧 トラブルシューティング

よくある問題と解決策

問題: DHCPオプション変更が反映されない

原因: 既存インスタンスはDHCPリース期間中は古い設定を保持
解決策: インスタンスを再起動するか、OS上で sudo dhclient -r && sudo dhclient を実行

問題: カスタムDNSでRoute 53 Private Hosted Zoneが解決できない

原因: カスタムDNSはRoute 53に直接アクセスできない
解決策: Route 53 Resolver Inbound Endpointを作成し、カスタムDNSからフォワード設定

問題: 名前解決が遅い・タイムアウトする

確認ポイント:
・DNSサーバーのセキュリティグループでポート53(UDP/TCP)が許可されているか
・DNSサーバーが正常に稼働しているか
・ネットワークACLでDNSトラフィックがブロックされていないか

診断コマンド
# 現在のDNS設定を確認
cat /etc/resolv.conf

# DNS解決テスト
nslookup myserver.mycompany.internal

# 特定のDNSサーバーを指定してテスト
dig @10.0.1.100 myserver.mycompany.internal

# DHCPリースの更新
sudo dhclient -r && sudo dhclient

❓ よくある質問(FAQ)

Q. DHCPオプションセットは後から変更できますか?
A. 既存のDHCPオプションセット自体は変更できません。新しいDHCPオプションセットを作成し、VPCに関連付けを変更する必要があります。ただし、既存インスタンスへの反映にはDHCPリース更新または再起動が必要です。
Q. AmazonProvidedDNS のIPアドレスは何ですか?
A. VPCのCIDRブロックの「+2」のアドレスです。例えば、VPCが10.0.0.0/16の場合、DNSサーバーは10.0.0.2になります。また、169.254.169.253 でも常にアクセス可能です。
Q. 1つのVPCに複数のDHCPオプションセットを関連付けできますか?
A. いいえ、1つのVPCには1つのDHCPオプションセットのみ関連付け可能です。サブネットごとに異なるDNS設定が必要な場合は、インスタンスのOS上で個別に設定するか、異なるVPCを使用してください。
Q. DHCPオプションを「なし」にするとどうなりますか?
A. VPCのDHCP関連付けを「なし」にすると、インスタンスはDNSサーバーやドメイン名の情報を受け取れなくなります。この状態では名前解決ができないため、通常は推奨されません。
Q. WindowsインスタンスでNetBIOS設定が必要ですか?
A. 最新のWindows環境では通常不要です。Active Directory環境でレガシーアプリケーションがNetBIOSに依存している場合のみ設定を検討してください。設定する場合は netbios-node-type を 2(P-node)にすることを推奨します。

📌 まとめ:DHCP オプションの活用ポイント

🏨
自動配布
EC2起動時に設定を自動適用
🔍
DNS制御
カスタムDNSで社内連携
時刻同期
NTPで正確な時刻を維持
🔄
冗長化
複数サーバーで可用性確保

Created by SSuzuki1063

AWS SAP Learning Resources