Raspberry Pi 4 で Google Domains に DDNS する


はじめに

なんとなく取得していたドメインがあった( お名前.com で持っていたが、ほぼ未使用)
この度これまたなんとなく Google Domains にドメイン移管した

移管してから気付いたんだけど、Google Domains は自分のドメインで DDNS が使えるようなので試してみる
あと ddclient というのが Google Domains DDNS の自動更新に対応しているっぽい

やることは以下の 2つ

  1. Google Domains の保有ドメインに DDNS 設定の追加
  2. 対応させたいサーバ側でIPアドレスが自動更新されるように設定

今回のサーバは Raspberry Pi 4 で、環境は以下

$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

Google Domains で DDNS 設定の追加

左ペインで DNS を選択し、合成レコードダイナミックDNS を選択し、サブドメイン名を入力して追加を押す
@ を指定するとルートドメイン)

自動更新したいDDNS名をクリックすると、詳細が表示されるので 認証情報を表示する をクリックしてユーザー名パスワード を控える
(今回は2個設定したので2個分を控えておいた)

IPアドレスが自動更新されるように設定

ddclient をインストール

インストールすると初期設定ウィザードが始まるが、設定は手動で行うので全部適当に空打ちEnterで進める

# apt install ddclient

Google Domains 用の設定に変更

複数設定するときは、そのまま続けて書く

# vim /etc/ddclient.conf
/etc/ddclient.conf
# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf

ssl=yes
protocol=googledomains
use=web
login=[ユーザー名1]
password='[パスワード1]'
[DDNS名1]

ssl=yes
protocol=googledomains
use=web
login=[ユーザー名2]
password='[パスワード2]'
[DDNS名2]

単発で実行して動作確認

単発で実行する

# ddclient -daemon=0 -verbose

分かりづらいけど、更新できた場合は

INFO:     setting IP address to 14.3.62.29 for mtkhs.com

既に更新されていた場合は

SUCCESS:  mtkhs.com: skipped: IP address was already set to 14.3.62.29.

いずれにしても最後に

RECEIVE:  good 14.3.62.29

と出たら成功していると思われる

デーモン化の設定変更

# vim /etc/default/ddclient

run_ipupfalse
run_daemontrue
に変更する

/etc/default/ddclient
# Configuration for ddclient scripts-
# generated from debconf on Sun 29 Nov 2020 10:50:23 PM JST
#
# /etc/default/ddclient

# Set to "true" if ddclient should be run every time DHCP client ('dhclient'
# from package isc-dhcp-client) updates the systems IP address.
run_dhclient="false"

# Set to "true" if ddclient should be run every time a new ppp connection is-
# established. This might be useful, if you are using dial-on-demand.
run_ipup="false"

# Set to "true" if ddclient should run in daemon mode
# If this is changed to true, run_ipup and run_dhclient must be set to false.
run_daemon="true"

# Set the time interval between the updates of the dynamic DNS name in seconds.
# This option only takes effect if the ddclient runs in daemon mode.
daemon_interval="300"

サービス再起動

# systemctl restart ddclient.service

おわりに

たぶん10年以上、自宅とかVPSで使うDDNS名は ieServer.Net を利用して、curl とか wget で自動更新して使用していた。

んだけど、最近のLinuxディストリビューションの openssl ライブラリでは ieserver.net に繋げられない。
(2020年11月29日 時点)
原因は ieserver.net 側が SSLv3 を利用しているから。
最近の openssl ではセキュリティ上の問題で SSLv3 は切り捨てられているので対話不可。
一応 Docker とかで古いバージョンのDebian( jessie くらい )なんかを走らせれば SSLv3 が利用できる。