MyDNS + DiCE(Linux版)でオリジナルドメインを利用

Release 2005.06.07
Update 2008.04.16

オリジナルドメインを使って自宅サーバーを公開するにあたって・・・

自宅でサーバー公開できるようになるまで、大きく4 STEPあります。

  • オリジナルドメインの取得
  • ダイナミックDNSへの登録
  • ネームサーバーの変更登録
  • グローバルIPアドレス自動更新ツールの設定・起動

と、なります。

実際にドメインが利用可能になるまで・・・
  • オリジナルドメインは レジストラ と呼ばれるドメインの登録申請を受け付ける組織で行います。国内大手では 「お名前.com」 などが有名です。自分の取得したいドメイン名を検索し、使用可能か確認し登録を行います。受付確認→入金案内→入金確認→登録完了 と、それぞれの段階で案内のメールが来ますので、とても親切です。登録完了のメールがきたら、いよいよダイナミックDNSへ自分のIPアドレスからドメインを引けるように登録をします。

    その他の国内レジストラ

  • ダイナミックDNSは国内・海外でもたくさんサービスを提供しています。自分の用途などにあったサービス会社を選択してください。わたしは自動更新ツール 「DiCE」 (フリーウェア)が利用可能で無料の国内サービスということで 「MyDNS」 を選択しました。
  • MyDNSで登録を行い、MasterIDとPasswordを入手します。これは、必要項目を入力すると 「[MyDNS.JP] ユーザー登録完了通知」 というメールで通知されます。ここに書かれているMasterIDとPasswordを使って後述するDiCEで使用します。
  • 次にMyDNSを利用できるようにレジストラへネームサーバーの登録も必要です。「お名前.com」の場合、NIC番号とパスワードを使ってログインします。該当するドメインの「ネームサーバー」の[変更する]ボタンをクリックします。ネームサーバー情報変更のページが表示されます。ドメインの前のチェックボックスにチェックを入れ、■ネームサーバー情報入力の欄を修正します。namesv
    初期設定では 「dns1.onamae.com」「dns2.onamae.com」がそれぞれ入っているはずです。これをプライマリーに 「ns0.mydns.jp」、セカンダリーに「ns1.mydns.jp」とMyDNSのネームサーバーに変更します。
    domain
  • DiCEから入手したLinux用ファイルを解凍します。DiCE Linux版は Beta Version 0.19 として公開されています。ここでは解凍先を /usr/local/ の配下として /usr/local/dice にします。
  • 解凍したらパーミッションを変更します。設定値はDiCEのサイトで説明されている通り rwx 全てのフラグを立てます。配布されているLinux版にはCUIとGUI用が含まれています。ここではCUI用を利用します。
    # chmod +rwx ../DiCE
    # chmod +rwx diced

    次に diced を起動し setup を行い、初期情報を設定します。

    各自、環境に合わせて必ず設定をおこなってください。

    # cd /usr/local/dice/diced
    =-=-=- DiCE DynamicDNS Client -=-=-=
    Version 0.19 for Japanese
    Copyright(c) 2001 sarad
    
    :setup
    IPアドレスの検出方法を指定してください
    (0) 自動検出
    (1) ローカルのネットワークアダプタから検出
    (2) 外部のスクリプトから検出
    <現在:0>
    (N)変更しない  (P)戻る
    >0
    -------------------------------------------------
    プライベートIPアドレスも検出対象ですか? (Y/N)
    <現在:はい>
    (P)戻る
    >n
    -------------------------------------------------
    IPアドレスの検出をテストしますか? (Y/N)
    (P)戻る
    >y
    検出IPアドレス>000.000.000.000 現在のIPアドレスが表示
    -------------------------------------------------
    IPアドレスの検出をテストしますか? (Y/N)
    (P)戻る
    >n
    -------------------------------------------------
    IPアドレスをチェックする間隔を指定してください(分)
    設定可能範囲は5分以上です
    <現在:10>
    (N)変更しない  (P)戻る
    >n
    =================================================
    DNSサーバーの負荷を軽減するために頻繁なDNS更新を防ぐ必要があります
    前回の更新から一定時間DNS更新処理を行わないように保護時間を設定して
    ください(分)  設定可能範囲は10分から1440分です
    <現在:10>
    (N)変更しない  (P)戻る
    >n
    =================================================
    設定を保存しますか? (Y/N)
    (P)戻る
    >y
    設定を保存しました
    =================================================
    :exit
    
  • 次にMyDNS(ダイナミックDNS)を実際に更新させるための設定を行います。
    # cd /usr/local/dice/diced
    =-=-=- DiCE DynamicDNS Client -=-=-=
    Version 0.19 for Japanese
    Copyright(c) 2001 sarad
    
    :add
    新しくイベントを追加します
    
    DynamicDNSサービス名を入力してください
    
    "?"で対応しているサービスを一覧表示します
    (P)戻る
    >? サービス一覧を確認し該当する名前をチェック
               ZENNO.COM            livedoor            MyDNS.JP              pcc.jp
                  JPN.ch             MyIP.US              @nifty         StaticCling
                MyServer             ddns.ca                 p2p      did.expoze.com
                  Dynamx          WebReactor               unicc               Earth
                  DNS2Go            EveryDNS              Now.nu           dynDNS.it
              onamae.com                DION                 ODN                ysdn
                  ddo.jp          Netservers                todd                 USA
                     cjb              Dyn.ee             BIGLOBE                dnip
               my-domain            ZoneEdit                ZiVE                  yi
                  theBBS            SelfHOsT               No-IP             nicolas
                 miniDNS           Microtech              instat            ieServer
              HAMMERNODE             GetmyIP               Dynup                Dynu
                    dyns              DynDSL            DynDNSdk              dyndns
                   DtDNS                dnsQ                 dhs             DDNS.nu
                cheapnet            changeIP            ARTofDNS         VALUEDOMAIN
                     ODS              JSPEED               IPDYN            DnsTokyo
                 3domain
    =================================================
    新しくイベントを追加します
    
    DynamicDNSサービス名を入力してください
    "?"で対応しているサービスを一覧表示します
    (P)戻る
    >MyDNS.JP
    -------------------------------------------------
    << MyDNS.JP >>
    
    URL: http://www.mydns.jp/
    *** 情報 ***
    ドメイン名、ホスト名についてはマスターID(ユーザー名)にて管理されています。
    IPアドレスはサーバー側で自動検出します。
    (これらは入力しても無視されます)
    =================================================
    ドメイン名を入力してください
    "?"でドメイン一覧を表示します
    (P)戻る
    >dreamer-site.net ※自分のドメインを指定
    =================================================
    ホスト名を入力してください
    (P)戻る
    >[Enter]
    =================================================
    ログインユーザ名を入力してください
    (P)戻る
    >xxxxxxx ※MyDNS.JPのMasterIDを入力
    =================================================
    ログインパスワードを入力してください
    (P)戻る
    >xxxxxxx ※MyDNS.JPのPasswordを入力
    
    =================================================
    登録するIPアドレスを入力してください
    空白にすると現在のIPアドレスを自動検出します
    (P)戻る
    >[Enter]
    =================================================
    このイベントに題名を付けてください
    (P)戻る
    >MyDNS ※イベント名前を付ける
    =================================================
    このイベントを実行するスケジュールを設定します
    -------------------------------------------------
    実行する頻度を指定してください (番号入力)
    (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
    
    =================================================
    =================================================
    このイベントを有効にしますか? (Y/N)
    (イベントの有効/無効は"EN/DIS"コマンドで切替えられます)
    >y
    =================================================
    イベントを保存しますか? (Y/N)
    >y
    イベント"MyDNS"を保存しました
    =================================================
    :list
    
    (No.)   (イベント名)                   (スケジュール)             (次回予定)
      0 *  MyDNS                          IPアドレス変化時 (7日毎)   06/14 11:00
    :ex 0 ※番号0のイベント実行
    + 6/7 11:00 にMyDNSが実行されました
      IPアドレスを更新しました この表示で更新が成功
    :exit
    
    # /usr/local/dice/diced -d -l
    
    =-=-=- DiCE DynamicDNS Client -=-=-=
    Version 0.19 for Japanese
    Copyright(c) 2001 sarad
    
    #
    
  • ここまで出来れば準備完了です。実際にドメインからIPアドレスを引けるようになるには、時間がかかります。レジストラで実際にドメインが使用可能になるまで即日から数日かかる場合もあります。また、ネームサーバーへの変更は2~3日かかるようです。ネームサーバーの変更が反映され、ダイナミックDNSサービスでIPアドレスを登録してからは数分・・・とドメイン取立てで、初めて利用される場合は、少し気長に待ってみてください。
  • 最新kernelでDiCEが起動しない問題について主に2種類の方法があります。自分の環境にあった方法を選んで使用してください。
    • exec-shiled設定値を変更する方法上記の設定で実行させても、DiCEの負荷が100%になり、機能しない現象が出ている方は下記の方法を検討してみてください。Fedra coreを初めとして最近のディストリビューションではセキュリティーのため「攻撃性のあるプログラムの実行」を制限する機能で、exec-shieldが実装されています。これはデフォルトインストール時ではONに設定されており、DiCEの実行を妨げている可能性があります。まずは、このexec-shieldの状態を調べます。
      # cat /proc/sys/kernel/exec-shield
      

      ここで 0 以外の数値が表示されたらexec-shieldが働いていることを意味します。

      ここで表示された値を覚えておきます。

      次にexec-shieldを 0 にして DiCEを起動させます。

      # echo 0 > /proc/sys/kernel/exec-shield
      # diced -d -l &
      

      最後にexec-shieldを元の値に戻します。

      # echo [最初に表示された値] > /proc/sys/kernel/exec-shield
      
    • prelinkを修正してexecstackによるDiCEの起動方法テキストエディタで /etc/sysconfig/prelink を編集します。(赤字修正箇所)注:下記はFedora Core5の場合です。
      # vi /etc/sysconfig/prelink
      

       

      # Set this to no to disable prelinking altogether
      # (if you change this from yes to no prelink -ua
      # will be run next night to undo prelinking)
      PRELINKING=yes
      
      # Options to pass to prelink
      # -m    Try to conserve virtual memory by allowing overlapping
      #       assigned virtual memory slots for libraries which
      #       never appear together in one binary
      # -R    Randomize virtual memory slot assignments for libraries.
      #       This makes it slightly harder for various buffer overflow
      #       attacks, since library addresses will be different on each
      #       host using -R.
      #PRELINK_OPTS=-mR
      PRELINK_OPTS="-mR --no-exec-shield"
      
      # How often should full prelink be run (in days)
      # Normally, prelink will be run in quick mode, every
      # $PRELINK_FULL_TIME_INTERVAL days it will be run
      # in normal mode.  Comment it out if it should be run
      # in normal mode always.
      PRELINK_FULL_TIME_INTERVAL=14
      
      # How often should prelink run (in days) even if
      # no packages have been upgraded via rpm.
      # If $PRELINK_FULL_TIME_INTERVAL days have not elapsed
      # yet since last normal mode prelinking, last
      # quick mode prelinking happened less than
      # $PRELINK_NONRPM_CHECK_INTERVAL days ago
      # and no packages have been upgraded by rpm
      # since last quick mode prelinking, prelink
      # will not do anything.
      # Change to
      # PRELINK_NONRPM_CHECK_INTERVAL=0
      # if you want to disable the rpm database timestamp
      # check (especially if you don't use rpm/up2date/yum/apt-rpm
      # exclusively to upgrade system libraries and/or binaries).
      PRELINK_NONRPM_CHECK_INTERVAL=7
      

      次に /var/lib/misc/prelink.force のファイル作成

      # touch /var/lib/misc/prelink.force
      

      /etc/cron.daily/prelink を実行(かなり時間がかかります。)

      # /etc/cron.daily/prelink
      

      execstack を使って DiCE を追加登録

      # execstack -s /usr/local/dice/diced
      
      execstack: /usr/local/dice/diced: Reshuffling of objects to make room for
      program header entry only supported for shared libraries
      

      最後に再起動し DiCE の動作を確認

      # shutdown -r now