LoginSignup
3

More than 1 year has passed since last update.

Alma Linux 8 で DDNS の自動更新 (MyDNS.JP 専用)

Last updated at Posted at 2021-01-03

既に同じ趣旨の記事がたくさん投稿されているので、屋上屋を架す憾みがあるが、いくつか新しい知見と工夫を追加できたと思うので、自分用のメモを兼ねて投稿する。

なお、Alma Linux (CentOS) 8 の環境である。

/root/ddnscheck.sh

ddnscheck.sh
#!/usr/bin/bash
# This script checks and updates ddns connection for this server.

# TARGET
TARGET="myserver.xxx.xx"

# Operating limit in seconds (default 16 hours : 4am to 8pm)
LIMIT=57600
if [ $# -ge 1 ]; then
  let LIMIT=$1
fi

# Sleep seconds between pings
SLEEP=15

# Forced update limit in seconds (1 hour)
UPDATE_LIMIT=3600

# Overall loop counter
I=0
# Updating loop counter
J=0

echo "Going to check ddns for $LIMIT seconds ..." 1>&2

while [ $I -lt $LIMIT ];
do
  echo -n "`date +"%m-%d %H:%M:%S"` " 1>&2
  ping -4 -c1 -w5 $TARGET >> /dev/null
  if [ $? == 0 ]; then
    echo " OK." 1>&2
  else
    echo " Not Connected."
    let J=$UPDATE_LIMIT
  fi
  if [ $J -ge $UPDATE_LIMIT ]; then
    echo " Going to update DDNS ..."
    wget -4 -O - https://mydns******:password@www.mydns.jp/login.html 1>&2
    wget -6 -O - https://mydns******:password@www.mydns.jp/login.html 1>&2
    let J=0
  fi
  sleep $SLEEP
  let I=$I+$SLEEP
  let J=$J+$SLEEP
done
echo "Operation finished." 1>&2

/etc/cron.d/ddnscheck

55 3 * * * root /root/ddnscheck.sh &> /var/log/nginx/ddnscheck.log

説明

ddnscheck.sh は、デフォルトで 57600秒(16時間)にわたって動作する。15秒ごとに自宅サーバ(自分自身でも良い)に対して DDNS のサーバ名で ping を打ち、応答が返ってこなければ、自宅サーバのグローバル・アドレスが変更されたと見て、MyDNS.JP のアドレス通知 URL を叩く。アドレスが変っていない場合でも、1時間ごとに MyDNS.JP にアドレスを通知する。このスクリプトを cron で毎日 3:55 AM に起動する。

ipv4 と ipv6

pingwget で使用している -4 および -6 は、それぞれ ipv4 または ipv6 での動作を強制するスイッチである。これらのスイッチを付けずに wget で MyDNS.JP のアドレス通知 URL にアクセスした場合、私の環境では ipv6 のアドレスだけが更新された。それでは具合が悪いので、上記のようにしている。

なお、wget のスイッチを変更する代りに、MyDNS.JP の URL を次のようにそれぞれ専用のアドレスに変更しても良い。

    wget -O - https://mydns******:password@ipv4.mydns.jp/login.html 1>&2
    wget -O - https://mydns******:password@ipv6.mydns.jp/login.html 1>&2

参考

MyDNS.JP のドキュメントを参考にするのが良い。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3