4
3
記事投稿キャンペーン 「2024年!初アウトプットをしよう」

MXレコードにIPアドレスを設定したとき、dig の結果の最後の「.」(ドット)は付いて表示される

Last updated at Posted at 2024-01-21

(2024年1月22日 22時追記)
MXにIPアドレスを設定することを推奨する記事ではありません。試した限りでは、多くのDNS権威サーバサービスで、MXにIPアドレスを設定しようとするとエラーになりました。RFCに則ったMXの設定方法については沢山の情報がありますので、そちらをご確認お願いいたします。

「MXレコードのIPアドレスの最後の 「.」(ドット)」について、確認してみた。

元ネタ

下記記事で記述した「設定時はないが、digの結果には表示されている、MXレコードのIPアドレスの最後の 「.」(ドット)は、下記リンクなどから、MXレコードはFQDNが設定されることが想定されているためDNSの「ルート」を表す「.」と推測しています。」の確認

DNSのパケット構造

実際に手元のnamed にデータを加え、上記を参考に解釈した。

パケットデータ上は上記itmediaの記事のように圧縮が行われることがありますが、今回は展開された形となるように元データを作成しています。

Aレコードのパケットデータ

image1.png

Aレコードのレスポンスパケットの該当部分のデータは以下

|A   |IN  |TTL(86400)|length(4)|192|168|0 |20|
|0001|0001|00015180  |0004     |c0 |a8 |00|14|

IPアドレスはバイナリ4バイト

MXレコードのパケットデータ

image2.png

MXレコードのレスポンスパケットの該当部分のデータは以下

|MX  |(snip)|preference|len|mail    |len|example       |len|com   |
|000f|(snip)|000a      |04 |6d61696c|07 |6578616d706c65|03 |636f6d|00

データのどこにも「.」はない
FQDNの部分は、「長さ+文字列」の繰り返し。最後が00
表記上は、区切り文字「.」を追加、最後にルートラベル「.」追加して表示し「mail.example.com.」となる。

IPアドレスが設定されたMXレコードのパケットデータ

image3.png 1

IPアドレスが設定されたMXレコードのレスポンスパケットの該当部分のデータは以下

|MX  |(snip)|preference|len|192   |len|168   |len|0 |len|20  |
|000f|(snip)|000a      |03 |313932|03 |313638|01 |30|02 |3230|00

Aレコードの時のIPアドレスとは違い、「長さ+文字列」の繰り返し。最後が00
MXレコードなので、FQDN と解釈し、表記上は、区切り文字「.」を追加、最後にルートラベル「.」追加して表示し「192.168.0.20.」となる。

dig の表示結果

image5.png

「192.168.0.20.」と最後に「.」(ドット)がついて表示されている

Windows 10 の nslookup では、最後の「.」(ドット)は付かない

image4.png

「192.168.0.20」と最後に「.」(ドット)の表示はない

結論

コマンドdigのMXレコードの結果表示の最後の「.」は、コマンドdigの表記上表示されるだけで、データ上はない。

補足

実際のnamedの設定は以下です。
named の設定上は、下記のように、最後に「.」が必要です。

;
@       IN      SOA     ns.example.net. root.example.net.       (
        20240122        ;Serial No.
        10800   ;Refresh
        1800    ;Retry
        604800  ;Expire
        86400   ;Minimum
        )

        IN      NS      ns.example.net.
        IN      A       192.168.0.15                <- 試したAレコード
        IN      MX      10 mail.example.com.        <- 試したMXレコード

; Host Information
ns      IN      A       192.168.0.15
www     IN      A       192.168.0.15
mail    IN      MX      10 192.168.0.20.            <- IPアドレス設定したMXレコード

最後の「.」がないと、以下のように設定すると、MX = 192.168.0.20.(ドメイン) (今回の場合は、192.168.0.20.example.net.)が実際のデータとなります。

mail    IN      MX      10 192.168.0.20

これは、設定内容が、IPアドレスでなくても同様で、下記だと、mx.example.net + (ドメイン)(今回の場合は mx.example.net.example.net.)が実際のデータとなります。(namedの設定の時によくやってしまう失敗)

mail    IN      MX      10 mx.example.net

ちなみに例の件は、権威サーバがAWS だったはずなので、補足のnamedの設定の話は関係ないはずです。
間違いのご指摘・コメント等ぜひよろしくお願い致します。

  1. 2024年1月23日 16時 画像間違い修正

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3