ドメイン取得からDDNS設定までの続きです。
↑の記事でドメイン取得後DDNS(MyDNS)の設定を行ったはいいが、
インターネットプロバイダーによっては頻繁にグローバルIPアドレスが変更されてしまいます。
グローバルIPアドレスが変更されてしまった場合は、
再びDDNSに設定を反映させる必要があります。
しかし、毎回DDNSの設定を手動反映させるのは面倒ですよね。。。
そこで、cronを使って定期的にDDNSの設定を反映させる方法を紹介します。
DDNSに設定を反映させるためのスクリプト作成
スクリプトの中身はものすごいシンプル!
UserIdとPasswordを自分のものに変更してwgetで投げるだけでOK。
$ mydns_update.sh
#!/bin/sh
#
# update ddns
#
# MyDNS
wget -O - --http-user=hogehoge --http-password=fugafuga http://www.mydns.jp/login.html
↑で作成したスクリプトの動作確認
下記のようなスクリプト結果が得られ、MyDNSの「LOG INFO」を確認して更新されていることを確認。
# ./mydns_update.sh
--YYYY-MM-DD HH:MM:SS-- http://www.mydns.jp/login.html
www.mydns.jp (www.mydns.jp) をDNSに問いあわせています... 199.180.255.198, 210.197.74.203, 103.11.143.116, ...
www.mydns.jp (www.mydns.jp)|199.180.255.198|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 401 Authorization Required
www.mydns.jp:80 への接続を再利用します。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 614 [text/html]
`STDOUT' に保存中
0% [ ] 0 --.-K/s <html>
<head>
<title>Free Dynamic DNS (DDNS) for Home Server and VPS etc | MyDNS.JP</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<LINK href="./site.css" rel=stylesheet type=text/css>
</head>
<BODY BGCOLOR="#FFFFFF"
TEXT="#304040"
leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"
>
Login and IP address notify OK.<BR>
login_status = 1.<BR>
<BR>
<DT>MASTERID :</DT><DD>hogehoge</DD>
<DT>REMOTE ADDRESS:</DT><DD>XXX.XXX.XXX.XXX</DD>
<DT>ACCESS DAYTIME:</DT><DD>YYYY/MM/DD HH:MM</DD>
<DT>SERVER ADDRESS:</DT><DD>XXX.XXX.XXX.XXX</DD>
<BR>
</body>
</html>
100%[=======================================================================================================>] 614 --.-K/s 時間 0s
YYYY-MM-DD HH:MM:SS (63.5 MB/s) - stdout へ出力完了 [614/614]
cronで定期的に更新されるようにする
cronで定期的に更新できるようにするとは言っても、
1日に何百回もリクエストするとアクセス制限をかけられてしまうらしい。
※私は1時間に1回動かしていますが、アクセス制限にひっかかっていないので24回/1日は大丈夫そうです。
以下にcronの設定を記載いたします。
# mydnsの更新(1時間に1回)
# スクリプトのパスは/root/mydns_update.shとした
0 * * * * /root/mydns_update.sh >/dev/null 2>&1
これでグローバルIPが変わった場合でも1時間以内にDDNSに設定を反映させてくれるようになります。
もし、すぐに反映させたい場合はスクリプトを即時実行しましょう。