DNSのまとめメモ
先日、DNSでめっちゃ頭悩まされたので復習とメモがてら
DNS(Domain Name System)
DNSサーバは下記の2種類から構成される
-> ドメインからIPアドレスを調べてくれる(一定期間は、調べた結果をキャッシュしてくれる)
個人のPCにはスタブリゾルバってのがある
Macだと/etc/resolv.confに設定されている
cat /etc/resolv.conf // nameserverがresolver
その中身
whois 8.8.8.8 whois 4.4.4.4
ここで名前解決の流れを整理しとく
ドメインでwebページを見ようとする- > スタブリゾルバがフルリゾルバに問い合わせ
- > フルリゾルバがルートネームサーバに問い合わせる
- > ルートネームサーバが返り値を元に、ネームサーバにipアドレスが取得できまで問い合わせる
- > ipアドレスが取得できたら、webサーバーに問い合わせ
リソースレコード
ドメインとIPアドレスの結びつきのことA
ドメインのIPアドレスdig ドメイン名 a +short
// IPアドレスの持ち主を調べる
whois IPアドレス
NS
ドメインのゾーンを管理するネームサーバ// NSの調べ方
dig ドメイン名 ns +short
MX
ドメインのメール受信サーバ// MXの調べ方
dig ドメイン名 mx +short
googleのメールサーバ
先頭の10とか30はプリファレンス値 といってメールサーバが複数台ある場合の優先度を表す
これでaレコードを調べれば、IPアドレスまで調べられる
MXレコードがない場合は、
AレコードのIPアドレスにメールを送ろうとする
TXT(SPF(Sender Policy Framework))
ドメインのメール送信サーバ用途:メールの送信元が詐称されていないか調べられる
そのドメインで、メール送信が許可されているサーバのリストが書かれている
// SPFの調べ方
dig ドメイン名 txt +short
SOA
ドメインのゾーン管理情報PTR
IPアドレスからドメインを逆びきできる// PTRの調べ方
dig -x IPアドレス +short
CNAME
ドメインの別名のリソースレコードの参照先ドメイン名のCNAMEレコードのドメインのAレコードを探しに行く
これをIPアドレスが見つけられるまで繰り返す、最終的に見つかったものがcanonical name(正式名)
// CNAMEの調べ方
dig ドメイン名前 cname +short
CNAMEで先日ハマったところ
CNAMEを設定すると、他のレコードを設定できない
例えば下みたいなのが無理
waichan.work IN CNAME www.waichan.work waichan.work IN NS hoge.example.com
awsのRoute53ではそもそも設定すら無理
ZONE APEX(サブドメインを含まないドメイン)はCNAMEを使えない
そもそもZONE APEXはNSレコードとSOAレコードがあるから。。。
Route53のAliasレコードならZONE APEXでも設定可能
しかも名前解決が1回で済むという機能も!
こうじゃなく CNAME -> A-> IP
こう Alias -> IP
しっかりawsもだけど、インフラの基本勉強しないと