お名前.comで取得したドメインのAレコードの可変グローバルIPをLinuxで1時間おきに変更されているか確認して更新する

お名前.comで取得したドメインのAレコードのグローバルIP(可変)を定期的に更新するには、お名前.comで配布しているWindowsクライアントまたはWindowsサーバ用のアプリで実現可能なのですが、Linuxサーバ用のスクリプトなどがないのでシェルスクリプトで作成してCornで定期的に実行させます。

こちらを参考にシェルスクリプトを作成します。

#!/bin/bash # お使いの環境に合わせてください
# ルータのIP取得
gip=$(curl inet-ip.info)
# ドメインに紐づいてるIP取得
domip=$(dig plusload.net +short)

# ルータのIPとドメインのIPが相違するなら更新
if [ "${gip}" != "${domip}" ]; then
  {
    echo "LOGIN"
    echo "USERID:000" # お名前.com USER ID
    echo "PASSWORD:111" # お名前.com Password
    echo "."
    echo "MODIP"
    echo "HOSTNAME:"
    echo "DOMNAME:plusload.net"  #お名前.comで取得したドメイン
    echo "IPV4:$gip"
    echo "."
    echo "LOGOUT"
    echo "."
  } > input.txt
  openssl s_client -connect ddnsclient.onamae.com:65010 -quiet < input.txt
  wait $! # コマンドの処理が終わるまでwait
  echo "$(date)ドメインのIPを更新しました。${domip} -> ${gip}"
else
  echo "$(date)ドメインのIPは${domip}に設定されています。更新の必要はないです。"
fi
exit 0

こんな感じで作成しました。で、サーバの状態を確認。

root@root# curl inet-ip.info

これで現在、割り当てられているグローバルIPが表示されるか確認します。

続いてDNSのAレコードに割り当てられているIPを確認します。

root@root# dig domain +short

※domeinにはお名前.comで購入したドメインを入れます。plusload.netの場合は以下になります。

root@root# dig plusload.net +short

※同様のコマンドでhostコマンドがありますがこちらだとIPアドレスだけ取ることはできないのでdigを使ってください。

root@root# -bash: dig: コマンドが見つかりません

と表示されたらdigコマンドがインストールされていないのでインストールします。

root@root# apt-get install dnsutils

インストールが終わったら再びdigコマンドを実行してみます。

で、シェルスクリプトを実行させてみます。OKでしたらそのまま使えますのでCornに登録しておわりです。

ちなみに1時間おきに実行するようにcronを設定しました。

0 */1 * * *  /bin/sh /home/root/onamaednsupdate.sh >> /home/root/log/ddnsupdate.log

で、一旦、ルーターを再起動してipの振り分けを変更させて0分を超えたらログを見ます。

root@plusload:~$ cat log/ddnsupdate.log
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
2021年  5月 13日 木曜日 16:00:01 JST ドメインのIPを更新しました。126.172.45.172 -> 126.177.73.63

お名前.comのサーバにログインできてipの更新も成功したみたい。なのでお名前ドットコムのコンソールでちゃんと更新されているか見てみるとちゃんと更新されていました。

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)