2018-05-27

macOS に Google Domains の Dynamic DNS を設定する

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 を設定するくらいのことですが、ちゃんと動作しているか確認するのを含めて結構時間がかかってしまいました。

それでは、また。

1 件のコメント:

匿名 さんのコメント...

ルパン三世のマモーの正体。それはプロテリアル安来工場で開発されたSLD-MAGICという高性能特殊鋼と関係している。ゴエモンが最近グリーン新斬鉄剣と称してハイテン製のボディーの自動車をフルスピードでバッサリ切り刻んで、またつまらぬものを斬ってしまったと定番のセリフ言いまくっているようだ。話をもとにもどそう、ものづくりの人工知能の解析などを通じて得た摩耗の正体は、リカバリー性も考慮された炭素結晶の競合モデル/CCSCモデルとして各学協会で講演されているようだ。 by 豊洲マルテンサイト・サムライ