メモ的ななにか

@Maleic1618

RFC6891: Extension Mechanisms for DNS (EDNS(0))

こんにちは、まれいんです。

この記事は ひとりRFCの旅 Advent Calender 3日目の記事です。

qiita.com

2013年4月に出たEDNS0についてのRFC、RFC6891を読んでいきます。 ちょうど先日のRFC2671をUpdateするRFCです。

概要

ほぼほぼRFC2671とは変わりありませんでした。 いくらか細かい部分は異なっているようだったので、ピックアップします。

拡張ラベルタイプ

0b01xxxxxx となっているラベルが拡張ラベルタイプとしてRFC2671で導入されました。 これはRFC6891でも続投するようですが、推奨しないということになったようです。 訳文から引用します。

しかし、新しいラベルタイプの普及は著しく困難であることがわかっているため、 他の選択肢や普及の必要性を慎重に評価した後にだけそれを実行することが 推奨される。

ちなみに RFC2673にて拡張ラベルタイプの1つであるバイナリーラベルというものが導入されていますが、 そのタイプはこのRFCで廃止見込みとしてMUST NOTで生成/通過禁止となったようです。(詳しくは知らない)

OPT RR

こちらもほぼ変わっていませんが、RFC3225で追加されたDO bitがあります。 DO bitが立っている場合、リゾルバがDNSSEC関連のリソースレコードを受理できることを示します。

例えば、DNSSEC対応ドメインで普通に引くとAD bitが立っていることから、検証に成功していることはわかりますが Aレコードに対応するRRSIGレコードは返ってきません。

$ dig jprs.jp @8.8.8.8

; <<>> DiG 9.16.8-Debian <<>> jprs.jp @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16234
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;jprs.jp.                       IN      A

;; ANSWER SECTION:
jprs.jp.                130     IN      A       117.104.133.164

;; Query time: 10 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Nov 29 22:05:04 JST 2020
;; MSG SIZE  rcvd: 52

DO bitを立ててクエリを投げると、AD bitに加えて対応するRRSIGを返してくれます。 よかったですね。

$ dig jprs.jp @8.8.8.8 +dnssec

; <<>> DiG 9.16.8-Debian <<>> jprs.jp @8.8.8.8 +dnssec
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25050
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 512
;; QUESTION SECTION:
;jprs.jp.                       IN      A

;; ANSWER SECTION:
jprs.jp.                38      IN      A       117.104.133.164
jprs.jp.                38      IN      RRSIG   A 8 2 300 20201226065952 20201126065952 24456 jprs.jp. QZtnUYooGiqkdF4oekuez1iMDpw9vWQu3SQ+zFDrXhAdj4ca3GjAlW3H GI+27NyHUqYZogiOiOPIdZr3U5iuf6cxZV73JIfacB1Hq9j/hEm9PpGE eTh14+cR2XHyEIoHK/kzvjRpsCVXEZbuHEXnXzlGWt56F9LSKhwYBvX8 ndU=

;; Query time: 20 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Nov 29 22:06:36 JST 2020
;; MSG SIZE  rcvd: 219

変更後のOPT RRのwire formatは以下です。DO bitのために以前0に指定されていた部分が確保されています。

                                    1  1  1  1  1  1
      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                                               |
    /                                               /
    /                 NAME(root固定)                /
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    TYPE(41)                   |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |             最大ペイロードサイズ               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |    EXTENDED-RCODE     |        VERSION        |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |DO|                    Z                       |  # <-- DO bitが追加
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                   RDLENGTH                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
    /                     RDATA                     /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

ひとこと

ページ数だけ見て簡単そうなRFC2671から読みましたが、あまりこちらから読んでも変わらなかったですね(・_・;;)