わいの日記

ありがちエンジニアブログ

DNSのまとめメモ

先日、DNSでめっちゃ頭悩まされたので復習とメモがてら


DNS(Domain Name System)

DNSサーバは下記の2種類から構成される

  • ネームサーバー(DNSコンテンツサーバー or 権威DNSサーバー とも呼ばれる)

  -> ドメインIPアドレスを結びつける

  • フルリゾルバ(DNSキャッシュサーバ or フルサービスリゾルバ とも呼ばれる)

  -> ドメインからIPアドレスを調べてくれる(一定期間は、調べた結果をキャッシュしてくれる)


個人のPCにはスタブリゾルバってのがある
Macだと/etc/resolv.confに設定されている

cat  /etc/resolv.conf // nameserverがresolver

その中身
f:id:exhikkii:20181123153234p:plain

それぞれのIPを調べたらGoogleDNSサーバみたい

whois 8.8.8.8
whois 4.4.4.4


ここで名前解決の流れを整理しとく

ドメインでwebページを見ようとする

  • > スタブリゾルバがフルリゾルバに問い合わせ
  • > フルリゾルバがルートネームサーバに問い合わせる
  • > ルートネームサーバが返り値を元に、ネームサーバにipアドレスが取得できまで問い合わせる
  • > ipアドレスが取得できたら、webサーバーに問い合わせ

リソースレコード

ドメインIPアドレスの結びつきのこと

A

ドメインIPアドレス

// ドメインのAレコード(IPアドレス)の調べ方

dig ドメイン名 a +short

// IPアドレスの持ち主を調べる

whois IPアドレス

NS

ドメインのゾーンを管理するネームサーバ

// NSの調べ方

dig ドメイン名 ns +short

MX

ドメインのメール受信サーバ

// MXの調べ方

dig ドメイン名 mx +short

googleのメールサーバ
先頭の10とか30はプリファレンス値 といってメールサーバが複数台ある場合の優先度を表す

f:id:exhikkii:20181123201210p:plain

これで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もだけど、インフラの基本勉強しないと