Linuxインフラ実践

DNSの仕組みを完全理解【名前解決の全プロセスを解説】

Linuxインフラ実践
記事内に広告が含まれています。

「example.comにアクセスしたらどうやってIPアドレスがわかるの?」——その答えがDNS(Domain Name System)です。Webサービス運用には欠かせない仕組みを完全解説します。

DNSとは「インターネットの電話帳」

人間が覚えやすいドメイン名(example.com)をコンピューターが使うIPアドレス(93.184.216.34)に変換する仕組みです。この変換を名前解決といいます。

名前解決の流れ

ブラウザで https://example.com を入力したとき

1. ブラウザのキャッシュを確認
2. OSのキャッシュ(/etc/hosts)を確認
3. リゾルバ(プロバイダのDNSサーバー)に問い合わせ
4. リゾルバがルートサーバー → .comサーバー → example.comの
   権威DNSサーバーへと順番に問い合わせ
5. IPアドレスを取得してブラウザに返す
6. そのIPアドレスにHTTPリクエストを送る

主要なDNSレコードの種類

レコード種類役割
Aドメイン → IPv4アドレスexample.com → 93.184.216.34
AAAAドメイン → IPv6アドレスexample.com → 2606:2800::1
CNAMEドメインの別名(エイリアス)www.example.com → example.com
MXメールサーバーの指定mail.example.com
TXTテキスト情報(SPF/DKIMなど)v=spf1 include:…
NS権威DNSサーバーの指定ns1.example.com

Linuxでの名前解決コマンド

# dig:DNS問い合わせの定番コマンド(詳細な情報を得られる)
$ dig example.com
$ dig example.com A        # Aレコードのみ
$ dig example.com MX       # MXレコードを確認
$ dig example.com +short   # IPアドレスのみ表示

# 特定のDNSサーバーに問い合わせ
$ dig @8.8.8.8 example.com  # Googleの公開DNSに問い合わせ

# nslookup:シンプルなDNS問い合わせ
$ nslookup example.com

# host:最もシンプル
$ host example.com

# /etc/hosts:ローカルの名前解決設定
# DNSよりも優先される
$ cat /etc/hosts
127.0.0.1   localhost
192.168.1.10  myserver.local

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

TTLとキャッシュ

DNSレコードにはTTL(Time To Live)という有効期限があります。キャッシュされた情報はTTL秒後に破棄され、次回の問い合わせで最新情報が取得されます。DNSの設定を変更しても反映されるまでにTTL分かかることに注意してください。

# TTLを確認
$ dig example.com | grep "ANSWER SECTION" -A5
example.com.  3600  IN  A  93.184.216.34
#             ↑TTL(秒)= 1時間後にキャッシュが切れる

# ローカルのDNSキャッシュをクリア(Ubuntu)
$ sudo systemd-resolve --flush-caches
$ sudo systemd-resolve --statistics  # キャッシュ状況を確認

まとめ

  • DNSはドメイン名をIPアドレスに変換する「インターネットの電話帳」
  • 名前解決はキャッシュ→/etc/hosts→リゾルバ→権威DNSサーバーの順で行われる
  • 主要なレコード:A(IPv4)、AAAA(IPv6)、CNAME(別名)、MX(メール)、TXT(検証)
  • dig ドメイン名 +short でIPアドレスを素早く確認できる
  • DNSの変更反映にはTTL(有効期限)分の時間がかかる

📋 Phase 3 ネットワーク基礎チートシートで全コマンドをまとめて確認できます。

コメント

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