MyDNS.JPを使ってタダでドメインをゲットする!
MyDNS.JPというDDNSサービスを使用して、自宅サーバ用のドメインを取得してみました。
DDNSとは?
ダイナミックDNSの略で、その名の通り動的にグローバルIPアドレスとドメインの紐付けができます。
通常webサービスなんかは固定のグローバルIPアドレスを取得し、それにドメインを紐付けます。
しかし、家庭用の光回線では固定IPの取得は難易度が高いです。
そういうときにDDNSが便利です。
仕組みとしては、DDNSサービスのサーバに定期的に現在のグローバルIPアドレスを通知し続けることで、
ドメインに紐づけられているIPアドレスを通知されたIPアドレスに更新し続けます。
このおかげで、もし途中でグローバルIPアドレスが変わってしまっても、変更後のIPアドレスが通知されていればちゃんと名前解決できるというわけです。
やり方
ダイナミックDNS (Dynamic DNS)のMyDNS.JPにアクセスし、ユーザー登録します。
すると、その際に入力したメールアドレスにID/パスワードが送られてきます。
!忘れないように保存してください!
次に、IPアドレスの通知用サーバを用意します。
私の場合は、proxmoxサーバを運用しているので、そこにalmalinuxの専用コンテナを立てました。
そこで以下のシェルスクリプトを作成し、notify_mydnsjp.sh
(名前はご自由に)というファイル名で保存します。
MASTER_ID, PASSWORDの箇所は先ほど届いたID/パスワードを入れてください。
#!/bin/bash
MID=MASTER_ID
PWD=PASSWORD
curl -sS -u $MID:$PWD https://ipv4.mydns.jp/login.html
コマンドchmod +x notify_mydnsjp.sh
を実行し、スクリプトの実行権限を設定します。
./notify_mydnsjp.sh
を実行すると、MyDNS.JPのサーバにIPアドレスが通知されます。
このスクリプトを定期的に実行したいので、cronを使います。
コマンドcrontab -e
でcronの設定ファイルの編集画面に行き、以下の内容を追記します。
0 * * * * sh /root/notify_mydnsjp.sh
これで毎時0分、つまり1時間に1回スクリプトを実行するように設定できました。
コマンドcat /var/log/cron
を実行してログを確認すると、以下のように正しく実行できていることがわかります。
Feb 15 12:00:01 mydnsjp-notifier CROND[2915]: (root) CMD (sh /root/notify_mydnsjp.sh)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (<html>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (<head>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (<title>Free Dynamic DNS (DDNS) for Home Server and VPS etc | MyDNS.JP</title>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (<LINK href="./site.css" rel=stylesheet type=text/css>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT ()
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (</head>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (<BODY BGCOLOR="#FFFFFF")
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT ( TEXT="#304040")
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT ( leftmargin="0" topmargin="0" marginwidth="0" marginheight="0")
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (Login and IP address notify OK.<BR>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (login_status = 1.<BR>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (<BR>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (<DT>MASTERID :</DT><DD>MASTER_ID</DD>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (<DT>REMOTE ADDRESS:</DT><DD>自宅のグローバルIPアドレス</DD>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (<DT>ACCESS DAYTIME:</DT><DD>2025/02/15 12:00:06 UTC</DD>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (<DT>SERVER ADDRESS:</DT><DD>185.229.119.222</DD>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (<BR>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT ()
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (</body>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDOUT (</html>)
Feb 15 12:00:12 mydnsjp-notifier CROND[2903]: (root) CMDEND (sh /root/notify_mydnsjp.sh)
まとめ
MyDNS.JP(DDNS)は手軽にドメインを取得・割り当てできるので非常に便利です。
自宅サーバを運用していて、ドメインを自宅ネットワークに割り当てたいけど、固定IPの取得は厳しい、という方にお勧めです!