概要
この記事では、CoreDNSをDockerコンテナ上で起動し、digコマンドで登録されたDNSレコードを確認する方法を紹介します。
ステップ1: CoreDNSの設定ファイルを作成する
まず、CoreDNSの設定ファイル(Corefile
)を作成します。このファイルには、DNSサーバーの設定とホストするレコードが含まれます。以下は基本的な設定例です。
.:1053 {
forward . 8.8.8.8
log
errors
}
example.com:1053 {
hosts {
127.0.0.1 localhost
192.168.1.100 www.example.com
fallthrough
}
log
}
この設定では、example.com
ドメインのDNSクエリを処理し、指定されたIPアドレスにマッピングします。また、すべての他のクエリはGoogleのパブリックDNS(8.8.8.8)にフォワードされます。
ステップ2: DockerコンテナでCoreDNSを起動する
設定ファイルが準備できたら、Dockerコンテナを使用してCoreDNSを起動します。以下のコマンドを実行します。
docker run -d -p 1053:1053/udp -p 1053:1053/tcp -v $(pwd)/Corefile:/Corefile coredns/coredns:latest -conf /Corefile
このコマンドは、ローカルの1053番ポートをコンテナの1053番ポートにマッピングし、設定ファイルをコンテナ内の/Corefile
にマウントします。
ステップ3: DNSレコードの確認
CoreDNSが正常に起動したかを確認するために、DNSクエリを実行して登録したレコードを確認します。以下のコマンドを実行します。
dig @127.0.0.1 -p 1053 www.example.com
このコマンドの出力が以下のようになれば、設定が正しく反映されています。
; <<>> DiG 9.10.6 <<>> @127.0.0.1 -p 1053 www.example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 453
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.example.com. IN A
;; ANSWER SECTION:
www.example.com. 3600 IN A 192.168.1.100
;; Query time: 2 msec
;; SERVER: 127.0.0.1#1053(127.0.0.1)
;; WHEN: Sat Jul 13 15:40:04 JST 2024
;; MSG SIZE rcvd: 75
まとめ
以上の手順で、CoreDNSをDocker上で起動し、基本的なDNSレコードを登録することができました。dig
コマンドを使用することで、特定のポートに対してDNSクエリを送信し、設定を確認することができます。
公式ドキュメント: CoreDNS Documentation