【最短5分】お名前.comのDNSのIPアドレスを自動更新する方法

 

★悩み★
・お名前.comで買ったDNSのIPアドレス部分を自動更新(定期更新)できる?
・お名前.comのドメイン(DNS)のAレコードを自動更新(定期更新)できる?
・Linux系のパソコン上で自動更新(定期更新)する方法を知りたい。



こういった「悩み」に答えます。

★本記事の内容★
① お名前.comで購入したDNSのIPアドレスを自動更新したい背景をご紹介
② お名前.comで購入したDNSのIPアドレスを自動更新する方法をご紹介



これからご紹介する「【最短5分】お名前.comのDNSのIPアドレスを自動更新する方法」を実践したことで、筆者は5分以内でお名前.comで購入したDNSのAレコード(グローバルIPアドレスを入力する箇所)を自動更新(定期更新)できました。
 

記事の前半では「お名前.comで購入したDNSのIPアドレスを自動更新(定期更新)したい背景」を解説しつつ、記事の後半では「Linuxを用いて、お名前.comで購入したDNSのIPアドレスを自動更新(定期更新)する方法」をご紹介します。
 

この記事を読み終えることで、「お名前.comで購入したDNSのAレコード(グローバルIPアドレスを入力する部分)を自動更新(定期更新)できる」状態になります。


ちなみに、「お名前.comのドメインを購入し、WordPressで使用する方法」が気になる方は、以下の記事をご覧ください。
 


 

お名前.comで購入したDNSのIPアドレスを自動更新したい背景


「お名前.comで購入したDNSのIPアドレスを自動更新したい背景」に関してご紹介します。

★お名前.comで購入したDNSのIPアドレスを自動更新したい背景★
・お名前.comで購入したDNSのIPアドレスを自動更新したい背景をご紹介
・どうやって、お名前.comのDNSのIPアドレスを自動更新するかをご紹介


以降で、上記「お名前.comで購入したDNSのIPアドレスを自動更新したい背景」の各項目に関してご説明します。
 

お名前.comで購入したDNSのIPアドレスを自動更新したい背景

「お名前.comで購入したDNSのIPアドレスを自動更新したい背景」に関してご説明します。
 

お名前.comで購入したDNSのAレコード(グローバルIPアドレスを入力する箇所)を自動更新(定期更新)しなかった場合どうなるかを解説しますね。



以下の記事でご紹介しましたが、プロバイダーの機器などを再起動した場合、グローバルIPが変わります。
 



グローバルIPが変わった場合、お名前.comに設定したAレコード(グローバルIPアドレスを入力する箇所)を更新する必要があります。
 

お名前.comのDNSのAレコード(グローバルIPアドレスを入力する箇所)を更新するために、以下の記事でご紹介した手順を再度実施する必要があります。
 



しかし、「毎日、グローバルIPアドレスが更新されていないことを確認する」や「グローバルIPアドレスが更新されていたらお名前.comのAレコードを更新する」していた場合、非常に手間となり、いつか更新作業をしなくなりますよ。。。
 

上記理由から、お名前.comのDNSのAレコード(グローバルIPアドレスを入力する箇所)を自動更新(定期更新)する仕組みを作るべきと考えました。
 

以上が、「お名前.comで購入したDNSのIPアドレスを自動更新したい背景」となります。
 

どうやって、お名前.comのDNSのIPアドレスを自動更新するか?

「どうやって、お名前.comのDNSのIPアドレスを自動更新するか?」を説明します。
 

OpenSSLを用いて、お名前.comで購入したDNS(ドメイン)のAレコード(グローバルIPアドレスを入力する箇所)を自動更新する方針です。



まずは、「お名前.comがAPIを提供しているか?」を調査してみました。
 

Google検索したところ、Windowsマシンで「お名前.comで購入したDNS(ドメイン)のAレコード(グローバルIPアドレスを入力する箇所)を自動更新(定期更新)」できるソフトがあるらしいです。
 

・管理画面へログインしなくても、IPアドレスの更新ができます。
・自動的にコンピューターのIPアドレスをチェックし、更新することができます。

https://help.onamae.com/answer/7920



残念なことに「Linux系のマシンで動作するソフト」や「API」は、お名前.comとしては提供していないようです。
 

「お名前ドットコム ddns 更新 linux」とGoogle検索したところ、「OpenSSL」を使ってLinux系マシンから更新可能と判明しました。
 

以降で、OpenSSLを使った「お名前.comで購入したDNS(ドメイン)のAレコード(グローバルIPアドレスを入力する箇所)を自動更新(定期更新)する仕組み」を作る方法をご紹介します。
 

★OpenSSLとは★
OpenSSLとは、インターネット上で標準的に利用される暗号通信プロトコルであるSSLおよびTLSの機能を実装したプログラムの一つ。

参照:http://e-words.jp/w/OpenSSL.html

 

OpenSSLとは、あるマシンと通信する際に暗号化して通信を行いセキュリティ品質を担保する仕組みです。



以上が、「どうやって、お名前.comのDNSのIPアドレスを自動更新するか?」に関してでした。
 

以上が、「お名前.comで購入したDNSのIPアドレスを自動更新したい背景」でした。


 

お名前.comで購入したDNSのIPアドレスを自動更新する方法


「お名前.comで購入したDNSのIPアドレスを自動更新する方法」をご紹介します。

★お名前.comで購入したDNSのIPアドレスを自動更新するための流れ★
ステップ1:お名前.comのDNSに入力するべきグローバルIPアドレスを確認
ステップ2:OpenSSLでお名前.comのDNSのAレコード(IPアドレス)を更新
ステップ3:お名前.comのDNSのAレコードを更新するプログラムを作成
ステップ4:Cronでお名前.comのDNSのAレコード(IPアドレス)を自動更新



上記手順を実施することでお名前.comで購入したDNS(ドメイン)のAレコード(グローバルIPアドレスを入力する箇所)を自動更新(定期更新)」できます。
 

上記の各手順は、以下の日時で手順確認済みです。
手順確認済み日時:2022年4月8日



以降で、上記「お名前.comで購入したDNSのIPアドレスを自動更新するための流れ」の各手順に関してご説明します。
 

ステップ1:お名前.comのDNSに入力するべきグローバルIPアドレスを確認

「ステップ1:お名前.comのDNSに入力するべきグローバルIPアドレスを確認」に関して解説します。
 

グローバルIPアドレスを簡単に取得するための方法をご紹介しますね。



現在のグローバルIPを確認する「3つの方法」を以下の記事でご紹介しました。
 



今回は下記の方法を用いて、グローバルIPアドレスを取得することにします。

# curl inet-ip.info
xx.xx.xx.xx

 

シェルスクリプトでjsonを扱うためには、追加ライブラリの導入が必要です。その導入が面倒なため、上記を採用しました。



以上で、「ステップ1:お名前.comのDNSに入力するべきグローバルIPアドレスを確認」は完了です。
 

ステップ2:OpenSSLでお名前.comのDNSのAレコード(IPアドレス)を更新

「ステップ2:OpenSSLでお名前.comのDNSのAレコード(IPアドレス)を更新」に関して解説します。
 

OpenSSLを使うことで、お名前.comで購入したDNS(ドメイン)のAレコード(グローバルIPアドレスを入力する箇所)をウェブブラウザを使わずに更新できます。



Linux系のマシン上で「ターミナル」を起動し、お名前.comのサーバに接続するために。以下のコマンドを実行しましょう。

# openssl s_client -connect ddnsclient.onamae.com:65010 -quiet



お名前.comのサーバ接続後、以下の情報を素早く入力します。(数秒未入力な状態が続くと、お名前.comのサーバーとの通信が遮断されます。)
・USERID:お名前.comのお名前IDを入力
・PASSWORD:お名前.comのパスワードを入力
・HOSTNAME:更新対象のホスト名を入力(未設定の場合は空欄を入力)
・DOMNAME:更新対象のDNS(ドメイン)を入力
・IPV4:Aレコードに設定したい「グローバルIPアドレス」を入力
 

LOGIN
USERID:ここにお名前.comのお名前ID
PASSWORD:ここにお名前.comのパスワード
.
MODIP
HOSTNAME:ここに更新対象のホスト名★未設定の場合は空欄で大丈夫です。★
DOMNAME:ここに更新対象のドメイン名★お名前.comで購入したドメイン名を入力します。★
IPV4:ここに更新するIPアドレス★現在のグローバルIPアドレスを入力します。★
.
LOGOUT



コマンド実行後、ドメインNaviにログインし、Aレコード(ドメイン名とグローバルIPアドレスの対応付け情報)が更新されたことを確認しましょう。(下図の赤四角)




上図のVALUE部分が更新されていれば、無事に「お名前.comで購入したDNS(ドメイン)のAレコード(グローバルIPアドレスを入力する箇所)」できたことになります。


以上で、「ステップ2:OpenSSLでお名前.comのDNSのAレコード(IPアドレス)を更新」は完了です。
 

ステップ3:お名前.comのDNSのAレコードを更新するプログラムを作成

「ステップ3:お名前.comのDNSのAレコードを更新するプログラムを作成」に関して説明します。
 

ステップ2で実施した手順をシェルスクリプト化する方法を解説しますね。



ステップ2で実施した「OpenSSLでお名前.comのDNSのAレコード(IPアドレス)を更新」する手順をシェルスクリプト化すると、以下のようになります。

# 設定
domain="kakedashi-xx.com"   # お名前.comで購入したドメイン名
onamecom_userid="xxxxxxx"   # お名前.comのユーザ名
onamaecom_passwd="xxxxxxxx" # お名前.comのパスワード
target_hostname=""          # 更新したいホスト名
target_domain="${domain}"   # 更新したいドメイン名


# 現在のグローバルIPアドレスを取得
current_global_ip_addr=$(curl inet-ip.info)

# 現在、ドメイン名に紐づいているグローバルIPアドレスを取得
domain_ip_addr=`dig ${domain} +short`

# ドメイン名に紐づいているIPアドレスを更新
if [ "${current_global_ip_addr}" != "${domain_ip_addr}" ]; then
  command_line="LOGIN\nUSERID:${onamecom_userid}\nPASSWORD:${onamaecom_passwd}\n.\nMODIP\nHOSTNAME:${target_hostname}\nDOMNAME:${target_domain}\nIPV4:${current_global_ip_addr}\n.\nLOGOUT\n.\n"
  echo -e "${command_line}" | openssl s_client -connect ddnsclient.onamae.com:65010 -quiet
  echo "更新をしました。${domain_ip_addr} => ${current_global_ip_addr}"
else
  echo "更新は、必要ありませんでした。"
fi



上記シェルスクリプトを「update-onamae-dns.sh」で保存してください。
 

今回、苦労した部分は、opensslコマンドに対してどうやって「LOGIN」などの入力情報を渡すかという部分です。



update-onamae-dns.shを実行し、お名前.comで購入したDNS(ドメイン)のAレコード(グローバルIPアドレスを入力する箇所)を更新してみましょう。

[更新が必要だった場合]
# sh update-onamae-dns.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    15  100    15    0     0     51      0 --:--:-- --:--:-- --:--:--    51
depth=2 OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign RSA DV SSL CA 2018
verify return:1
depth=0 CN = *.onamae.com
verify return:1
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
更新をしました。xx.xx.xx.xx => yy.yy.yy.yy 

[更新が不必要だった場合]
# sh update-onamae-dns.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    15  100    15    0     0    288      0 --:--:-- --:--:-- --:--:--   288
更新は、必要ありませんでした。



update-onamae-dns.shを実行後、「ERROR」が表示されていなかった場合、「正常にシェルスクリプトでお名前.comで購入したDNS(ドメイン)のAレコード(グローバルIPアドレスを入力する箇所)を更新できた」と判断できます。


以上で、「ステップ3:お名前.comのDNSのAレコードを更新するプログラムを作成」は完了です。
 

ステップ4:Cronでお名前.comのDNSのAレコード(IPアドレス)を自動更新

「ステップ4:Cronでお名前.comのDNSのAレコード(IPアドレス)を自動更新」に関して解説します。
 

ステップ3で作成したupdate-onamae-dns.shを自動実行(定期実行)できるようにする方法をご紹介しますね。



以下の記事で紹介したCronを使い、先ほど作成したupdate-onamae-dns.shを自動実行(定期実行)するように登録しましょう。
 



ちなみに、Cronに以下の情報を記載することで、update-onamae-dns.shを「毎日、8時28分に自動実行(定期実行)」できます。

# crontab -e
28 8 * * * /usr/bin/sh /root/blog/update-onamae-dns.sh > /tmp/cron.log

 

/usr/bin/shに関しては、Linux系のマシン上で「which sh」の実行結果に置き換えてください。



以上で、「ステップ4:Cronでお名前.comのDNSのAレコード(IPアドレス)を自動更新」は完了です。
 

上記の4ステップで、「お名前.comで購入したDNS(ドメイン)のAレコード(グローバルIPアドレスを入力する箇所)を自動更新(定期更新)」を実現できました。


 

【まとめ】お名前.comのDNSのIPアドレスを自動更新する方法【最短5分】


今回の記事を通して、「お名前.comで購入したDNS(ドメイン)のAレコード(グローバルIPアドレスを入力する箇所)を自動更新(定期更新)」をご紹介することで、以下の悩みを解消しました。
 

★悩み★
・お名前.comで買ったDNSのIPアドレス部分を自動更新(定期更新)できる?
・お名前.comのドメイン(DNS)のAレコードを自動更新(定期更新)できる?
・Linux系のパソコン上で自動更新(定期更新)する方法を知りたい。



「お名前.comで購入したDNS(ドメイン)のAレコード(グローバルIPアドレスを入力する箇所)を自動更新(定期更新)する方法は?」で悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。

コメント

  1. max より:

    Ubuntu20.04でのDDNS更新に役立ちました。ありがとうございました。

    • hero より:

      maxさん:
      コメントおよび情報共有ありがとうございました。
      「Ubuntu20.04でのDDNS更新」の実現に向けて、本記事が少しでも役に立ったとのことで、嬉しい限りです。
      その他困りごとなどがありましたら、遠慮なくお申し付けください。
      一人のIT技術者として、解決のお役に立てればと思っています。