いつの間にか DynDNS が AirMac(Airport) 非対応になってた。前は AirMac のダイナミック・グローバル・ホスト名のところに設定してやれば使えたはずだったのだが。
対応してる他のサービスはないかと思ったのだが、Duia DNS というサービスくらいしかなくて、しかもここは支払いが Paypal を用いた寄付という形なので、Paypal を寄付に使えない日本のアカウントから支払う方法がない。
しかしよく見るとどうやら AirMac のダイナミック・グローバル・ホスト名というのは RFC3007 準拠なのだとか書いてあるページが。あー、いつもの Apple の標準化されたものを採用したら Apple 以外誰も乗ってこなかったパターンですか……。
しかし標準があるということは自分の DNS サーバでも運用できるってことだよな。とりあえず昔から使ってるので bind を用いてやってみることにした。
今回はDDNS用にゾーンを切るのでセカンダリDNSが必要になるが、BuddyNS というサービスを利用してみることにした。
bind の named.conf の allow-transfer にBuddy NS のページ に書いてある IP アドレスを追加する。 ddns 用のゾーンファイルの NS レコードには Secondary DNS のリスト があるのでそちらのうち一つ以上を追加する。
そして AirMac に DDNS の更新用のサーバを伝えるために、SRV レコードを追加する。
ゾーンファイルは以下のようになる。
$TTL 86400 @ IN SOA ns.example.org. koshian.example.org. ( 2017042001 ; Serial 21600 ; Refresh 3600 ; Retry 604800 ; Expire 900 ) ; Minimum NS ns.example.org. NS d.ns.buddyns.com. _dns-update._udp IN SRV 0 0 53 ns.example.org.
設定が正常に反映されてるかを確認するには host コマンドを使う。
$ host -t srv _dns-update._udp.ddns.example.org _dns-update._udp.ddns.example.org has SRV record 0 0 53 ns.example.org.
それから更新のために TSIG を設定する。
$ dnssec-keygen -a hmac-md5 -b 512 -n HOST ddns.example.org
意外と時間がかかる……。
終わると2つのファイルが生成されるのだが、どっちも書いてある暗号化文字列は同じ。
$ cat Kddns.example.org.+157+63340.key ddns.example.org. IN KEY 512 3 157 48HyAjh7blM3vRtrt7L2HMbCkc7RKPIHE9Q92MMb3e+iWQPr1yZ0wtfV pjhHI8KRh8Tl6PE4cRw8mnaQRFskUA==
そして named.conf に鍵を書き込む。
key "example" { algorithm hmac-md5; secret "48HyAjh7blM3vRtrt7L2HMbCkc7RKPIHE9Q92MMb3e+iWQPr1yZ0wtfV pjhHI8KRh8Tl6PE4cRw8mnaQRFskUA=="; }; zone "example.org" { type master; file "slave/example.org.zone"; allow-update { 127.0.0.1; key "example"; }; };
確認のために nsupdate コマンドでリモートからホスト名を追加してみる。
$ nsupdate > server ns.example.org > zone ddns.example.org > key ddns.example.org 48HyAjh7blM3vRtrt7L2HMbCkc7RKPIHE9Q92MMb3e+iWQPr1yZ0wtfV pjhHI8KRh8Tl6PE4cRw8mnaQRFskUA== > update add myhome.ddns.example.org 60 A 192.168.0.1 > send > quit $ host myhome.ddns.example.org myhome.ddns.example.org has address 192.168.0.1
うまくいってるようだ。
あとは AirMac(Airport) の「インターネット」→「インターネット・オプション」を開き、「ダイナミック・グローバル・ホスト名を使う」にチェック。上の例だとユーザー名は example 、パスワードは secret に指定した文字列になる。ターミナルからコピペするときに改行コードが紛れることがあるので、一旦エディタにペーストして改行コードを削るといい。
しかしこれをやると AirMac は自分で勝手にいろんなレコードを追加してくる。サブドメインを切ったのもそれが理由なのだが、DynDNS やらの DDNS サービスが AirMac に対応しなくなったの同じ理由なのかしらね。
ちなみに macOS にも設定の共有セクションにダイナミック・グローバル・ホスト名を設定する箇所がある。ポート転送で外部に公開してるサービスがあればこういうのを使うのも手かもね。いや macOS を外部公開はあんまりしたくないけれども。
- 作者: Cricket Liu,Paul Albitz,小柏伸夫
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/12/08
- メディア: 大型本
- 購入: 5人 クリック: 34回
- この商品を含むブログ (17件) を見る
昔勉強し始めた頃は第3版だった DNS & BIND ももう第5版なのね。読み直したりもしないとかなあ。はたまた bind から離れるべきか。