独自ドメインで無料ダイナミックDNS(MyDNS)を利用する方法

お名前.comで取得した独自ドメインの無料ダイナミックDNS(MyDNS)を利用して、固定回線(NTT系の光フレッツ光や電力系の光回線)経由で自宅サーバーを外部に公開する方法を解説。

VPSサーバーや固定IPを取得している環境では、お名前.com等からドメインを取得して固定IPアドレスを設定するだけで外部公開が簡単にできますが、VPSサーバー、AWS、固定IPの利用は月額料金が発生します。低価格で外部公開する方法として自宅に設置した固定回線を利用して、宅内サーバーを外部公開する方法があります。※実質 ドメイン維持費(年間)+回線代(月額)+サーバーの電気代(月額)

MyDNSを利用することで、ドメインも無料で取得することができますが、サービスがいつクローズするかわからないなどのリスクも存在します。永続的にドメイン名を使用できるとは限りません。

そこで、独自ドメインを取得して、かつダイナミックDNS(MyDNS)と連携させることで月額費用を抑えつつサーバーを外部公開することができます。最悪、MyDNSのサービスがクローズしても、ドメイン名はそのままで、低価格なVPSサーバーに乗り換えることができますので、将来の環境変化に柔軟に対応することができます。

VPSサーバもメモリが8GB以上や4コア以上などのスペックが高くなってくると、月額3,000円以上します。また、他者とリソースを共有するため、特にストレージのI/Oが引っ張られたりし処理速度が安定しなかったりします。

手順

前提条件:ドメインは取得済み、ネットワーク環境は東西NTT系の光フレッツや電力系の光回線など。また、サーバーはLinuxを想定しています。

  1. お名前.comのDNSサーバーの変更
  2. MyDNSにお名前.COMで取得したドメインの設定
  3. LinuxサーバーからMyDNSへグローバルIPの通知

お名前.comのDNSサーバーの変更

お名前.com Naviログイン

ログイン情報を入力してログインします。

ログイン画面

お名前.comのNaviログイン画面

ネームサーバー設定

ネームサーバーの設定を押します。メニューが展開されたら「ネームサーバーの設定」を押します。

お名前.comのNavi画面
  1. ネームサーバー設定を変更する対象のドメイン名にチェックを入れます。(①)
  2. その他のサービスタブを選択します。(②)
  3. ネームサーバー1からネームサーバー3に、「ns0.mydns.jp」、「ns1.mydns.jp」、「ns2.mydns.jp」(③)と入力します。
お名前.comのネームサーバー設定変更画面

入力が終わったら「確認」ボタンを押します。

確認

お名前.comのNavi画面-ネームサーバーをMyDNSのネームサーバーを指定

入力内容を確認して、「OK」ボタンを押します。お名前.COMのネームサーバーからMyDNSネームサーバーに切り替わるまで、24時間から72時間ほどかかります。私が試したときは、10時間程度で反映しました。

設定完了

設定が完了すると、赤枠が示すように現在のネームサーバー情報がその他に変更されます。

お名前.comのNavi画面-ネームサーバーをMyDNSのネームサーバーを指定

MyDNS.JP

MyDNS.JPの設定方法を記載します。

Join Us」からMyDNSのアカウントを作成します。

必須項目を入力します。(赤枠)入力後に確認ボタンを押します。

MyDNS Join US画面

「ユーザー登録が完了しました。」メールが送られてきます。メール本文にログインするためのIDとパスワード(赤枠)が記載されていますので、紛失しないように保管しておくと良いでしょう。

MyDNSユーザー登録メール

こちらのページからログインします。

ログイン後に、「DOMAIN INFO」を押します。

※お名前.comのネームサーバーに設定した値は、赤枠部分に記載があります。

MyDNS Domain Info画面

Domain欄に、お名前.COMで取得した独自ドメイン名を入力します。(①)MX(FQDN)は自動的に値が入力されます。

Hostname欄に*(アスタリスク)を入力します。(②)最後に確認ボタンを押します。

MyDNS Domain Info画面 FQDN欄

MyDNSの設定はこれで完了です。

LinuxサーバーにグローバルIPの通知スクリプトを設置する

MyDNSへはHTTPSプロトコルを使用して、BASIC認証でログインすることで、そのサーバーが属しているネットワークのグローバルIPが通知される仕組みです。(ログインした時の接続元IPアドレスを取得している)自宅サーバーを設置する場合、多くが光フレッツやコミュファ光などのインターネット回線を設置しているかと思います。

一般的には、ルーターが設置されており、複数のパソコンやスマートフォンが接続されている環境が多いです。自宅サーバーを設置する場合、ルーターが受けたパケットをサーバーにポートフォワード(転送)するかDMZ層にサーバーを設置して全パケットを転送する方法がとられます。

その場合、プロバイダーから払い出されたIPが動的に変わるので、IPアドレスを定期的にMyDNSへ通知する必要があります。

下記スクリプトは、5分間隔でIPアドレスを通知するスクリプトです。

スクリプトを任意のファイル名でLinuxサーバーに保存します。ここでは、/home/ユーザー/sh/mydns.shに保存しています。

#!/bin/sh
curl https://ipv4.mydns.jp/login.html -u MyDNSユーザーID:パスワード

cronで定期的に自動実行します。通知頻度は、10分から5分(個人の感覚)が良いかと思います。公式サイトにも記載がありますが、あまりに短い間隔で通知すると受ける側のサーバーが負荷に耐えられなくなるので、特段の事情がない場合は、5分から10分程度にしておきます。

$ crontab -e
#↓ 5分間隔でIPアドレスの通知を行います。
*/5 * * * * sh /home/ユーザー名/sh/mydns.sh
#:wp!で保存

cronが正常に動作しているかcronのログで確認します。/var/log/cronを「tail -f」コマンドで監視しておきます。「(Login and IP address notify OK.)」というメッセージと「(REMOTE ADDRESS:xx.xxx.xx.xx)」にゲートウェイのIPアドレス(プロバイダーから払いだされているWAN側のIPアドレス)が表示されれダイナミックDNSの確認は終わりです。

[root@localhost sh]# tail -f /var/log/cron 

Jun  1 21:40:09 localhost CROND[250192]: (suna) CMDOUT (Login and IP address notify OK.<BR>)
Jun  1 21:40:09 localhost CROND[250192]: (suna) CMDOUT (login_status = 1.<BR>)
Jun  1 21:40:09 localhost CROND[250192]: (suna) CMDOUT (<BR>)
Jun  1 21:40:09 localhost CROND[250192]: (suna) CMDOUT (<DT>MASTERID :</DT><DD>mydns470338</DD>)
Jun  1 21:40:09 localhost CROND[250192]: (suna) CMDOUT (<DT>REMOTE ADDRESS:</DT><DD>xx.xxx.xx.xx</DD>)
Jun  1 21:40:09 localhost CROND[250192]: (suna) CMDOUT (<DT>ACCESS DAYTIME:</DT><DD>2022/06/01 12:40:05 UTC</DD>)
Jun  1 21:40:09 localhost CROND[250192]: (suna) CMDOUT (<DT>SERVER ADDRESS:</DT><DD>81.4.109.51</DD>)
Jun  1 21:40:09 localhost CROND[250192]: (suna) CMDOUT (<BR>)
Jun  1 21:40:09 localhost CROND[250192]: (suna) CMDOUT ()
Jun  1 21:40:09 localhost CROND[250192]: (suna) CMDOUT (</body>)
Jun  1 21:40:09 localhost CROND[250192]: (suna) CMDOUT (</html>)

最後に、名前解決(IPアドレスとドメイン名が紐づけ)されているか、PCから確認します。

キーボードの「windowsキー+R」を押します。ファイル名を指定して実行で、cmdと入力してエンターキーを押します。

ファイル名を指定して実行

dosプロンプトから「nslookup ドメイン(xxxxx.comなど)」を入力してエンターキーを押下します。IPアドレスが表示されます(赤枠)ので、これがルーターのゲートウェイアドレスと同様であれば、あなたの独自ドメインはインターネット世界で認識されています。

nslookupコマンド以外にも、pingコマンドでもIPアドレスを調べることができます。

ping xxxx.com

ルーターのWAN側のIPアドレスは、確認くんというサービスでも確認することができます。