年々高くなるドメイン更新費用とサヨナラするため。
物は試しに、ということで手持ちのドメインをGoogle Domainsへ移管しました。
- ●だんだんと値上がりするValue-Domain
- ●Google Domainの価格を調査する
- ●Google Domainsへの移管作業
- ●Google Domains環境でDDNSを利用する
- ●Windows Powershell経由でGoogle DomainsのDDNS情報を更新する
- ●Google Domainsへ移管してみて
●だんだんと値上がりするValue-Domain
確か取得した時は990円とかだった記憶が。
Value-Domainで取得したnetドメインをずっと運用していますが、年々値上がりし、とうとう調整費という追加分(為替変動吸収用)まで導入されることに。
もうちょっとお安く維持できないかなーというのと、スマートに維持したいなと考え、Google Domainsへの移管を行いました。
実際に移管したのは上記の調整費の発表前ですが、結果的に移行して値上げを回避できました。。。
●Google Domainの価格を調査する
上記サイトでは私が保有しているnetドメインは$12/yearと表示されていますが、
実際の更新価格は1400JPY+taxと表示されています。(2022/12/31時点の表記)
調整費がかからない分だけお休め。
尤も、Google Domains側もいつ価格改定があるかわかりませんが。。。
●Google Domainsへの移管作業
実際にValue DomainからGoogle Domainsへ手持ちのドメインを移管してみました。
上記のヘルプなどを見ながら作業していきます。
・Whois代行の解除
whois情報公開代行を利用している場合、まずそちらを解除します。
私は利用しているため、そちらの情報をいったん解除します。
情報をいったん自分の情報に戻し、Whois情報公開代行機能を無効にします。
・認証鍵の確認
再度whois情報設定のページに戻り、認証鍵を確認します。
(下記の図はwhois公開代行解除前に取得したため、情報がGMOの情報になっています)
チェックを入れることにより、認証鍵を表示することができるため手元に控えておきます。
・ドメインロックの解除
ドメイン情報を事業者間でやり取りできるよう、ドメインロックを解除します。
・Google Domain側で移管手続きを行う
ドメインロックまで解除できたら、Google Domains側で移管手続きを行います。
Googleアカウントでログインし、「移管」メニューへ移動、検索欄に自分が保有しているドメインを入力します。
正常にValue-Domain側で手続きができていれば、以下のような画面になります。
ここで先ほど控えた認証鍵を入力します。
DNSサーバの設定を行います。今回はGoogle管理のDNSサーバを利用したいので「DNS設定をコピーして管理をGoogleに任せる」を選択します。
・支払い情報、連絡先の入力
最後に支払情報を入力します。移管時は最初の更新費用1年分(本来は期限切れのタイミングで支払うことになる更新費用)を支払います。
私の登録ドメインの場合、2022/9がドメインの有効期限でしたが、移管手続きを行っている5月に、2022/9月の更新時にかかる費用が即時決済されます。
これは移管料等の一時費用ではなく、純粋に初年度料金の先払いで、
ドメインの移管が成功した場合この決済分が翌年1年分の費用として計上されます。
プライバシー保護を有効、および自動更新を有効にしておきます。
プライバシー保護を有効にしておくと、Whoisに最低限の情報しか公開されなくなるため、個人利用ではほぼ必須だと思います。
次のページでWhoisへ登録する情報を記入します。
プライバシー保護が有効になっていた場合でも入力は必要になります。
全ての項目が入力できたら、クレジットの決済が行われます。
Google Payを通じて決済が完了すると、ドメインの移管手続きが開始されます。
あとは移管完了まで待てばOKです。
期限までに移管が正常に行われない場合、どれかの手順を飛ばしている可能性が高いと思われます。私は初回のとき、Whois情報公開代行を解除していなかった関係で移管が失敗し、再トライして移管が完了しました。
●Google Domains環境でDDNSを利用する
Google DomainsにもダイナミックDNS機能が提供されているため、これを利用します。
ドメイン設定ページの「DNS」メニューにある、「ダイナミックDNSの管理」を押し、新たにDDNSで利用するホスト名(サブドメイン)を作成します。
ここで作成したホスト名は、Googleドメインで管理しているドメインのサブドメインの扱いになり、Google Domainsで管理しているドメインが「example.net」だとすると、DDNS用に「ddns」という名前をつけた場合、DDNSとして更新されるFQDNは「ddns.example.net」となります。
ホスト名の作成が完了し保存ボタンをクリックすると下記の図のようになり、DDNSの更新に使用する認証情報を確認しておきます。(「表示」ボタンをクリックすることでユーザ名/パスワードを確認できます)
●Windows Powershell経由でGoogle DomainsのDDNS情報を更新する
我が家の環境は非固定のグローバルIP+DDNSという環境のため、
当然ながらIPアドレスを更新する仕組みを用意する必要があります。
今回は12時間毎にIPアドレスが更新されていないかチェックを行い、更新されていた場合に登録を行うようなPowershellを下記参考サイトをベースに改造させてもらって作成しました。
GoogleDomainsのDDNSをWindowsServerのコマンドプロンプトで自動更新する
https://zazameta.net/archives/4411
グローバルIPのチェックには以下のURLを利用しました。
https://domains.google.com/checkip
# IP アドレスを取得するページのURL
$IP_URL = "https://domains.google.com/checkip"
# Google Domain のDDNSサーバの登録ページのURL
$DDNS_URL = 'h ttps://username:password@domains.google.com/nic/update?hostname=myhost.example.com'
#必須ヘッダ情報
$HEADERS = @{ 'Authorization' = 'Basic <Encoded_username_and_password>' ; 'User-Agent' = 'Chrome/101'}
# ログファイルを保存するディレクトリ
$DATAPATH = "C:\ddns-batfiles\"
$IP_FILE = "old_ip.txt"
$LOG = "log.txt"# ログの出力
function write_log($message)
{
$now = Get-Date;
Add-Content ($DATAPATH + $LOG) ($now.ToString("yyyy/MM/dd HH:mm:ss") + " " + $message)
}# 記録しているIPアドレスの取得
if (Test-Path ($DATAPATH + $IP_FILE))
{
$old_ip = Get-Content ($DATAPATH + $IP_FILE)
}
else
{
$old_ip = "0.0.0.0"
}
echo $old_ip# IPアドレスの取得
try
{
$new_ip = Invoke-RestMethod -Method Get -Uri $IP_URL
}catch
{
write_log("11:IPアドレスが取得できません。")
}
echo $new_ipif ($old_ip -eq $new_ip)
{
write_log("00:IPアドレスの変更がありません")
echo "00:IPアドレスの変更がありません"
}
else
{
# アドレスが変更されている場合にDDNSの更新
try
{
$status = Invoke-RestMethod -Method Get -Uri $DDNS_URL -Headers $HEADERS
echo $status}
catch
{
write_log("12:サーバに接続できません。")
}
if ($status.Contains("good"))
{
Set-Content ($DATAPATH + $IP_FILE) $new_ip
write_log("0:OK IP:" + $new_ip)
}
else
{
write_log("NO IP Change")
}
}
このままのスクリプトで利用する場合、
$DDNS_URL = 'h ttps://username:password@domains.google.com/nic/update?hostname=myhost.example.com'
→username:passwordを自身のDDNSエントリのユーザ名/パスワードに変更
#必須ヘッダ情報
$HEADERS = @{ 'Authorization' = 'Basic <Encoded_username_and_password>' ; 'User-Agent' = 'Chrome/101'}
→”<Encoded_username_and_password>”を「username:passwordをBASE64エンコードしたもの」へ変更
例:
ユーザ名:パスワード=LoidForger:Tasogare
の場合
TG9pZEZvcmdlcjpUYXNvZ2FyZQ==
となります。
●Google Domainsへ移管してみて
Googleアカウントへ紐づくこと、また支払いもGoogle Payに紐づくため、便利といえば便利です。
DDNSの利用は少しクセがありましたAPIもPowerShellもへっぽこ技術力しかないので、なんとか動いてくれたので良かったです。
肝心のコスト低減は・・・今のところはお安く出来ていますが、為替リスクもろもろを含め、未来はわからないので今後の動向に注目かなと思います。