NSD

NSD4

9月になったので久々にLet’s Encryptによるサーバ証明書の自動更新具合をチェックしたところ、www.~の証明書なのにCNがmail.~になっている事に気づいた。

正確に言うと"今まで"気づいてなかった問題に"今になって"気づいたというのが正しく、最近おかしくなったわけではないと思うのだが、取り敢えず気づいたからには修正する方向でLet’s Encrypt の使い方を再確認。すると、「letsencrypt-auto/certbot-auto」においてドメイン名とサブドメイン名の両方を指定する必要があるような印象だったので、

sudo letsencrypt-auto certonly --webroot --webroot-path=/var/www/html \
        -d bravotouring.com -d www.bravotouring.com

としたものの、今度は**“bravotouring.comのアドレスが引けない”**と叱られた。

そら、bravotouring.comはドメインでホストじゃないから仕方ないじゃん…と思いつつ、ここで意地を張ってもしかたがないので、おとなしくDNSの設定を追加することに。

いつものとおり、/etc/nsd/zones/bravotouring.com.zoneのドメイン名の直下にCNAMEを

~~
       IN   CNAME  vps
vps    IN   A      49.212.151.67
vps    IN   AAAA   2403:3a00:202:1112:49:212:151:67
~~

…と追記して「えいや!」っとしたところ

yano@vps:~$ sudo nsdc rebuild
sudo: nsdc: **command not found**
yano@vps:~$

…な結果で、「nsdcどこ行ったの????」という事にこれまた今頃気づいて大慌て。

色々と調べてみたら今年3月のアップデートでNSD 3からNSD 4に上がった形跡があり、その際にnsdc(8)zonec(8)のコマンドも削除されたようだ。置き換えではなく「廃止」という事は、手順そのものが不要となったと考えるのが自然なのだが、DNSクエリを投げても返答は変わらず、/var/lib/nsd/nsd.dbも今年2月のタイムスタンプのままなので、NSDを再起動してsyslogを見たところ

nsd[6846]: bravotouring.com.zone:17: **CNAME and other data at the same name**
nsd[6846]: zone bravotouring.com file bravotouring.com.zone read with **1 errors**

なエラーが出ていた。

NSD4のプログラム

Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)より

調べてみたところZone apexとCNAMEの制限にひっかかっているらしく、/etc/nsd/zones/bravotouring.com.zone

TTL 3600
@ IN SOA ns1.bravotouring.com. foo.bravotouring.com. (
            201609051429 ; serial
            10800  ; refresh
            3600   ; retry
            86400  ; expire
            43200  ; default_ttl
        )
       IN   NS     ns1.bravotouring.com.
       IN   NS     ns2.bravotouring.com.
       IN   MX 10  mail.bravotouring.com.
       IN   TXT    "v=spf1 mx a:foo.bravotouring.com ~all"
@      IN   A      49.212.151.67
@      IN   AAAA   2403:3a00:202:1112:49:212:151:67
vps    IN   CNAME  @
ns1    IN   CNAME  @
ns2    IN   CNAME  @
mail   IN   CNAME  @
www    IN   CNAME  @

…な感じで書き直して起動OK。 なお、nsdc rebuild/reloadに代わるNSD 4でのzoneファイル更新は