0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

パブリックDNSによってはMyDNSで登録した自分のドメインを名前解決できなくて原因調査中

Posted at

背景

プライベートでサーバを持ちたくて、5年くらい前からConohaVPSを利用させてもらっているのだが、諸事上でそれまで運用していたVPS上のDebianをサポート期間長いRockey Linuxに移行した。

VPS(VM)自体を廃棄、新規構築したことでグローバルIPも変更になり、10年以上前から運用していたMyDNSのドメイン設定を久しぶりに見直して設定したのだが、自宅サーバへのアクセスがずっと不安定で、うまくアクセスできることもあれば、タイムアウトすることもあるため、本格的に調査をしてみた。

途中経過だが、どうも自ドメイン(my-domain.mydns.jpと仮称)への名前解決に問題がありそうということまでは特定できた。(現在まだ解決には至っていない)

MyDNSに定期バッチ実行

MyDNSは一定期間ドメイン利用がないと削除されてしまう規定(※詳細はこちら)のため、DDNSとしてではなく固定IPで運用する場合であっても定期バッチを実行する必要がある。

ConohaVPSは固定グローバルIPアドレスを割り当ててくれるので、ConohaVPSサーバ側に/etc/cron.dairy/mydnsを作成して、IPアドレスの通知するように設定する。

#!/bin/sh

curl -o /dev/null -s --user MYID:MYPASS https://ipv4.mydns.jp/login.html
curl -o /dev/null -s --user MYID:MYPASS https://ipv6.mydns.jp/login.html

MyDNSで設定確認

MyDNSのWeb画面にログインして、[Log Info]メニューから、定期バッチ実行結果がログ出力されていることを確認する(問題なくDNS UPDATEログ出力されていた)

また、[IP Address Direct]メニューでConohaVPSの固定IPアドレスが設定できていることも確認した。

[Domain Info]メニューも確認して、my-domain.mydns.jp(仮称)のドメイン設定と、Ipv4/IPv6の設定も問題なく設定できていることも確認した。

Hostname Type Content Target ID
* A myid
* AAAA myid

クライアントから名前解決確認

ここからが本題

ConohaVPSで払い出されている固定グローバルIPアドレスを、MyDNSに登録した自ドメインで名前解決できることを任意のクライアント端末から確認する。
コマンドには古き良きnslookupコマンドを利用する。(ネットワーク環境は全国チェーン展開している某有名喫茶店の無料Wifi環境から実施している)

MyDNSのDNSサーバは以下3つだとされている。 https://www.mydns.jp/#howtouse

  • ns0.mydns.jp (210.197.74.200)
  • ns1.mydns.jp (210.197.74.201)
  • ns2.mydns.jp (210.197.74.202)

まずは、このサーバに対して名前解決ができるかを確認する。

$ nslookup my-domain.mydns.jp ns0.mydns.jp
Server:         ns0.mydns.jp
Address:        210.197.74.200#53

Name:   my-domain.mydns.jp
Address: xxx.xxx.xxx.xxx
Name:   my-domain.mydns.jp
Address: zzzz:zzzz:zzzz:zzzz:zzzz:zzzz:zzzz:zzzz

一瞬で回答が返ってくる。問題なく名前解決できている。
では、リゾルバにデフォルトのDNSサーバを利用した場合はどうなるかを見てみた。

$ nslookup my-domain.mydns.jp
;; communications error to 127.0.0.53#53: timed out
Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
Name:	my-domain.mydns.jp
Address: xxx.xxx.xxx.xxx
;; communications error to 127.0.0.53#53: timed out
;; communications error to 127.0.0.53#53: timed out
Name:	my-domain.mydns.jp
Address: zzzz:zzzz:zzzz:zzzz:zzzz:zzzz:zzzz:zzzz

時々タイムアウトが発生していることがわかる。(なぜ??)
パブリックDNSを設定したらどうなるか→パブリックDNSで有名なGoogleの8.8.8.8で試してみると

$ nslookup my-domain.mydns.jp 8.8.8.8
;; Got SERVFAIL reply from 8.8.8.8
Server:         8.8.8.8
Address:        8.8.8.8#53

** server can't find my-domain.mydns.jp: SERVFAIL

解決できない。では、1.1.1.1ではどうか?

$ nslookup my-domain.mydns.jp 1.1.1.1
Server:         1.1.1.1
Address:        1.1.1.1#53

Non-authoritative answer:
Name:   my-domain.mydns.jp
Address: xxx.xxx.xxx.xxx
Name:   my-domain.mydns.jp
Address: zzzz:zzzz:zzzz:zzzz:zzzz:zzzz:zzzz:zzzz

問題なく解決できる!?? パブリックDNSによっては解決できない可能性があることがわかってきた。
こちらの記事を参考に、いろいろなパブリックDNSで解決を試してみると

  • 8.8.8.8→ NG
  • 1.1.1.1→ OK
  • 1.1.1.2→ OK
  • 1.1.1.3→ OK
  • 208.67.222.222→ ONとNGの混在
  • 208.67.220.123→ ONとNGの混在
  • 9.9.9.9→ NG
  • 9.9.9.10→ NG
  • 9.9.9.11→ NG

DNSSECが怪しい

Google Public DNSのドキュメントを読むと、DNSSECの検証に失敗した場合にSERVFAILが返されるとある。
ということは、MyDNS側がDNSSECに対応していないのが原因な気がしてきた。
なのでMyDNSがDNSSECに対応しているかを調べてみたが、公開されている情報からは判断できなかった。

今後の対応方針

どうもMyDNS利用者側の設定で解決無理な気がしてきたので、

  • 利用するクライアント端末のリゾルバの設定で1.1.1.1など名前解決できるDNSを指定する
  • MyDNS以外のDNSサービスを利用する

のどちらかで解決する必要がありそう。幸いなことに、自宅サーバは自分しか利用しないサービスを運用しているだけなので、1.1.1.1を設定する運用でもなんとかなるが、一般ユーザーに提供するサービスを公開するならそうはいかない。

MyDNS以外を使うとなると、候補としてはConohaVPSのDNS機能だろうか。でもこれまで使ってきた自ドメインも変える必要がありそう。うーん。

MyDNSってそれなりにサービス利用者いると思うんだけど、みんなどうしてるんだろう・・・

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?