Mac は「どこでもMy Mac」という純正サービスで外部から自分のPCに接続できる機能があるのですが、柔軟に使うにはやはりドメイン名でアクセスできると便利!
と言う事で、ダイナミックDNSを設定してみました。
macOS は「システム環境設定」の「共有」に「ダイナミック・グローバル・ホスト名」と言う項目があってダイナミックDNSをお手軽に設定出来そうな雰囲気を醸し出していますが、これが対応しているのは「セキュアダイナミックDNSアップデート(RFC3007)」というプロトコル。
そしてそのプロトコルに対応したDNSサービスは私が調べた中ではDynくらいしかありませんでした。
過去にこれを試したことがあるのですが、イマイチ安定しないし、AirMacからは「ダイナミック・グローバル・ホスト名」の設定が消えるし、あまりオススメできない方法となります。
ということで DNS サービスは広く使われている更新プロトコル「DynDNS2 Client Update Protocol」を使える Google Domains を使う事にしました。
Google Domains は未だに Beta サービスのままですが、有償サービスとして日本でも利用可能になっています。
また、ダイナミックDNSクライアントは、ddclient を使う事にしました。
これも広く使われていますし、DynDNS2 だけでなく Google Domains 独自プロトコルにも対応しているようです。
Google Domains にサブドメインを追加
複雑なことは何もなく、ダイナミックDNSを選んで名前を入力、追加を押すだけの簡単な作業です。
追加されたサブドメイン毎にユーザー名、パスワードが生成されるのでこれを ddclient の設定に使います。
ddclient のインストール
MacPorts からインストール
ddclient はMacPortsでインストール出来ます。
$ sudo port -c install ddclient
インストールの終わりにこんなメッセージが表示されます。
###########################################################
# A startup item has been generated that will aid in
# starting ddclient with launchd. It is disabled
# by default. Execute the following command to start it,
# and to cause it to launch at startup:
#
# sudo port load ddclient
###########################################################
自動機能の設定は無効になってるから、自動起動したければ sudo port load ddclient を実行してね、とのこと
やはり結果出力はちゃんと確認するべきですね。
ddclient を Google Domains 向けに設定する
インストール出来たら早速設定を始めます。
ddclient にはデフォルトの設定ファイルが無く、代わりに設定サンプルファイルがあったためこれを元に設定を行う事にしました。
まず、サンプルファイルをコピーします。
$ sudo cp /opt/local/etc/ddclient/ddclient.conf.sample /opt/local/etc/ddclient/ddclient.conf
次にコピーした設定ファイルを編集します。
いつもの通りエディタは vi で、編集内容は後で diff を取ることにします。
$ sudo vi /opt/local/etc/ddclient/ddclient.conf
ddclient.conf の末尾に Google Domains の設定があるのでこれを流用するが、プロトコルに googledomains を指定するとIPアドレスの取得などに問題が発生したため、これを解決するのではなく一般的なプロトコル dyndns2 を使う事にした。
$ sudo diff -u /opt/local/etc/ddclient/ddclient.conf.sample /opt/local/etc/ddclient/ddclient.conf
--- /opt/local/etc/ddclient/ddclient.conf.sample 2018-04-25 12:02:54.000000000 +0900
+++ /opt/local/etc/ddclient/ddclient.conf 2018-05-02 15:34:31.000000000 +0900
@@ -214,3 +216,9 @@
# login=my-auto-generated-username,
# password=my-auto-generated-password
# my.domain.tld, otherhost.domain.tld
+protocol=dyndns2
+use=web
+server=domains.google.com
+login=xxxxxxxxxxxxxxxx
+password='xxxxxxxxxxxxxxxx'
+hugahuga.hogehoge.net
動作確認
実行してみると
-bash: /opt/local/sbin/ddclient: /opt/local/bin/perl5.24: bad interpreter: No such file or directory
というエラーが出るため ddclient を修正する。(UNIXの流儀としてこれが正しい対応かは自信が無いですが…)
$ sudo vi /opt/local/sbin/ddclient
先頭の2行
#!/opt/local/bin/perl5.24
#!/opt/local/bin/perl5.24
を
#!/opt/local/bin/perl5.26
#!/opt/local/bin/perl5.26
とする。
ダメなことにオリジナルをコピーしておくのを忘れました orz
どのように変更したかわかるように残す事は徹底的に習慣化すべきだと思うのでこれは後で戻しておくことにします。
自動起動を設定
動作することが確認出来たので自動起動を設定します。
$ sudo port load ddclient
自動起動しない問題に対応
ここまで設定すれば動作するかと思いきや、自動起動がちゃんと機能していないようです。
調べて見るとキャッシュディレクトリが無いことが原因のようです。
$ sudo mkdir /opt/local/var/cache/ddclient
キャッシュディレクトリを作って再起動したところ、ちゃんと動作していることが確認出来ました。
高々 Dynamic DNS を設定するくらいのことですが、ちゃんと動作しているか確認するのを含めて結構時間がかかってしまいました。
それでは、また。