自宅サーバ用ドメイン取得

はじめに

長年自宅サーバを運用してきたが、独自ドメインはとらずにDynDNSのサブドメインを取り、DynDNSのDynamic DNSサービスで公開してきた。

当初は無料だったDynDNSも有料化されてきて、おまけに今回大幅な値上げとなり、いよいよ個人で細々と運用するにあきつくなってきた。

そこで独自ドメインをとって、別のDynamicDNSサービスを使ってみようと思い立ったわけです。

どのDynamicDNSを使うか

調べてみると、世の中には無料のDynamicDNSがいろいろあるようだ。

ただ当初無料だったDynDNSがここまで高額になったことを考えると、サブドメインを使うタイプの無料のDynamicDNSは先行きが不安だ。 また高額になってしまうと、自宅サーバのドメインが変わってしまい、これまでのあちこちに張り巡らせたリンクが機能しなくなってしまうのは残念。

となると、独自ドメインをとって、無料か安価なDynamicDNSに登録するのがよさそうだ。

もうちょっと調べてみると、「Google Domains」というサービスが2019に日本でも始まったという記事があった。

これを使うと、ドメイン取得とDynamicDNSサービスを一緒に開始できるとある。値段も"*.org"なら1400円/年とお手ごろだ。 これにしてみよう。

Google Domainsでのドメイン取得

Google Domainsでドメインを取得するまでの手順を書いてみよう。

  • Google Domainsにアクセスし、真ん中の枠に取得したいドメイン名を入れてみます。

Google Domainsのトップページ

  • そのドメインが使えるかどうか、その値段が一覧表示されます

取得可能なドメイン一覧

  • ほしいドメインが取得可能であれば、右端のカードに追加アイコンをクリック
  • カートを開くとこんな感じに。[CHECK OUT]を押して先に進みます

カートの中身

  • Googleアカウントでサインインします。この先でクレジットカード情報とか入れて、購入完了

サインイン

購入したドメインを選択すると以下のようなメニューが表示されるので、DNSを選択。 ここでIPアドレスを割り振るわけだが、最初どこに設定すればいいのかちょっと悩んだ。 DNS設定メニュー

初めてGoogleDomainsを使うなら、まずは手入力で現在のIPアドレスを設定してみよう。

自宅のBBルータに割り当てられたIPアドレスが、"219.98.163.xxx"だとする。 「カスタムリソースレコード」に設定すればいい。レコードタイプは"A"。 カスタムリソース設定

これでnslookup をかければここで指定したIPアドレスが返される。設定して有効になるまで10秒くらいはかかる感じ。

Webサーバの設定を正しく設定しておけばこれで自宅サーバが見えるはず。

これはテストなので、カスタムレコードは削除しておく。

DynamicDNSの設定

固定IPアドレスでなければ、時々変わってしまうIPアドレスをDNSに登録してやらないといけない。

ddclient

DynamicDNSを使うには、自宅のIPアドレスをGoogleDomainsに設定するクライアントソフトが必要。 一般的なものとしてはddclientというソフトがあるらしい。

yumでは見つからなかったので、信頼できるサイトからddclientのRPMを落としてきてインストール。 設定ファイルは/etc/ddclient.conf。

ddclientはいろんなDynamic DNSサービスのクライアントになれるので、GooleDomains用の設定をしてやればGoogleDomainsのDynamicDNSサービスが利用できる。 ddclient.confの下のほうに# protocol=googledomains, という設定ブロックがあるのでここを設定するのだろう。

こんな感じでかかれてる。loginとpasswordにユーザー名とパスワードを設定する感じ。 4行目に取得したドメイン名を書く感じ。

  # protocol=googledomains,
  # login=my-auto-generated-username,
  # password=my-auto-generated-password
  # my.domain.tld, otherhost.domain.tld
  

最初、loginとpasswordにがGoogleDomainsを利用するときの自分のアカウント情報を書くのかとおもった。 もちろんそんなことはなく、DynamicDNS設定字に生成されるIDとパスワードを設定する。

DynamicDNS追加

ではGoogle DomainsでDynamicDNSの設定をしてみよう。

DynamicDNSの設定は中段の「合成レコード」で設定する。

  • 左枠のセレクタで「ダイナミックDNS」を選択
  • 購入したドメインそのものを設定するならルートを意味する"@"を設定

DNS設定メニュー

  • [追加]を押せばDynamicDNS用レコードが追加される

DNS追加

  • 追加したレコードを">"で開くと、認証情報が出てくる。ここに表示されているユーザー名とパスワードをddclient.confに設定するわけだ。 追加した直後はIPアドレス未設定なので、"0.0.0.0"となっている

DNS設定

ddclient設定

では、ddclient.conf を設定してみる。

  • loginとpasswordは先ほどGoogleDomainsで表示されたIDとpasswordをコピペする。
  • 4行目にドメイン名を入れる protocol=googledomains login=kc4zUhcdsahocUUU password=PKKLLyu6458 tech-notes.org
  • これとは別に自宅のIPアドレスを取得するために以下の設定を追加しておく。 use=web
  • これを設定すると、DYNDNS.orgにリクエスト飛ばしてリクエスト元(自宅)のIPアドレスを返してもらう。これをGoogleDomainsに設定するわけだ。 Dyn.orgの利用料の値上げに耐えられずに逃げ出したのに、こんなところで依存してしまってすいません。

ddclient実行

本来、ddclientは定期的に更新を実行してくれるデーモンだが、テストの時はコマンドラインで実行してエラーメッセージを確認するほうが便利。 以下のコマンドで結果を確認できる。

  # ddclient -daemon=0 -verbose
  CONNECT:  checkip.dyndns.org
  CONNECTED:  using HTTP
  SENDING:  GET / HTTP/1.0
  SENDING:   Host: checkip.dyndns.org
  SENDING:
  RECEIVE:  HTTP/1.1 200 OK
  RECEIVE:  <html><head><title>Current IP Check</title></head><body>Current IP Address: 219.98.164.77</body></html>
  ...
  INFO:     setting IP address to 219.98.164.77 for tech-notes.org
  UPDATE:   updating tech-notes.org
  CONNECT:  domains.google.com
  CONNECTED:  using SSL
  SENDING:  GET /nic/update?hostname=tech-notes.org&myip=219.98.164.77 HTTP/1.0
  SENDING:   Host: domains.google.com
  ...
  RECEIVE:
  RECEIVE:  good 219.98.164.77  
  

このように最後がgood で終わってれば更新成功。

GoogleDomainsの画面を更新してみると、IPアドレスが更新されてるのが確認できる。 DNS設定

nslookupで確認してみると、IPアドレスを取得できる。 Non-authoritative answer: Name: tech-notes.org Address: 219.98.164.77

設定したのはホストの名前解決に使うAレコードというやつ。メールドメインの名前解決にはMXレコードというやつを使うはずだが、実際やってみるとAレコードだけでも

ちょっとはまったこと

GoogleDomainsのIPアドレス更新はあまり頻繁には受け付けてくれない。 5分に一度程度だとddclientのメッセージに表示されてたのに、あまり読まずに「うまくいかなーい」と何度も試してしまった。 エラーメッセージ大事。

サブドメイン設定

どうせならwww.tech-notes.org や hoge.tech-notes.org も名前解決できるようにしておきたい。 その場合はワイルドカード指定というのをやればいいみたい。

ダイナミックDNSには、"*.tech-notes.org"で登録すればいいみたいだ。 ただ、このワイルドカード指定にはルートドメイン(tech-notes.org)が含まれないらしいので、ルートドメインも登録しておく必要がある。

先ほどはルートドメインだったからか、ddclient.confには"tech-notes.org"で設定してたのだが、ワイルドカード指定したら、 "@.tech-notes.org"のようにルートドメインであることを明示しないとうまくいかないような気がする。

ddclient.confの設定はこんな感じになる。

  user=web
  
  protocol=googledomains
  login=kc4zUhcdsahocUUU
  password=PKKLLyu6458
  @.tech-notes.org
  
  protocol=googledomains
  login=kc4zUhohoJJJKK
  password=PKKLLLjjhUUI
  *.tech-notes.org
  


戻る