作成日:2001年06月01日、更新日:2003年08月17日 作成:鷹の巣

固定IPアドレスだったら、自宅サーバーでDNSサーバを立ち上げましょう。


手順O.DNSサーバーのインストールと運用(固定IPアドレスの方のみ)

このページは、私がまだ固定IPアドレスでないため、参考程度に読んで下さい。なにしろ、実績がありません。 非固定IPアドレスの方でも是非、一度はLAN内で名前解決のDNSサーバーを稼動させて見ることをお薦めします。 LAN内用DNSサーバーを稼動出来れば、インターネット(WAN)用のゾーン設定ファイルの追加とルータのTCP/UDP53番ポートの開放だけで、いつでもインターネット(WAN)用DNSサーバーに変更出来ます。 以下のサイトは、LAN内用DNSサーバーですが、丁寧に解説されていて、大変参考になります。 私としては、Windows XPのクライアント機にDNS(BIND)の設定(Windows編)で、LAN内用DNSサーバーを稼動させ、Windowsの「ネットワーク接続」-「ローカルエリア接続」-「インターネットプロトコル(TCP/IP)」のプロパティの設定で、優先DNSサーバーのIPアドレスを「127.0.0.1」として、色々動作確認されることを推奨致します。
  1. 正引き問い合わせとは、ホスト名(ドメイン名を含む)からIP(Internet Protocol)アドレスを解決するものです。 固定IPアドレスだったら、これまで紹介してきました無料のネームサービスに頼らずに自力でDNSサーバを立ち上げ、 DNSサーバの指定をプロバイダのDNSサーバから自機のDNSサーバに変更しましょう。 無料のネームサービスが存在する以上、「正引き」だけの自宅DNSサーバは、勉強目的以外では、あまりメリットがないように考えますが、 「いつまでもあると思うな 無料のネームサービスと金」ということで、とりあえず、正引きだけでもメリットは、あります。

  2. まず、以下のITmediaのサイトを参照して、正引きと逆引きがどのように解決されるかをまず、理解してください。

    出典:ITmediaの ITmedia エンタープライズ ヘルプデスク: Windows How-To - DNS(Domain Name System) ~概要~より

    下記の表題は、ブラウザに表示されているタイトルから、変更しています。
    3.1 DNSの基礎知識と3.2 名前空間 (3.2.1 ゾーンとドメイン,3.2.2 逆引きで利用される名前空間)と 3.3 DNSの動作(3.3.1 RecursiveとIterative と 3.3.2 キャッシュ) 3.2項が特に重要で、DNSのゾーンとドメイン、正引きと逆引きで利用される名前空間を理解することが肝要です。 余裕があれば、DNSパケットについても、6.3 Dynamic DNSの基本的な動作を読んでください。
  3. DNS設定ファイルを作成する時に注意しなければならないのは、example.com の正規のドメイン表現は、example.com. で最後にドットをつけなければならないことです。 この最後のドットは、世界に十数台しかない正引きのルート(親)ドメインを表しています。

    蛇足)
    UNIXやWindowsやMAC等のOSは、西洋の慣習を踏んでおり、計算機的ではありません。
    計算機的に言えば、左に重みをおいて、7bits系のASCIIコードで、区切り符号にドットで記述する場合は、例えば
    人名: sakaguchi.takanosu(計算機が解釈しやすい様に固有名詞も小文字で書いています。)
    住所: .japan.osaka-pref.minou-city.choume.banchi.gou(最初のドットの前のEarthは、省略。)
    URL: http://.com.example.www/html.index(最初のドットの前のルートドメインは、省略。Windowsの拡張子は、識別名に昇格。)
    日付: yyyy.mm.dd (この書式は、1976年に制定されたANSI76規格ですが、当の規格を制定した国自体もこの書式を無視。)
    以上の様になっていれば、解り易いのですが、現状は、滅茶苦茶です。
    日付が03/02/01となっていれば、現状、2001年3月2日と読む場合もあり、「習うより慣れろ」とは、困ったものです。
  4. Google等の検索エンジンで「Free DNS Service」を検索すれば、Granite Canyon Groupzoneedit等の無料でDNSサーバを 提供しているところが出てきますので、これをセカンダリDNSサーバとし、自宅サーバにフリーのBIND for NT 8.X.X(現状の安定版)をインストールしてプライマリDNSサーバを起動してください。
    無料DNSサーバーを利用する。無料DNSサーバーの引受先と設定方法は、

    常時接続の宴さんのところにセカンダリDNS互助会もありますから、こちらを利用させて頂く方法もあります。

  5. Windowsユーザは、BINDをISC BIND9で、Windows NT / Windows 2000 Binary Kit - BIND 9.X.X(ツールnslookup,dig,hostも含みます。)をダウンロードし入手し、インストールして下さい。 Windows95/98ユーザのnslookupは、NSLOOKUP for Windows 95 and NTで入手して下さい。

    自前(自宅)DNSサーバーを最初に使用するには、レジストラで自前DNSサーバーのIPアドレスを登録する必要があります。レジストラGKGでの例ですが、レジストラGKGでの自前DNSサーバーの新規登録方法をご参照願います。他のレジストラでも同様の設定になると思います。

    DNSサーバーの検証には、nslookupを使用します。使用方法は、@IT:Windows TIPS -- Tips:nslookupの基本的な使い方(イントラネット編)nslookup - DNSサーバに名前解決の問い合わせを行うをご覧下さい。
    (手っ取り早く検証するには、CGIのDNS Reportを使用しますが、勉強になりません。)

    (「逆引き」は、ユーザ認証程度しか使い道がないように思うんですが、)スキル(能力)向上のため、是非設定してください。 BIND 8系から、UNIXのソースファイルとWindows版のソースファイルが統一されました。 従って、Windows版apache等とは違い、UNIX並みのアップデートと信頼性が確保できます。(OSのWindowsの方の信頼性は?ですが) また、何よりも嬉しいのは、このBINDの設定ファイルがUNIXと同じになり、参考資料が多くなることです。 BINDの設定ファイルの書き方は、BIND取説日本語版をご参照願います。

  6. 固定IPアドレス1個でBIND for NT 8系又は、9系を動作させるのに成功された方は、その設定方法と設定例を公開してください。 公開された場合、掲示板にご投稿をお願い致します。また、このホームページの文章にリンクを埋め込ませてください。

    矢印右 DNSサーバー(正引き)設定例の解説サイトリンク集

  7. WAN側で、固定IPアドレス1個で逆引きを行うには、現状多少問題点があります。これについては、次の手順に項を改めます。

  8. 現在の日本人の常識では、考えられませんが、DNSサーバに登録した内容が全世界のDNSサーバに行き渡る伝播遅延は、 2日から1週間もかかる様です。 その証拠に、下記にBINDのゾーン正引きファイル例(説明用でいい加減に書いてますが)を示します。 DNS設定ファイルの時間単位が恐ろしく長いんです。生半可な試行錯誤でのやり方は、DNSサーバには通用しないようです。 又、正引き同様、逆引きの設定ファイルも伝播遅延します。 フンドシしめてかかりましょう。ご健闘を祈ります。

BIND9のゾーン正引きファイル例説明用で数値以外は、いい加減に書いてます
;=======================================================================================
; ドメイン example.com の正引きゾーン
; フルパスのファイル名(bind for NT)の例:D:\WWW\service\dns\etc\example.com.zonefile
;=======================================================================================
; ゾーン記号@=example.com.
; 注)各レコードのINの左辺が空欄になっている場合は、左辺には、一つ上の行の左辺の値が入ります。
 @         IN SOA      ns.example.com.      hostmaster.example.com. (  <--左辺の@記号は、ゾーン(example.com)と同じ意味。
                       ; start of authority <--ドメイン管理情報で「ドメイン名. IN SOA ネームサーバ名. メールアドレス.」の順。
                                               先頭の@は、自ドメイン名example.comを表します。ホスト名は、nsとしています。
                                               レジストラには、ns.example.comが登録されているものとしています。
           2001060100  ; Serial          <--セカンダリDNSサーバーがプライマリDNSサーバーのゾーンデータが更新されているかを判断するための連番(yyyy/mm/dd/nn)
                       ;                    何番でも良いが西暦年月日+2桁の連番(時刻)にした方が管理が楽です。
           10800       ; Refresh         <--更新時間[単位:秒]=3時間 セカンダリDNSサーバーがプライマリDNSサーバーからゾーンデータを取得する時間間隔
           3600        ; Retry           <--再試時間[単位:秒]=1時間 セカンダリDNSサーバーがプライマリDNSサーバーからゾーンデータを取得失敗時の再試時間間隔
           604800      ; Exire           <--エクシーレ(有効期限)[単位:秒]=7日間 セカンダリDNSサーバーがプライマリDNSサーバーからゾーンデータ取得失敗時の再試期限
           86400 )     ; Minimum TTL     <--最小TTL時間[単位:秒]=24時間(実行結果のキャッシュ時間なので、test時は、86400は、300秒程度に設定)Ver.8.2.1より先頭行へも
                       ;                 <--以下、左辺が空欄になっている場合は、上の行と同じ意味。ここでは、@記号のゾーン(example.com)に同じ。
           IN NS       ns.example.com.   <--一次(プライマリ)DNSサーバ(自分のマシンのDNSサーバ)
           IN NS       ns1.example.jp.   <--二次(セカンダリ)DNSサーバ(無料セカンダリDNSサーバか接続業者のDNSサーバ)
           IN MX  10   mail.example.com. <--一次(プライマリ)メールサーバ
           IN MX  20   mail.example.jp.  <--二次(セカンダリ)メールサーバ
                       ;
           IN A        VVV.XXX.yyy.zzz   <--固定IPアドレスがたったの1個。
                       ;                    左辺が空欄は、上の行と同じ場合に省略。左辺は、@記号のゾーン(example.com)と同じ。従って、
                       ;                    @            IN A  VVV.XXX.yyy.zzz
                       ;                    や
                       ;                    example.com. IN A  VVV.XXX.yyy.zzz
                       ;                    と書いても良い。@=自ドメイン名example.com.。http://example.com/を可能にする。
                       ;
ns         IN A        VVV.XXX.yyy.zzz   <--同上。(NSレコードで指定されているホスト名は、Aレコードで定義する。)
mail       IN A        VVV.XXX.yyy.zzz   <--同上。(MXレコードで指定されているホスト名は、Aレコードで定義する。)
localhost  IN A        127.0.0.1         <--自己診断(ループバック)のための設定です。こんなの書きたくないですね。
                       ;                    127.0.0.1と入力するより、localhost.example.comと入力する方が早い方は、書いてください。
www        IN CNAME    ns                <--ホストnsが兼用(Aレコードを使用して、IN A VVV.XXX.yyy.zzzとした方がセキュリティ上良いかも。)
ftp        IN CNAME    ns                <--同上。
smtp       IN CNAME    ns                <--同上。
pop        IN CNAME    ns                <--同上。
proxy      IN CNAME    ns                <--同上。
sntp       IN CNAME    ns                <--同上。

参考資料:BINDで作るDNSサーバ名前解決の仕組みとゾーンファイルの設定DNSの動作確認とセカンダリサーバBINDでDynamic DNS環境構築

     Windows NT/2000用のIPv6パッチ(英語)Microsoft Research IPv6 Implementation (MSRIPv6) Internet Protocol Version 6

     BIND9では、更にIPversion6の知識も必要となり、以下のITmediaのサイトより、
     ZDNN:IPv6の現在,そして未来(上)プロローグIPv6の誕生IPv6とはIPv6の技術(1)IPv6の技術(2)、
     ZDNN:IPv6の現在,そして未来(下)(1-2)(2-2)

▲頁先頭