OCIでメールサーバー構築ーその5 MyDNSアドレス自動更新
OCIが割り当てるグロバルIPは基本的には変更されないがMyDNSは固定でも動的でも1週間以上IPアドレスを更新しないとエラーになります。なので,自動更新は必須です。
なんだか上手くいかないので,以下の方法を試みた。
curl -u ID:PASS https://www.mydns.jp/login.html
crontab -e
# 毎日01:00にIPアドレスを通知する
0 1 * * * curl -u ID:PASS https://www.mydns.jp/login.html
<参考サイト>
※ 以下は古い情報です。
# vi /etc/cron.hourly/mydns
<参考サイト>
※ 以下は古い情報です。
更新スクリプトの作成
sudo vi /usr/local/bin/ddns-update.sh
以下を貼り付け。
#!/bin/bash
SCRIPT=${0}
MID=${1}
PASS=${2}
DOMAIN=${3}
# MyDNS.JP設定IPアドレス取得
IPGETLOG=`host ${DOMAIN} ns0.mydns.jp 2>&1`
MYDNSIP=`echo "${IPGETLOG}" | grep "has address" | awk '{ print $NF }' | egrep ^[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+$`
[ $? -ne 0 ] && MYDNSIP=0.0.0.0
# 現在IPアドレス取得
IPGETLOG=`curl ipinfo.io/ip 2>&1`
echo "${IPGETLOG}" | egrep ^[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+$ > /dev/null 2>&1
if [ $? -eq 0 ]; then
CURRENTIP=`echo "${IPGETLOG}" | tail -n 1 | awk '{ print $NF }'`
else
echo "${DOMAIN} 現在IPアドレス検出エラー" | logger -t $(basename $0)
echo "${IPGETLOG}" | logger -t $(basename $0)
exit
fi
# MyDNS.JP設定IPアドレス更新
# (MyDNS.JP設定IPアドレス≠現在IPアドレスの場合またはIPアドレス強制更新指定のみ)
if [ "${MYDNSIP}" != "${CURRENTIP}" ] || [ $# -eq 4 ]; then
IPUPDATE=`wget -q -O - "https://www.mydns.jp/directip.html?MID=${MID}&PWD=${PASS}&IPV4ADDR=${CURRENTIP}"`
echo ${IPUPDATE} | grep -q OK
if [ $? -eq 0 ]; then
echo "${DOMAIN} IPアドレス更新成功 to ${CURRENTIP}" | logger -t $(basename $0)
else
echo "${DOMAIN} IPアドレス更新エラー" | logger -t $(basename $0)
echo ${IPUPDATE} | logger -t $(basename $0)
(
echo IP ADDRESS UPDATE ERROR
echo ${IPUPDATE}
) | mail -s "${SCRIPT##*/} ERROR" root
exit 1
fi
fi
exit
スクリプトに実行権限付与
sudo chmod +x /usr/local/bin/ddns-update.sh
試しに実行します。最後の1を忘れない。マスターIDと子IDでそれぞれ実行。マスターIDと子IDのパスワードはメールを確認。子の方はもちろん,サブドメインにする。
/usr/local/bin/ddns-update.sh MasterID MasterPassword testtest.pgw.jp 1
/usr/local/bin/ddns-update.sh ChildID ChildPassword mail.testtest.pgw.jp 1
週一で実行するようにcron設定。
sudo vi /etc/cron.weekly/ddns-update
/usr/local/bin/ddns-update.sh MasterID MasterPassword testtest.pgw.jp 1
/usr/local/bin/ddns-update.sh ChildID ChildPassword mail.testtest.pgw.jp 1
スクリプトに実行権限付与。
sudo chmod +x /etc/cron.weekly/ddns-update