自由気ままに書いちゃおう

好きなことをつらつらと・・・

DHCPとDNSと予約アドレス(概要)について

AWSではVPCとDHCP設定が紐づいている。(VPCで1つのDHCPセットオプションをリンクさせることができる)

 
また、DHCPの設定にてDNSサーバやNTPサーバが指定されている。
 
デフォルトでは、以下の「DHCPオプションセット」が用意されている。
※GUIの場合には、「VPC」>「DHCPオプションセット」を選択する。
 
DHCPオプションセットの内容を基に、RHEL7系では/etc/resolv.conf が自動的に生成される。
つまり、DHCPオプションを変更し、VPCに紐づけることで任意のDNSサーバを名前解決に使用することができる。
 
 
■デフォルトのDHCPオプションセット内容
# aws ec2 describe-dhcp-options
{
    "DhcpOptions": [
        {
            "DhcpConfigurations": [
                {
                    "Values": [
                        {
                            "Value": "ap-northeast-1.compute.internal"            ※ドメイン名
                        }
                    ],
                    "Key": "domain-name"
                },
                {
                    "Values": [
                        {
                            "Value": "AmazonProvidedDNS"        ※DNSサーバ(VPC内から名前解決を行うときに使用される。
                        }
                    ],
                    "Key": "domain-name-servers"                    
                }
            ],
            "DhcpOptionsId": "dopt-f56fbd92"
        }
    ]
}
 
■{Region}.compute.internal
デフォルトで用意されているドメイン名。このドメイン名は「プライベートDNS」として使用される。
 
 
 
■AmazonProvidedDNS
VPCで用いることのできるDNSサーバ。
デフォルトではVPC内から名前解決を行う時はこのサーバを用いるよう設定されている。
VPCのネットワークアドレス(VPC作成時のアドレス範囲)に2を加えたアドレスがこのサーバのアドレス。
例) VPCアドレス範囲:172.17.0.0/16  ならば、AmazonProvidedDNSは172.17.0.2 となる。
 
つまり、VPCごとに1台のDNSサーバが割り当てられていることになる。
 
■間違いやすいところ1
dhcpサーバは各サブネットに存在する。
このDHCPサーバからEC2のIPアドレスやDNSサーバ情報、NTPサーバ情報が伝達される。
※dhcpオプションがVPCに紐づいているため、間違えやすい。
 
■間違いやすいところ2
VPC内には一つのルータが存在する。
VPCのCIDRアドレスの先頭+2が、DNSサーバとなる。
さらに間違いやすいのが、サブネット単位で予約アドレスが指定されているところ。
サブネットのDNSサーバのアドレスについては仮想的なものと思ったほうが良い。
 
■予約アドレスの整理
予約アドレスは、各サブネット
サブネットの先頭+1    → サブネット(=セグメント)のゲートウェイとして使用される(=VPCのルータの一つのPort的な扱い)。 
                                          また、DHCPサーバとしても動作している(と思われる)
 
サブネットの先頭+2    → DNSサーバへのマッピング用
 
サブネットの先頭+3    → AWSとしての未来用に予約