名前解決ができなくなった?

概要

会社の内部で使用しているキャッシュサーバが名前解決ができなくなってしまった. 管理者に問い合わせたところ,権威サーバでKSKロールオーバーを行ったという話を聞くことができた. キャッシュサーバでDNSSECの検証をして名前解決をできるようにトラブルシューティングしてほしい.

image.png.webp

前提条件

  • $ dig @192.168.2.131 pc1.ictsc.net で名前解決ができない
  • 権威サーバーを使っているキャッシュサーバーは一つしかない

初期状態

クライアントから dig @192.168.2.131 pc1.ictsc.net +dnssec を実行しても,名前解決ができない.

終了状態

クライアントから dig @192.168.2.131 pc1.ictsc.net +dnssec を実行して,dnssecの検証が成功して名前解決ができる.

解説

この問題は権威サーバで使用している署名の期限が切れてしまったことにより,DNSSECの検証が成功しなくなった問題でした.
解き方としては,権威サーバで再署名を行いキャッシュサーバでトラストアンカーの更新を行うことでDNSSECの検証が成功するようになります.

今回の解放例の一つを示します.
まず、クライアントから権威サーバで名前解決をできるかを確認します。

$ dig @192.168.2.20 pc1.ictsc.net

; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8 <<>> @192.168.2.20 pc1.ictsc.net
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49438
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: fb2922914c429f5fa65713d2603b3d6486e5d706011553e6 (good)
;; QUESTION SECTION:
;pc1.ictsc.net.                 IN      A

;; ANSWER SECTION:
pc1.ictsc.net.          86400   IN      A       192.168.2.151

;; AUTHORITY SECTION:
ictsc.net.              86400   IN      NS      master-ns.ictsc.net.

;; ADDITIONAL SECTION:
master-ns.ictsc.net.    86400   IN      A       192.168.2.20

;; Query time: 1 msec
;; SERVER: 192.168.2.20#53(192.168.2.20)
;; WHEN: Sun Feb 28 15:51:16 JST 2021
;; MSG SIZE  rcvd: 126

次に,キャッシュサーバで名前解決ができるかを確認します.

$ dig @192.168.2.131 pc1.ictsc.net +dnssec

; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8 <<>> @192.168.2.131 pc1.ictsc.net +dnssec
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 27168
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 956
; COOKIE: 6fbba7982beede01a541f72f603b3d788b89e7b7d3c4fbc1 (good)
;; QUESTION SECTION:
;pc1.ictsc.net.                 IN      A

;; Query time: 3 msec
;; SERVER: 192.168.2.131#53(192.168.2.131)
;; WHEN: Sun Feb 28 15:51:36 JST 2021
;; MSG SIZE  rcvd: 70

キャッシュサーバで名前解決ができないことがわかったので、コマンド引数に+cd を追加してDNSSECの検証をせずに名前解決を行います。
名前解決が成功するため,DNSSECの検証に失敗していることがわかります。

$ dig @192.168.2.131 pc1.ictsc.net +cd

; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8 <<>> @192.168.2.131 pc1.ictsc.net +cd
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25924
;; flags: qr rd ra cd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 956
; COOKIE: 67453de86c9abd57bee0655c603b3d852c5c6647f116587d (good)
;; QUESTION SECTION:
;pc1.ictsc.net.                 IN      A

;; ANSWER SECTION:
pc1.ictsc.net.          86329   IN      A       192.168.2.151

;; AUTHORITY SECTION:
ictsc.net.              86338   IN      NS      master-ns.ictsc.net.

;; Query time: 0 msec
;; SERVER: 192.168.2.131#53(192.168.2.131)
;; WHEN: Sun Feb 28 15:51:49 JST 2021
;; MSG SIZE  rcvd: 110

クライアントから署名の有効期限を確認します.
2月10日に署名の有効期限が切れていることが確認できます.

$ dig @192.168.2.20 pc1.ictsc.net +dnssec 

pc1.ictsc.net 86400 IN RRSIG A 8 3 86400 20210210004000 20210111004000 ...

権威サーバで新しいKSK鍵のみを用いて、ゾーンに再署名を行います.

$ sudo su
$ cd /var/named
$ vim ictsc.net.zone

$TTL 1D                                     ;

@         IN  SOA  master-ns.ictsc.net.  root.master-ns.ictsc.net. (  ;
                   2020123101             ;
                   3H                     ;
                   1H                     ;
                   1W                     ;
                   1H )                   ;

          IN  NS   master-ns.ictsc.net.  ;

cache-ns  IN  A    192.168.2.131         ;
master-ns IN  A    192.168.2.20         ;
pc1       IN  A    192.168.2.151         ;
pc2       IN  A    192.168.2.152         ;
pc3       IN  A    192.168.2.153         ;

$INCLUDE "Kictsc.net.+008+63885.key"
$INCLUDE "Kictsc.net.+008+63439.key"
$INCLUDE "Kictsc.net.+008+63829.key" # 古いksk鍵を削除

$ dnssec-signzone -x -o ictsc.net -k Kictsc.net.+008+63439.key ictsc.net.zone

Verifying the zone using the following algorithms: RSASHA256.
Zone fully signed:
Algorithm: RSASHA256: KSKs: 1 active, 0 stand-by, 0 revoked
                      ZSKs: 1 active, 0 present, 0 revoked
ictsc.net.zone.signed

ゾーンのリロードを行います.

 rndc reload ictsc.net

クライアント側でKSK公開鍵を取得し,古いトラストアンカーを削除し新しいトラストアンカーの設定を行います.

$ dig @192.168.2.20 ictsc.net dnskey | grep 'DNSKEY.*257' 
ictsc.net.              86400   IN      DNSKEY  257 3 8 AwEAAePGnJDVqiEhjCRcnYYNP+Pf2DFnJwoj3sTlJwkh2aM1LZR4ajtR sxidDJi59Hf/lcwCBiEnW8eNvpuHz5NfrUTuc/hI/jKI38VkH4m+b68B feNyJtS9IUn8Naln/9r4hQBFCCEHJNmiMo5XnKdD3oEuDSgIsCeP8IOJ c1tlEcimy
fBfijuQleTr7MyoxW3iK0Q7kUuy8kIGelWKMogbUwrFFeBV CNvIAiofQOy7UDkjuGe9UpEXozZ5LNQkrBONzkUvr8Dt3YlhhWWYAjbX W5WzrLiQS9PTr3HMRlOOvTk4XlxQu0LDyqalyuBQnvMMg0AleQ7Q5c+M LU3l96yAg50=

$ sudo vim /var/named/chroot/etc/named.conf
trusted-keys {

        "ictsc.net."  257 3 8 "AwEAAePGnJDVqiEhjCRcnYYNP+Pf2DFnJwoj3sTlJwkh2aM1LZR4ajtR sxidDJi59Hf/lcwCBiEnW8eNvpuHz5NfrUTuc/hI/jKI38VkH4m+b68B feNyJtS9IUn8Naln/9r4hQBFCCEHJNmiMo5XnKdD3oEuDSgIsCeP8IOJ c1tlEcimyfBfijuQleTr7MyoxW3iK0Q7kU
uy8kIGelWKMogbUwrFFeBV CNvIAiofQOy7UDkjuGe9UpEXozZ5LNQkrBONzkUvr8Dt3YlhhWWYAjbX W5WzrLiQS9PTr3HMRlOOvTk4XlxQu0LDyqalyuBQnvMMg0AleQ7Q5c+M LU3l96yAg50=";
};

$ sudo systemctl restart named-chroot

最後に、クライアント側でキャッシュサーバを使用して,DNSSECの検証が成功するかを確認します.
flagsにadが含まれていれば,DNSSECの検証に成功して名前解決ができています.

$ dig @192.168.2.131 pc1.ictsc.net +dnssec
; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8 <<>> @192.168.2.131 pc1.ictsc.net +dnssec
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50967
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 956
; COOKIE: 11c4d3fa9bdf7a63dc315b95603de72eaeb7725d8de23282 (good)
;; QUESTION SECTION:
;pc1.ictsc.net.         IN  A
;; ANSWER SECTION:
pc1.ictsc.net.      86258   IN  A   192.168.2.151
pc1.ictsc.net.      86258   IN  RRSIG   A 8 3 86400 20210401061624 20210302061624 63885 ictsc.net. K2/YRHfbne6RIqBzkt0/bZ7T62QTNr52S/SGuD9omC5ClbsJjOydBvXm THSSR0BtxlzbSGVzhggkBDzXcfc7lS8Iv8tbUWDKlvNp+heAo+PhDnWY 8VZWolD2Y2n9HNuBNXhidvIXHyrJbuhtzbamelgnEDx9zKlazeGrbjSZ Kqo=
;; Query time: 0 msec
;; SERVER: 192.168.2.131#53(192.168.2.131)
;; WHEN: Tue Mar 02 16:20:14 JST 2021
;; MSG SIZE  rcvd: 255

採点基準

  • 問題の発生原因について言及している (20%)
  • クライアントからキャッシュサーバを使って,DNSSECが有効で名前解決を行える (80%)