「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.4TTLとキャッシュ
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 ネットワーク基礎チートシートで全コマンドをまとめて確認できます。



コメント