トップ  > サーバ設定:運用  > サーバ公開  > ダイナミックDNS(FreeDNS)

ダイナミックDNS(FreeDNS)  (最終更新日:2009/12/01)

動的IPで、独自ドメインを取得していること

ドメインを取得しただけではまだサーバで使用することはできません。自宅のIPアドレス(動的IP)とドメインを紐付けしDNSで検索できて初めて使用できるようになります。この仕組みを提供するのが、ダイナミックDNSです。

ちなみに自分がいま割り当てられているIPアドレスを知りたい場合、アクセス情報 【接続のIPアドレス確認】にアクセスし確認してみてください。

初期設定

今回はfreeDNSのDNSサービスを使用します。使用するメリット①無料、②設定できるレコードの種類が豊富、③IPv6(AAAA)に対応している。デメリット、①海外、②全てが英語なことぐらいです。

1.ユーザ登録

FreeDNSにアクセスします。

左側のメニューの「Domains」を選択。

「Setup an account here」を選択。

使用できる機能の説明が表示されるので一読して、「Sign UP!」を選択。

First Name:(名前)

Last Name:(姓)

UserID:(希望するID)

Password:(任意のパスワード)

Password(confirm):(任意のパスワード確認)

E-Mail:(使用可能なメールアドレス、後で登録確認のメールが来ます)

Type the bolded above,below:画像に表示されている太文字を入力

規約を呼んで同意するにチェックしたら、「Send activation email」を選択。

しばらくしたら、登録したメールアドレスにメールが来るので本文の中にあるリンクを選択。→登録完了

2.ドメインの登録

左側メニューの「Domains」を再度選択し、「UserID:」「Password:」を入力しログイン。

最初は登録されたドメインがないので、ドメインの登録画面になります。ならない場合は「Add a domain」を選択。

画面のイメージが少し違いますが、入力する箇所は同じです。

Domain…取得したドメイン。

Shared State…「Private」を選択。「Public」を選択すると他の人も取得したドメインを使用できるようになってしまうので注意。

name serverが4箇所表示されています。後で必要になるのでコピー又はメモしておきます。

全て入力したら「Submit」を選択。

3.ネームサーバの変更

FreeDNSは一度ログアウトし終了します。その後Yahoo!ドメインに再度アクセスします。

「ドメインコントロールパネル」を選択。

「メンテナンスツール」-「サーバー設定上級者」を選択。

スクロールしていくと、「ネームサーバー変更」があるので変更を選択。

「特定のネームサーバーを指定する」にチェックをし、ネームサーバー1~4に先ほどコピー又はメモしたname serverを4箇所入力します。入力したら変更を選択。

ここまでの設定で誰かが「rx-93dff.net」をDNSへ問い合わせると、「.」から順番にたどっていきFreeDNSサービスのDNSサーバまでは問い合わせが来るところまで出来ました。(この場合FreeDNSのDNSサーバはIPアドレスを返信します)

4.サブドメインの登録

FreeDNSに再度アクセスします。

「Domains」メニューを選択しログインしたら登録したドメインの[Manage]を選択します。

親切にサブドメインが最初からいくつか出来ていますが、自分が必要なものに変更します。

動作確認

ルータとモデムの電源を切り、少し時間を置き電源を入れます。BIGLOBEの場合これでIPアドレスが変化します。

メニューから、「Dynamic DNS」を選択。

サブドメインが表示されるので、どれでもいいので「Direct URL」を選択。

新しいウィンドウが開き、Update x host(s)…と表示されるのを確認。

サブドメインの右側のアドレスが更新されるのを確認。

後で必要になるので「Wget Script」を選択しファイルを1つダウンロードしておきます。

IPアドレスの自動更新

IPアドレスの変化は不定期なため、毎回手動で更新することは困難です。かといって更新しないとサーバにアクセスが出来なくなります。

そこでIPアドレスが変化した際、自動で更新してくれる専用のソフト(FreeDNSでも多数紹介されています)を使用し常にアクセスできるようにします。

今回は「dnsactual.sh」というシェルスクリプトを使用します。

動作確認でダウンロードしたファイルをテキストエディタ(メモ帳)で開き、update.php?の後にある文字列をコピーしておきます。http://freedns.afraid.org/dynamic/update.php?U2NDexxxxxxxxxxxxxxxxxxxxxxxxxxxxTUy

[root@sv ~]# mkdir /etc/freedns ← 設定を保存するディレクトリ作成

[root@sv ~]# touch /etc/freedns/dnsactual.conf ← 最終更新したIPアドレスを保存するファイルを作成

[root@sv ~]# vi dnsactual.sh ← IPアドレス自動更新スクリプト作成
ここから----------
# From http://freedns.afraid.org/scripts/dnsactual.sh.txt
# Modified to work in restricted shell accounts

##############################################################################
#
#  application name: dnsactual
#  other files: dnsactual.conf (keeps the last updated ip)
#               dnsactual.log  (register date & time of the actualization)
#  Author: Ernest Danton
#  Date: 01/29/2007
##############################################################################

if test -f /etc/freedns/dnsactual.conf
  then
  CacheIP=$(cat /etc/freedns/dnsactual.conf)
fi
#echo $CacheIP
CurreIP=$(wget http://freedns.afraid.org/dynamic/check.php -o /dev/null -O /dev/stdout | grep Detected | cut -d : -f 2 | cut -d '<' -f 1 | tr -d " ")
#echo $CurreIP
if [ "$CurreIP" = "$CacheIP" ]
then
  # Both IP are equal
  echo "Update not required..."
else
  # The IP has change
  echo "Updating http://free.afraid.org with " $CurreIP
  wget http://freedns.afraid.org/dynamic/update.php?U2NDexxxxxxxxxxxxxxxxxxxxxxxxxxxxTUy -o /dev/null -O /dev/stdout
  echo `date`  "Updating log with IP " $CurreIP >> dnsactual.log
fi
rm -f /etc/freedns/dnsactual.conf
echo $CurreIP > /etc/freedns/dnsactual.conf
----------ここまで

[root@sv ~]# chmod 700 dnsactual.sh ← IPアドレス自動更新スクリプトへ実行権限設定

[root@sv ~]# echo "0,15,30,45 * * * * root /root/dnsactual.sh > /dev/null" >  /etc/cron.d/dnsactual ← IPアドレス自動更新自動実行設定
0分,15分,30分,45分にIPアドレス自動更新スクリプトを実行