Linux で IPv6 DNS ルックアップを実行する

CompTIABeginner
オンラインで実践に進む

はじめに

この実験では、Linux システムで IPv6 DNS ルックアップを実行および検証するための必須スキルを習得します。現代のネットワークにおいて不可欠な機能である、Linux システムがドメイン名を IPv6 アドレスに解決する方法を探求します。この実践的な経験を通じて、標準的なコマンドラインユーティリティを使用して IPv6 アドレスレコードを照会し、ネットワーク接続をテストする方法を学びます。

まず、/etc/resolv.conf ファイルを調べて、設定されている DNS サーバーを特定します。次に、強力なツールである dignslookup を使用して、ドメイン名を IPv6 アドレスにマッピングする AAAA レコードを specifically 照会します。最後に、ping6 コマンドを使用して、システムが IPv6 アドレスを使用してターゲットへの直接接続を確立できることを確認し、解決と接続の完全なサイクルを完了します。

/etc/resolv.conf で DNS サーバー構成を検査する

このステップでは、Ubuntu システム上の DNS サーバーの設定を見つけて確認します。これは、IPv6 を含むすべてのネットワーク通信に不可欠な、システムがドメイン名を IP アドレスに解決する方法を理解するための基本的なステップです。

Linux における DNS 解決の主要な設定ファイルは /etc/resolv.conf です。このファイルには、システムが問い合わせるネームサーバーの IP アドレスがリストされています。

まず、このファイルのコンテンツを表示しましょう。すでに開かれており ~/project ディレクトリにあるターミナルで、次のコマンドを実行します。

cat /etc/resolv.conf

このコマンドは、/etc/resolv.conf ファイルを読み込み、そのコンテンツをターミナルに直接表示します。

nameserver で始まる 1 つ以上の行が表示されるはずです。これらのエントリが DNS サーバーを定義します。アドレスは IPv4(例:8.8.8.8)または IPv6(例:2001:4860:4860::8888)のいずれかです。これらのサーバーを特定することは、DNS 関連の問題を診断する最初のステップです。

出力例:

## Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
##     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
## 127.0.0.53 is the systemd-resolved stub resolver.
## run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.53
options timeout:2 attempts:3 rotate single-request-reopen

上記の例では、システムは 127.0.0.53 の systemd-resolved スタブリゾルバーを使用するように設定されています。これは、実際の DNS サーバーにリクエストを転送するローカル DNS リゾルバーです。実際のネームサーバーの詳細を確認するには、systemd-resolve --status を実行できます。システムが IPv6 DNS 用に設定されている場合、ここには IPv6 フォーマットのアドレスが表示されます。

このステップを完了することで、システムが名前解決に依存している DNS サーバーを見つける方法がわかりました。次のステップでは、コマンドラインツールを使用して、これらのサーバーのいずれかに IPv6 アドレスレコードを積極的に照会します。

dig で IPv6 AAAA レコードを照会する

このステップでは、dig コマンドラインツールを使用して、DNS サーバーに特定の IPv6 アドレスレコードを照会します。A レコードはドメイン名を IPv4 アドレスにマッピングしますが、AAAA レコード(または「クアッドエー」レコード)はドメイン名を IPv6 アドレスにマッピングします。

dig(domain information groper)ユーティリティは、DNS サーバーを問い合わせるための強力で柔軟なツールです。これは dnsutils パッケージの一部であり、デフォルトではインストールされていない場合があります。

まず、dig がシステムで利用可能であることを確認しましょう。次のコマンドを実行して、パッケージリストを更新し、dnsutils をインストールします。

sudo apt-get update
sudo apt-get install -y dnsutils

dig がインストールされたので、IPv6 対応であることがわかっているドメイン(例:ipv6.google.com)の AAAA レコードを検索するために使用できます。

ターミナルで次のコマンドを実行します。

dig AAAA ipv6.google.com

このコマンドは、ipv6.google.com ドメインの AAAA タイプレコードを検索するように dig に指示します。

出力を見てみましょう。いくつかのセクションに分かれていますが、私たちにとって最も重要なのは ANSWER SECTION です。

出力例:

; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> AAAA ipv6.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35612
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;ipv6.google.com.  IN AAAA

;; ANSWER SECTION:
ipv6.google.com.        10      IN      CNAME   ipv6.l.google.com.
ipv6.l.google.com.      10      IN      AAAA    2607:f8b0:4005:814::200e

;; Query time: 148 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Thu Jul 17 10:56:59 CST 2025
;; MSG SIZE  rcvd: 93

ANSWER SECTION では、ipv6.google.com が最初に ipv6.l.google.com を指す CNAME レコードに解決され、次に IPv6 アドレス(例:2607:f8b0:4005:814::200e)に解決されることがわかります。CNAME レコードと AAAA レコードの両方が存在することは、ipv6.google.com が IPv6 アドレスを持っており、システムがそれを正常に解決できたことを確認します。

これで、dig を使用して特定の IPv6 DNS ルックアップを実行することに成功しました。次のステップでは、別の一般的なユーティリティである nslookup を使用して同じことを行う方法を学びます。

nslookup を使用して AAAA レコードを検索する

このステップでは、別の一般的なユーティリティである nslookup を使用して、AAAA レコードを照会する同じタスクを実行する方法を学びます。dig は詳細な出力のためシステム管理者によく好まれますが、nslookup も広く利用可能で、簡単な検索に役立ちます。

nslookup(name server lookup)ツールも dnsutils パッケージの一部であり、前のステップでインストールしたため、新しいものをインストールする必要はありません。

nslookup に特定のタイプのレコードを検索させるには、-query= オプションを使用します。今回は別の IPv6 対応ドメインである facebook.com を使用して、AAAA レコードを検索します。

ターミナルで次のコマンドを実行します。

nslookup -query=AAAA facebook.com

このコマンドは、デフォルトの DNS サーバーから facebook.comAAAA レコードを具体的に要求するように nslookup に指示します。

nslookup の出力は、通常 dig よりも簡潔です。「Non-authoritative answer」セクションを探してください。

出力例:

Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   facebook.com
Address: 2a03:2880:f131:83:face:b00c:0:25de

出力には、「Non-authoritative answer」セクションの下に facebook.com に関連付けられた IPv6 アドレスが明確に表示されています。「Non-authoritative」という用語は、単にその回答がドメインの最終的な権威ではない DNS サーバーから提供されたことを意味し、これは再帰的な DNS クエリでは一般的です。

これで、dignslookup の 2 つの異なるツールを使用して、ドメイン名を IPv6 アドレスに解決することに成功しました。最後のステップでは、解決されたドメインのいずれかを使用して実際のネットワーク接続をテストします。

ping6 で IPv6 接続性をテストする

この最後のステップでは、DNS 解決とネットワーク テストを組み合わせて、エンドツーエンドの IPv6 接続を検証します。前のステップでドメイン名を IPv6 アドレスに正常に解決した後、システムが実際にネットワーク経由でそのアドレスと通信できるかどうかを確認する必要があります。

これを行うには、ping6 コマンドを使用します。このユーティリティは、おなじみの ping コマンドの IPv6 版であり、ターゲット ホストに ICMPv6 エコー要求パケットを送信してネットワーク到達可能性をテストするために使用されます。

ping6 にドメイン名を提供すると、次の 2 つのアクションが実行されます。

  1. まず、AAAA レコードを照会してドメイン名を IPv6 アドレスに解決します。
  2. 次に、解決された IPv6 アドレスに ping パケットを送信します。

ipv6.google.com への接続をテストしましょう。-c 4 オプションを使用して 4 つのパケットのみを送信して停止します。それ以外の場合、ping は無期限に実行されます。

ターミナルで次のコマンドを実行します。

ping6 -c 4 ipv6.google.com

出力を観察します。システムがインターネットへの動作する IPv6 接続を持っている場合、成功した応答が表示されます。

成功した出力の例:

PING ipv6.google.com(prg03s07-in-x0e.1e100.net (2a00:1450:4001:82e::200e)) 56 data bytes
64 bytes from prg03s07-in-x0e.1e100.net (2a00:1450:4001:82e::200e): icmp_seq=1 ttl=118 time=1.23 ms
64 bytes from prg03s07-in-x0e.1e100.net (2a00:1450:4001:82e::200e): icmp_seq=2 ttl=118 time=1.30 ms
64 bytes from prg03s07-in-x0e.1e100.net (2a00:1450:4001:82e::200e): icmp_seq=3 ttl=118 time=1.25 ms
64 bytes from prg03s07-in-x0e.1e100.net (2a00:1450:4001:82e::200e): icmp_seq=4 ttl=118 time=1.28 ms

--- ipv6.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 1.230/1.265/1.300/0.027 ms

ほとんどの実験環境での期待される出力:

ping6: connect: Network is unreachable

重要事項: LabEx VM では、IPv6 アドレスに ping しようとすると、「Network is unreachable」が表示される可能性が高いです。これは、実験環境が IPv6 アドレスを解決できるものの、パブリック インターネットへの IPv6 ルートを持っていないためです。この一般的なシナリオは「IPv6 ギャップ」として知られており、正常な DNS 解決と実際のネットワーク接続との間の重要な違いを示しています。前のステップで DNS 解決が機能したのにここで接続が失敗するという事実は、実際の IPv6 接続を確立できない場合でも、システムが IPv6 アドレスを正しく照会および受信できることを示しています。

おめでとうございます!この実験は完了しました。ローカル DNS 設定の確認方法、dig および nslookup を使用した IPv6 AAAA レコードの照会方法、ping6 を使用した IPv6 接続のテスト方法を学びました。

まとめ

この実験では、Linux 環境で IPv6 DNS ルックアップを実行するための基本的な手順を学びました。まず /etc/resolv.conf ファイルを調べて、システムが使用するように構成されている DNS サーバーを特定しました。次に、2 つの重要なコマンドラインユーティリティである dignslookup を使用して、IPv6 AAAA レコードを具体的に照会し、ドメイン名を対応する IPv6 アドレスに正常に解決しました。

最後に、ping6 コマンドを使用して IPv6 接続をテストし、DNS 解決と実際のネットワーク接続との重要な違いを示しました。実験環境は IPv6 アドレスを正常に解決できますが、パブリック インターネットへの IPv6 ルーティングが欠けているため、「Network is unreachable」エラーが発生します。これらの手順を完了することで、Linux での IPv6 名前解決の管理とトラブルシューティングのためのコアツールと概念に関する実践的な経験を積み、正常な DNS クエリと実際のネットワーク接続の違いを理解しました。