since 2002/01/01
lastupdate 2003/01/16
   

家サーバ構築ガイド - ダイナミックDNS

さてサーバの準備が整ったらダイナミックDNSへの登録を行いましょう。 ダイナミックDNSを利用することで簡単に自宅サーバを公開することができるようになります。
当サーバもこのダイナミックDNSサービスを利用することで http://koano.jp/ というドメインを利用できるようになっています。

また、ここでは Dynamic DO!.jp によるダイナミックDNSについて説明していますが、 ドメインレジストラでもダイナミックDNSに対応している所もあるようなので、こちらもお勧めです。
実際、koano-net.ddo.jp ドメインは DDO によるダイナミックDNS ですが、 koano.jp は マイドメインレジストリサービス の無料サービスでダイナミックDNSをしてもらっています。 もちろん、そのレジストラでドメインを管理してもらわなければいけませんが...

ダイナミックDNSサービスについて

さて、ダイナミックDNS(DDNSと略)とは、プロバイダで割り当てられる動的なグローバルIPアドレスを、 一意なドメイン名でアクセスできるようにする仕組みで、サーバのIPアドレスが変っても (回線の切断などで再接続した場合など) 登録ドメインのIPアドレスを更新すればいつでも同じドメインで サーバへアクセスできる仕組みです。

DDNSの一番良いところは、ドメイン取得にかかる費用が少ないということです。 有料DDNSサービスにおいても固定IPによるドメイン取得に比べれば微々たる物です。
ただし、サービス提供サーバが落ちたり、再接続したりした場合にはサービスを受けられなくなる場合もあり、 多少不安定なサーバとなりますが、家サーバ用途としては、十分だと思います。

サービスの選択

DDNSサービスを提供しているサイトはいろいろあります。有料のところもあれば無料のところもあり、それぞれ特徴があるようです。
当サーバは Dynamic DO!.jp を利用しています。 ここは無料でDDNSサービスを提供しており、オフラインモードにも対応しています。もちろん日本のサイトです。
実際、DDNSサービスを行ってくれるところならどこでも良いのではないでしょうか? 私がddoに決めた理由は、無料であることと、ドメインが簡単という理由です。 Dynamic DO!.jpの場合のドメインは、 http://ドメイン.ddo.jp となります。
どこを利用するか決まったら、サイトの注意書きなどをよく読んでドメインの登録を行いましょう。
尚、このページではddoを利用する前提で記述しています。

サーバへのアクセステスト

実際にサービスに登録したら、ドメインが生きているかテストして見ましょう。
ddoに登録した場合、サーバプロファイルというサービスがありますのでこれを利用します。
これは、登録したドメインのサーバに対しいくつかのポートにアクセスできるか調べてくれるもので、 サーバがインターネットからアクセスできるかわかります。
とりあえず実行してみましょう。結構時間がかかるので、クリックしたらほっときましょう(^^
しばらくすると結果が表示されます。応答あり、となっているサーバがインターネットからアクセスできることになります。 httpが応答ありになっていますか?これに反応がないと始まりません。 逆にtelnetなどに応答ありの場合はセキュリティを見直したほうが良いでしょう。

サーバプロファイルで予定通りの結果が出ればサーバへインターネットからアクセスできます。

回線の切断対策と自動化

さて、当サーバはフレッツISDNでインターネットに接続していますが、 フレッツISDNは常時接続を保障していません。 要するに、何らかの原因で勝手に回線が切れてしまう可能性がある、 ということです。
これはDDNSを利用しているものにとっては非常に大きな問題です。
なぜなら、動的にIPアドレスが振られるため、必ずしも前回と同じIPアドレスになるとは限らないからです。 同じ場合もありますが...
また、サーバクラッシュなどにでも回線が切断されることもあるので、 自動的に再起動した場合の対策も含めて考えておく必要があります。

具体的には、ddoに対し定期的にIPアドレスの更新を行うようにします。 この処理にはcron及びシェルスクリプト、及びwgetというプログラムを使います。 まぁ、実際には他にも方法はたくさんあるので参考程度にお考えください。

IP自動更新スクリプトの作成
IPアドレスを更新するスクリプトを適当な場所に作成します。 サンプルはこちら( ddoupdate.txt )
実際私はシェルスクリプトには詳しくありませんので、公開しているのは非常に恥ずかしいのですが、参考程度、ということで(^^;;;
簡単に言えば、ddoのホームページでIPアドレスを更新するときと同じアドレスにアクセスすれば、 IPアドレスの更新が行われます、また、実際に更新が成功しているかどうかを後半で判断しており、 結果をログファイルに保存しています。

処理の自動化
実際こんなことを手動でやっていたのでは埒があきませんので、 cronを使ってサーバに勝手にやらせるようにします。
(cronの設定についてはまた今度書きます(^^;;;)
とりあえず、あんまり頻繁にしてもなんなんで、1時間に1回くらいで良いのではないでしょうか? とりあえず、以下のコマンドで cron の設定モードに入ります。

$ crontab -e

そうすると何かしらのエディタが動きますので、そこに次のような1行を書き込みます。

5 * * * * /スクリプトへのパス/ddoupdate.sh > /dev/null 2>&1

これを保存すれば cron に登録され、この場合だと毎時5分にIPアドレスの更新を行います。 また、サーバ起動時にも読み込み実行するようにしておくとなおさら良いでしょう。
尚、ddo.jp でも掲示されているように、毎時ジャストにはIP更新が集中しますので、 できれば前後何分かずらしておきましょう。サーバ負荷の集中が減れば、それだけ自分たちが 受けているサービスの安定稼働が望めますので。
それはさておき、現在のスクリプトではちと幼稚なので、新しいバージョンを考案したいと思っています(^^;;;