自宅サーバーを公開してみました。 とはいってもグローバルIPは1アドレス年間1万以上するので、ちょっと敷居が高い。 そこでダイナミックDNSを遣って公開することにしました。

ダイナミックDNSとは

一般家庭でネットに接続している方はどこかのプロバイダと契約していると思うのですが、ネットにつないでいる以上、プロバイダからグローバルIPが割り当てられています。原理的には此のIPアドレスを打てば、グローバルIPがなくても、外から自宅のサーバーにつなぐ事が可能です。 問題は、時折此のIPアドレスが変わってしまう事です。 此のIPを固定に出来れば問題はないのですが、別の方法も有ります。ドメイン(hoge.example.comのような文字でIPを表す)をDNS(ドメインとIPアドレスを結びつけるサービス)に登録して、IPアドレスが変わる度に更新してあげれば良いわけです。 それがダイナミックDNSです。 無料でサービスを公開しているところもありますので、こちらのサイトを参考にしてみてください。

ダイナミックDNSに登録

今回はDynDNSというサイトを使うことにしました。 リンクをたどるとDynDNSのホームページが開くと思いますが、サイト右上のCreate Accountをクリックして、必要な項目を入力してアカウントを作成してください。といっても名前とメールアドレスとパスワードと希望するドメイン位なので、非常に簡単です。 Create Accountボタンを押したら、登録確認メールが来るまで待ちましょう。 登録確認メールが来たら、一番上のリンクをクリックしてアカウントをアクティブにします。 そのあと、トップページから先ほど登録したアカウントとパスワードでログインしてください。 ログインしたら左側のメニューにあるMyServiceをクリックして、Host Level Servicesの横にあるAdd Host Servicesをクリック。 追加画面でDynamicDNSを登録してドメインを作成してください。 以上でDDNSの設定は終わりです。自分が使っているグローバルIPは自動的に取得してくれます。

DiCEでDDNSの自動更新

DDNSは登録したものの、自宅サーバーのグローバルIPが変わった場合に通知するソフトが必要です。 DiCEや、ddclientが有名ですが、今回はDiCEをFedora Coreで使ってみます。 こちらから最新版をダウンロードしてLinux版をダウンロードします。適当なフォルダで解答してください。 DiCEを起動します。
# ./DiCE/diced
対話モードに入るのでコマンドを入力して行きます。 わからなくなったらとりあえず"?"を入力しましょう。
:?
*** 起動オプション ***

diced [-s|-d|-h|-e] [-b] [-l]

 -s           起動と同時に開始します
 -d           起動と同時にバックグラウンドで開始します
 -h           コマンドオプションを表示します
 -b           イベント実行時にビープ音を鳴らします
 -l           ログを作成します
 -e  指定のイベントを実行して終了します


*** コマンド一覧 ***

exit             DiCEを終了します
start            DiCEを開始します
startd           DiCEをバックグラウンドで開始します
setup            DiCEの環境設定を行います
list             登録済のイベント一覧を表示します
add              イベントを追加します
ed[it] <番号>    イベントを編集します
del <番号>       イベントを削除します
en[able] <番号>  イベントを有効にします
dis[able] <番号> イベントを無効にします
ev[ent] <番号>   イベントの情報を表示します
ex[ec] <番号>    イベントを今すぐ実行します
logcr            ログをクリアします

:add
新しくイベントを追加します

DynamicDNSサービス名を入力してください
"?"で対応しているサービスを一覧表示します
(P)戻る
対応しているサービスを表示してみる
>?
            ZoneEdit               unicc             MyIP.US               DtDNS
             BIGLOBE                dnip              Now.nu         StaticCling
              theBBS                ysdn          Netservers                dyns
              Dynamx             GetmyIP          onamae.com               IPDYN
                  yi           my-domain            MyDNS.JP              JPN.ch
              instat         VALUEDOMAIN            cheapnet              Dyn.ee
              DNS2Go              dyndns              @nifty            SelfHOsT
             ddns.ca           ZENNO.COM                 p2p             miniDNS
            MyServer                todd               Earth              ddo.jp
            livedoor                 dhs            ieServer           dynDNS.it
 
=================================================
新しくイベントを追加します

DynamicDNSサービス名を入力してください
"?"で対応しているサービスを一覧表示します
(P)戻る
>dyndns
-------------------------------------------------
<< dyndns.org >>
URL: http://www.dyndns.org/
*** 情報 ***
dyndns.orgのオプションについて
「オフライン」オプションは、
dyndns.orgドナー登録者のみ利用できます。
=================================================
ドメイン名を入力してください
"?"でドメイン一覧を表示します
(P)戻る
ドメイン一覧を表示
>?
          dyndns.org          homeip.net              ath.cx            itacs.to
        dnsalias.net        dnsalias.org         dyndns.info           dyndns.tv
           dyndns.ws         homedns.org         homeftp.net         homeftp.org
       homelinux.com       homelinux.net       homelinux.org        homeunix.com
        homeunix.net        homeunix.org       kicks-ass.net       kicks-ass.org
        serveftp.net        serveftp.org
=================================================
ドメイン名を入力してください
"?"でドメイン一覧を表示します
(P)戻る
Dynamic Network Services(DynDNS.org)で設定したドメインを入力
>homelinux.com
=================================================
ホスト名を入力してください
(P)戻る
ホスト名を入力
>hoge
(このホスト名とドメイン名をくっつけたものがDNSです)
=================================================
ログインユーザ名を入力してください
(P)戻る
(DynDNSのログインするユーザ名を入力します)
>xxxxxxxxxx
=================================================
ログインパスワードを入力してください
(P)戻る
(DynDNSのログインパスワードを入力)
>xxxxxxxxxx
=================================================
登録するIPアドレスを入力してください
空白にすると現在のIPアドレスを自動検出します
(P)戻る
IPアドレスを自動検出させる為何も入力しない
>
=================================================
このイベントに題名を付けてください
(P)戻る
何でもかまいません。分かりやすいイベント名を入力します
>DynDNS_Update
=================================================
このイベントを実行するスケジュールを設定します
-------------------------------------------------
実行する頻度を指定してください (番号入力)
(0)1回のみ (1)1日1回 (2)1週間に1回 (3)1ヵ月に1回
(4)その他の周期 (5)IPアドレス変化時 (6)起動時
(P)戻る
> 5
-------------------------------------------------
IPアドレスがあまり変化しない環境の場合、更新せずに一定期間を過ぎると
アカウントを削除されてしまうことがあります
IPアドレスの変化が無い時に実行する間隔を指定してください
(0)7日毎   (1)14日毎  (2)21日毎  (3)28日毎
(4)35日毎  (5)56日毎  (6)84日毎
(P)戻る
> 0
=================================================
詳細オプションを設定します
-------------------------------------------------
[ ワイルドカード ]
(0)OFF (1)ON
番号>1
ワイルドカード(www)を有効にすることにより、「www.linux.homeip.net」になります
-------------------------------------------------
[ メールエクスチェンジャ ]
入力>
-------------------------------------------------
[ バックアップMX ]
(0)NO (1)YES
番号>0
-------------------------------------------------
[ オフライン ]
(0)NO (1)YES
(0)NOを選択
番号>0
-------------------------------------------------
[ システム ]
(0)dyndns (1)statdns (2)custom
番号>0
=================================================
このイベントを有効にしますか? (Y/N)
(イベントの有効/無効は"EN/DIS"コマンドで切替えられます)
有効にする
>y
=================================================
イベントを保存しますか? (Y/N)
保存する
>y
イベント"DynDNS_Update"を保存しました
=================================================
:

イベントリストを表示
:list
(No.)   (イベント名)                   (スケジュール)             (次回予定)
  0 *  DynDNS_Update               IPアドレス変化時 (7日毎)    02/28 21:14
イベント詳細を表示
:ev 0
-------------------------------------------------
[イベント名        ] DynDNS_Update
[状態              ] 有効
[DNSサービス       ] dyndns
[更新ホスト        ] hoge.homelinux.com
[ユーザ名          ] xxxxxxxxxx
[IPアドレス        ]
[スケジュール      ] IPアドレス変化時 (7日毎)

[次回更新日時      ] 2005年2月21日、21:14:06
[最終実行日時      ] 1899年12月30日、0:00:00
[最終更新IPアドレス] *
[最終更新結果      ] コマンドが実行されました
(ID:000000)
-------------------------------------------------

:exit
さて、自動的にIP更新にしてもIPがとれない方もいるかもしれません。 私がそうでした。 そこで、設定をもう一つします。
# ./DiCE/diced
:setup
IPアドレスの検出方法を指定してください
(0)自動検出
(1)ローカルのネットワークアダプタから検出
(2)外部のスクリプトから検出
>2
------------------------------------------------
スクリプトのURLを入力してください
(www.ugtop.comの確認くんを使わせていただきます。)
>http://www.ugtop.com/spill.shtml
------------------------------------------------
プライベートIPアドレスも検出対象ですか?(Y/N)
>N
------------------------------------------------
IPアドレスの検出をテストしますか?(Y/N)
>Y
検出IPアドレスxx.xxx.xx.xxx
------------------------------------------------ 

デーモンの起動

デーモンの起動と自動起動を設定します。
# ./DiCE/diced -d
# vi /etc/rc.d/rc.local
最終行に以下を追加
[DiCEをおいたディレクトリ]/DiCE/diced -d -l
以上で終了です〜。 あとはモデムルーターにスタティックIPマスカレードをしていしてあげればOKです。 ルーターによって設定が違うので、詳しくはお使いのルーターのマニュアルを読んでください。