★悩み★
・Dynamic DO!.jpのDNSを定期的に更新する方法を知りたいな。
・手動でDynamic DO!.jpのDNSを更新するのは手間だな。
・PythonでDynamic DO!.jpのDNSを定期的に更新できないのかな。
こういった「悩み」に答えます。
★本記事の内容★
① Dynamic DO!.jpのDNSを定期的に更新する際の注意点をご紹介
② Dynamic DO!.jpのDNSを定期的に更新する方法をご紹介
これからご紹介する「Dynamic DO!.jpのDNSを定期的に更新する方法」を実践したことで、筆者は30分以内でDynamic DO!.jpのDNSを更新できました。
記事の前半では「Dynamic DO!.jpのDNSを定期的に更新する際の注意点」を解説します。
記事の後半では「Dynamic DO!.jpのDNSを定期的に更新する方法」をご紹介します。
この記事を読み終えることで、「Dynamic DO!.jpのDNSを定期的に更新する方法」を把握した状態になります。
ちなみに、Dynamic DO!.jpでDNSを取得する方法は以下の記事をご覧ください。
Dynamic DO!.jpのDNSを定期的に更新する際の注意点
Dynamic DO!.jpのDNSを定期的に更新する際の注意点をご紹介します。
★紹介の流れ★
・Dynamic DO!.jpのDNSにおける利点と欠点
・Dynamic DO!.jpのDNSを定期的に更新する際の注意点
上記の流れでご紹介します。
Dynamic DO!.jpのDNSにおける利点と欠点
Dynamic DO!.jpのDNSにおける利点と欠点に関してご紹介します。
Dynamic DO!.jpを利用することで以下の利点があります。
★Dynamic DO!.jpの利点★
無料でドメイン名を取得できる。
ただし、Dynamic DO!.jpで無料で取得したドメイン名には、以下の制約があります。
★Dynamic DO!.jpの欠点★
(1) 本サービスの提供する無料サービスの提供期間を、登録より最長9か月とします。 ただし、甲より利用期間を別途定められた場合はこの限りとしません。
参照:Dynamic DO!.jpの制約
9ヶ月後には、再度ドメインを取得する必要があります。
以上が、「Dynamic DO!.jpのDNSにおける利点と欠点」になります。
Dynamic DO!.jpのDNSを定期的に更新する際の注意点
Dynamic DO!.jpのDNSを定期的に更新する際の注意点に関してご紹介します。
Dynamic DO!.jpに登録したDNSを定期的に更新する際に以下の注意が必要です。
IPアドレス更新リクエストが毎時00分前後の数秒に集中しております。 サーバ負荷の増大に伴い、その間の更新リクエストが失敗する場合もございます。 自動更新処理は毎時00分を避けるよう設定ください。 みなさまのご協力に感謝申し上げます。
https://ddo.jp/howto.php
上記のように毎時00分前後(例えば、12時01分とか)に更新する方が多いため、その時間帯を避けてほしいとのことです。
★Dynamic DO!.jpに登録したDNSを更新する必要性について★
WordPressを運用しているパソコンのグローバルIPアドレスは、不定期で変わります。
グローバルIPアドレスが変わる例としては、「プロバイダーの機器の再起動」があります。
グローバルIPアドレスが変化するとDynamic DO!.jpのDNSでWordPressにアクセスできなくなります。
上記を避けるために、Dynamic DO!.jpに登録した以下の対応情報を定期的に更新しましょう。
※対応情報:「グローバルIPアドレス」と「kakedashi-xx」の対応情報
以上が、「Dynamic DO!.jpのDNSを定期的に更新する際の注意点」となります。
Dynamic DO!.jpのDNSを定期的に更新する際の注意点を理解しておきましょう。
Dynamic DO!.jpのDNSを定期的に更新する方法
Dynamic DO!.jpのDNSを定期的に更新する方法をご紹介します。
★ご紹介の流れ★
ステップ1:Dynamic DO!.jpのDNSに登録するグローバルIPを自動取得
ステップ2:Dynamic DO!.jpのDNSを自動で更新
ステップ3:Dynamic DO!.jpのDNSを定期的に更新
上記の流れで、「Dynamic DO!.jpのDNSを定期的に更新する方法」をご紹介します。
Dynamic DO!.jpのDNSを定期的に更新する方法を作成するにあたり、以下の情報が役に立ちました。
4.IPアドレスの自動更新
https://ddo.jp/howto.php
定期的に自動で更新するには、 HTTPクライアントから下記URLを読み込んでください。
https://ddo.jp/dnsupdate.php?dn=ドメイン&pw=パスワード &ip=xx.xx.xx.xx
(無料サービスの場合は http://free.ddo.jp/……)
ひとまず、以下の3つの情報があれば、自動で更新できそうですね。
1:ドメイン名
2:パスワード
3:グローバルIPアドレス
ステップ1:Dynamic DO!.jpのDNSに登録するグローバルIPを自動取得
Dynamic DO!.jpのDNSに登録するグローバルIPを自動取得する方法をご紹介します。
下記コマンドを実行することで、現在のグローバルIPアドレスを取得できます。
パターン1
curl inet-ip.info
XXX.XXX.XXX.XXX
パターン2
curl http://httpbin.org/ip
{
"origin": "XXX.XXX.XXX.XXX"
}
パターン3
curl globalip.me
XXX.XXX.XXX.XXX
今回は、パターン2を使います。
パターン2の利用を決めた理由としては、json形式のデータで返却されるのでプログラム的に扱いやすそうだと考えたためです。
以上で、「ステップ1:Dynamic DO!.jpのDNSに登録するグローバルIPを自動取得」は完了です。
ステップ2:Dynamic DO!.jpのDNSを自動で更新
Dynamic DO!.jpのDNSを自動で更新する方法をご紹介します。
Pythonのインストール
Pythonを利用することでDynamic DO!.jpのDNSを自動で更新することができます。
以下の記事を参考にし、お使いのパソコンやサーバーにPythonをインストールしましょう。
>> 【ubuntu向け】pyenvでPythonをインストールする手順【簡単】
>> 【コピペOK】pyenvでPythonをインストールする手順【Linux用】
>> 【最短5分】PyAutoGUIをWindowsにインストールする手順の「手順1:Pythonのインストール」を参照
>> 【環境構築】インストーラーでMacOSにPythonをインストール
既にPythonをインストール済みである場合、本工程は省略してください。
Dynamic DO!.jpのDNSを自動で更新するPythonプログラム
次に、Dynamic DO!.jpのDNSを自動で更新するPythonプログラムを作成します。
現在のグローバルIPアドレスを取得し、Dynamic DO!.jpのDNSを更新するスクリプトは、以下になります。
import requests
## 設定
dns = "<Dynamic DO!.jpで取得したドメイン名を指定してください>" # ドメイン名を設定
pw = "<Dynamic DO!.jpで登録したパスワードを指定してください>" # パスワードを設定
ip = None # グローバルIP格納用
## グローバルIPを取得
response = requests.get('http://httpbin.org/ip')
status_code = int(response.status_code)
if status_code == 200: # 正常に取得できた場合
ip = response.json()["origin"] # グローバルIPを格納
else:
print("[ERROR] Failed getting ip")
exit()
## ドメイン名を更新
headers = {
'Connection': 'keep-alive',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36',
'Origin': 'null',
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Language': 'ja,en-US;q=0.9,en;q=0.8,ko;q=0.7,pt;q=0.6',
}
data = {
'dn': dns,
'ip': ip,
'pw': pw
}
response = requests.post('http://free.ddo.jp/dnsupdate.php', headers=headers, data=data, verify=False)
status_code = int(response.status_code)
if status_code == 200: # 正常に更新できた場合
text =response.text
if "SUCCESS" in text:
print(text)
print("[INFO] SUCCESS")
else:
print("[ERROR] Failed")
else:
print("[ERROR] Failed")
上記をコピーし、ファイルテキストにペースとし、「update-dynamic-dns.py」という名前で保存します。
その後、以下のコマンドを実行するために、「端末」ソフトウェアを起動します。
「端末」ソフトウェア上で、以下のコマンドを実行し、以下のように「[INFO] SUCCESS」が表示されることを確認します。
表示されれば、正しくドメインが更新できていることになります。
$ python update-dynamic-dns.py
[INFO] SUCCESS
<html><body>
<a href="http://ddo.jp/">Dynamic DO!.jp</a><br>
SUCCESS:<ドメイン名> <= [ <グローバルIP> ]<br>
IPアドレス更新完了<br>
2020/08/08 08:02:21<br>
<input type="button" value="閉じる" onclick="window.close();">
</body></html>
[INFO] SUCCESS
以上で、「ステップ2:Dynamic DO!.jpのDNSを自動で更新」は完了です。
ステップ3:Dynamic DO!.jpのDNSを定期的に更新
Dynamic DO!.jpのDNSを定期的に更新する方法をご紹介します。
定期的に更新するために、「Cron」を利用します。
「Cron」を使うことで、「毎日、12時15分にDynamic DO!.jpに登録したDNSを更新する」といったことが「自動」でできます。
以下のコマンドを実行することで、Cronに登録することができます。
# crontab -e
記述する形式は、以下になります。
分 時 日 月 曜日 コマンド
項目 | 値 |
分 | 0~59の範囲の数字を記入します。「*」を使うと、毎分となります。 |
時 | 0~23の範囲の数字を記入します。「*」を使うと、毎時となります。 |
日 | 1~31の範囲の数字を記入します。「*」を使うと、毎日となります。 |
月 | 1~12の範囲の数字を記入します。「*」を使うと、毎月となります。 |
曜日 | 0~7の範囲の数字を記入します。(0が日曜日) 「*」を使うと、全曜日となります。 |
コマンド | 自動で実行したいコマンドを入力します。 |
上記の形式に従い、今回は以下のようにCronへ登録します。
# crontab -e
28 8 * * * /root/.pyenv/shims/python /root/blog/update-dynamic-dns.py > /tmp/cron.log
上記のように登録することで、「毎日、8時28分に自動的にDynamic DO!.jpのDNSをを更新し、Successなどの情報が/tmp/cron.logに出力される」ようになります。
※/root/.pyenv/shims/pythonに関しては、お手元のマシンで「which python」の実行結果に置き換えてください。
以上で、「ステップ3:Dynamic DO!.jpのDNSを定期的に更新」は完了です。
上記の3ステップで、「Dynamic DO!.jpのDNSを定期的に更新」を実現できました。
【まとめ】Dynamic DO!.jpのDNSを定期的に更新する方法
今回の記事を通して、「Dynamic DO!.jpのDNSを定期的に更新する方法」をご紹介することで、以下の悩みを解消しました。
★悩み★
・Dynamic DO!.jpのDNSを定期的に更新する方法を知りたいな。
・手動でDynamic DO!.jpのDNSを更新するのは手間だな。
・PythonでDynamic DO!.jpのDNSを定期的に更新できないのかな。
「Dynamic DO!.jpのDNSを定期的に更新する方法は?」で悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。
コメント