お名前.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の更新も成功したみたい。なのでお名前ドットコムのコンソールでちゃんと更新されているか見てみるとちゃんと更新されていました。