MyDNS.JPにIPアドレスを通知する方法

グローバルIPアドレスが変動でインターネットプロバイダ(以下、プロバイダ)と契約している場合、光回線終端装置(ONU)を再起動したりするタイミングで、グローバルIPアドレスが変わってしまうことがあります。

プロバイダによっては、オプションで固定IPアドレスを利用できる場合もありますが、月額1,000円程追加で掛かってくるケースが多いです。

自宅サーバを構築していてインターネットからアクセスできるようにしたいケースにおいて、グローバルIPアドレスが変わってしまうと、ドメイン名から新しく割り当てられたグローバルIPアドレスを引けなくなってしまので、インターネットから自宅サーバーアクセスできない。という事態が発生します。

そこで、グローバルIPアドレスが変わってしまったとしても、瞬時に追随してDNS情報を更新するサービスとして、ダイナミックドメインネームシステム(以下、DDNS)があります。

ルーターを製造しているメーカーが、同社のルーター利用者向けに独自のDDNSを提供している場合もあります(※)が、今回は誰でも利用できるDDNSであるMyDNS.JP(以下、MyDNS)を利用する方法を紹介します。

自宅サーバを構築してインターネットからアクセスできるようにしたいが、IPアドレスが変動だが、DDNSの利用方法がわからない。という方向けの記事になります。

※ルーター製品利用者向けのDDNSサービス

  • YamahaのネットボランチDNSサービス
  • Buffaloのバッファロー・ダイナミックDNSサービス
目次

MyDNS.JPに登録する

早速、MyDNSを利用するために、MyDNSにドメインを登録しましょう。

まずは、MyDNSのWebページ(https://www.mydns.jp) にアクセスします。

ユーザ登録

MyDNSのWebページ(https://www.mydns.jp

右上の「JOIN US」ボタンを押して、画面の案内に従って登録を進めます。

ログイン

MasterID / Password を入力してログイン

MasterIDとPasswordがメールで通知されるので、画面に入力して「LOG IN」ボタンを押します。

MasterIDとPasswordは覚えにくい文字列で変更もできないので、どこかに控えておくか、メールが消されないように気を付ける必要があります。

DNSレコードを登録

続いて、DNSレコードを登録します。

「DOMAIN INFO」をクリックして、DNSレコードを登録する画面を開きます。

利用したいドメイン名を入力して「CHECK」ボタンを押します。

(独自ドメインを利用する場合)ネームサーバにCNAMEレコードを追加する

独自ドメインを利用したい場合は、ネームサーバにMyDNSのドメインに向けたCNAMEレコードを追加します。

お名前.comの場合

上記のリンクを参考にCNAMEレコードを設定します。

お名前.comのネームサーバには、ホスト名なしのルートドメインにCNAMEレコードを設定することができません。
ルートドメインを使いたい場合は、別のネームサーバを利用するように設定する必要があります。

CloudFlareの場合

上記のリンクを参考にCNAMEレコードを設定します。

グローバルIPアドレスを通知するスクリプトを準備する

MyDNSにGETリクエストを送信するだけで、IPアドレスを通知できます。

安直な方法

LinuxやMacの場合は、以下のシェルスクリプトを動かすだけです。MYDNS_USERやMYDNS_PASSWORDは適宜自身のものに置き換えてください。

#!/bin/sh

wget -O - http://${MYDNS_USER}:${MYDNS_PASSWORD}@www.mydns.jp/login.html

このシェルスクリプトをcronに登録して定期実行します。

このシェルスクリプトをcronに登録して、定期実行してもよいのですが、いくつか改善すべき点があります

  1. グローバルIPアドレスが変わったときにだけ、MyDNSに通知するだけで十分
  2. MyDNSのユーザIDやパスワードを平文のまま管理するのか
  3. シェルスクリプトの実行結果のログを確認するにはどうするか
  4. cronジョブに登録してしまうと、ジョブの存在がいつか忘れ去られる恐怖
  5. シェルスクリプトのソースが失われたら、どうするのか(1行だけなので、今回においては失われても良いかも)
  6. 実行環境がOSやライブラリ(wget)依存になってしまっているが、どの環境でも動かせるようにできないか
  • グローバルIPアドレスが変わった時だけMyDNSに通知するようにプログラムを修正します(1に対応)
  • Jenkinsでジョブ管理してみます(2/3/4に対応)
  • バージョン管理(Github)でソースコードを管理してみます(5に対応)
  • ジョブ自体をコンテナイメージ化して、Dockerの実行環境があればどこでも実行できるようにします(6に対応)

改善Verについては、別の記事でご紹介することとします。随時こちらにリンクを貼るので、興味ある方はご覧になってください。

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
目次