⑨ネットワーク基礎

DNSの仕組みを徹底解説【名前解決・Aレコード・CNAME・MX・digコマンドの使い方】

⑨ネットワーク基礎
記事内に広告が含まれています。

「DNSって聞いたことはあるけど仕組みがよくわからない」という方は多いです。この記事ではDNSの名前解決の仕組み、主要なDNSレコードの種類、Linuxでの確認コマンドを実践的に解説します。

DNSとは何か?

DNS(Domain Name System)は、ドメイン名(hobbyshift.com)をIPアドレス(203.0.113.1)に変換する仕組みです。人間が覚えやすい名前と、コンピューターが使うIPアドレスを橋渡しする「電話帳」のようなシステムです。

名前解決の流れ

ブラウザで「https://hobbyshift.com」と入力したとき、裏側では以下の流れでIPアドレスが取得されます。

  1. ブラウザキャッシュ確認:以前に解決済みならキャッシュを使う
  2. OSのhostsファイル確認:/etc/hostsに登録があればそれを使う
  3. リゾルバー(フルサービスリゾルバー)に問い合わせ:プロバイダや8.8.8.8などのDNSサーバー
  4. ルートDNSサーバーへ問い合わせ:「.com」を管理しているDNSサーバーを教えてもらう
  5. TLDサーバーへ問い合わせ:「hobbyshift.com」の権威DNSサーバーを教えてもらう
  6. 権威DNSサーバーへ問い合わせ:hobbyshift.comのAレコード(IPアドレス)を取得
  7. ブラウザにIPアドレスを返す

主要なDNSレコードの種類

レコード種別役割
Aドメイン→IPv4アドレスの変換hobbyshift.com → 203.0.113.1
AAAAドメイン→IPv6アドレスの変換hobbyshift.com → 2001:db8::1
CNAMEドメイン→別ドメインへのエイリアスwww → hobbyshift.com
MXメールサーバーの指定hobbyshift.com → mail.hobbyshift.com
NS権威DNSサーバーの指定hobbyshift.com → ns1.example.com
TXTテキスト情報(SPF・DKIM・ドメイン所有確認など)v=spf1 include:… ~all
PTRIPアドレス→ドメイン名への逆引き203.0.113.1 → hobbyshift.com
SOAゾーンの管理情報(シリアル番号・TTL等)

LinuxでDNSを確認するコマンド

# nslookup:最も基本的なDNS確認ツール
nslookup hobbyshift.com
nslookup hobbyshift.com 8.8.8.8  # DNSサーバーを指定

# dig:詳細な情報が得られる(推奨)
dig hobbyshift.com
dig hobbyshift.com A        # Aレコードのみ
dig hobbyshift.com MX       # MXレコードのみ
dig -x 8.8.8.8              # 逆引き(PTRレコード)
dig hobbyshift.com @8.8.8.8 # DNSサーバーを指定
+shortオプションで結果を簡潔に
dig hobbyshift.com +short

# TTL(キャッシュ有効期限)の確認
dig hobbyshift.com | grep "ANSWER SECTION" -A 5

# /etc/resolv.conf:使用するDNSサーバーの設定
cat /etc/resolv.conf

hostsファイルによるローカルDNS

# /etc/hostsに追記すると、DNSより優先される
sudo nano /etc/hosts

# 追記例
127.0.0.1    myapp.local
192.168.1.10 dev-server.local

# 確認
ping myapp.local  # → 127.0.0.1に到達

開発環境を構築するとき、/etc/hostsにローカルドメインを登録するのは非常に便利です。「http://myapp.local」でアクセスできるようにしておくと、本番環境と同じURLパスでテストができます。ただし本番環境のIPを間違えてhostsに書いてしまうと「なぜかそのサイトにアクセスできない」という混乱が起きるので注意が必要です。

hobbyshift管理人

まとめ

  • DNSはドメイン名をIPアドレスに変換する仕組みで、階層的なサーバーが連携して名前解決を行う
  • AレコードはIPv4、AAAAはIPv6、CNAMEはエイリアス、MXはメールサーバーを指定する
  • digコマンドで詳細なDNS情報を確認でき、@でDNSサーバーを指定できる
  • /etc/hostsに書いたエントリはDNSより優先される(開発環境でよく使う)

コメント

タイトルとURLをコピーしました