home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2001 December (DVD) / VPR0112A.ISO / OLS / VDNSS / vdnss.lzh / aboutVDNSS.txt next >
Text File  |  2001-04-26  |  12KB  |  291 lines

  1. **********************************
  2. ****  A Virtual DNS Server   *****
  3. **********************************
  4. 作成者: Ichikawa Hiromitsu [京大工学部3年 ('00 3月現在)]
  5. 内容: 仮想 DNS Server
  6. 種類: シェアウェア
  7. version: 1.5
  8. 電子メール: h-i@bigfoot.com
  9.  
  10. 更新履歴:
  11. ver 1.5: 設定ファイルの形式を変更
  12. ver 1.31: 大文字と小文字の区別をやめる
  13. ver 1.3: 外部DNSモードでの応答を改良 ('00 9月)
  14. ver 1.22: 起動時に最小化する機能の追加 ('00 3月)
  15. ver 1.21: UDP の「共振」を防ぐ機能の追加 ('00 2月)
  16. ver 1.2: 内部/外部 DNS モードに対応 ('00 2月)
  17. ver 1.1: バグの改善 ('00 1月)
  18. ver 1.0: 初期バージョン ('99 4月)
  19.  
  20. 登録に関して:
  21.     登録前に必ず「試用」モードで動作確認を十分してください。
  22.     登録後の、登録事項の変更、取り消し等は一切受け付けられません。
  23.     試用時の制限事項は、余分にウィンドウが出て、動作が一時止まる
  24.     ことのみです。
  25.     試用期間は1ヶ月を限度としてください。
  26.  
  27. ・登録は、次の方法で行います
  28.     シェアレジ: vector さんのシェアレジを利用できます。
  29.         クレジットカードがあれば簡単に登録できます。
  30.         http://www.vector.co.jp/ から「シェアレジ」を
  31.         見つけてください。
  32.  
  33. 使用上の注意: このソフトを使用等された場合の、いかなる損害、不利益
  34. 等が生じても作成者の責任を問わないものとします。ご自分の判断と
  35. 責任でお使いください。このソフトに一切の保証はありません。
  36.  
  37. 再配布について: 個人的にはご自由にどうぞ。雑誌などに収録の場合は、
  38. あらかじめ確認の連絡をください。
  39.  
  40. 概要: 仮想 DNS Server
  41. 状況に応じて色々な応答を返す DNS Server です。
  42. ・ネットワーク環境が利用できない時に、DNSを引かなければ動かない
  43. アプリケーションを動かすための、仮の DNS Serverとして。
  44. ・家庭内 LAN 環境で、小規模な DNS Server として。
  45. ・DNS の proxy として。
  46. ソフトのボタン一つでこれらのモードを変更できます。
  47.  
  48. 設定方法:
  49. まず、DNSの設定をしてください。次のように設定します。
  50. 「コントロールパネル」の「ネットワーク」の設定で、
  51. 「ネットワークの設定」の中から、「TCP/IP」の設定を選択し、
  52. 「TCP/IPのプロパティー」画面の「DNS設定」の項で、
  53. 「DNSを使う」にして、「DNS サーバーの検索順」の中に、
  54. 127.0.0.1 つまり localhost を入れてください。
  55.  
  56. いくつかの OS では 127.0.0.1 と指定してもうまくいきません.
  57. その場合には,PPP/LAN デバイスに IP アドレスを適当に指定し,
  58. DNS に自分のIP アドレスを入れてください.
  59. (以下の説明では 127.0.0.1 としていますが,適当に読み替えてください)
  60.  
  61. いずれの場合にも、DNSに関しての知識が必要ですが、Windowsの
  62. 付属の説明書を見るなどの方法で理解し、設定してください。
  63.  
  64. 要するに次のことが分かっていれば、どんな設定でも構いません。
  65. 「A VirtualDNS Server は localhost (127.0.0.1)で動く、DNSサーバーだ」
  66.  
  67. 動作の基本:
  68. このソフトを起動すると、色々なモードがありますが、それらを
  69. 簡単に説明します。
  70. ・Halt Mode ... 停止モード。詳細設定により、「完全に何もしない」と
  71.     「全てにNotFound を返す」を選択できます。
  72. ・Local Mode ... スタンドアロンな状態で使うときのモード。
  73.     順引き・逆引きとも詳細設定で設定した固定値を返す。
  74.     通常、順引きを IP: 127.0.0.1 として、全ての FQDN に対し、
  75.     127.0.0.1 を答えるとスタンドアロンでも色々出来る。 
  76. ・External Mode ... 完全な接続状態のモード。
  77.     全ての要求を外部DNS Server(詳細設定で指定)へ転送する。
  78.     接続したりしなかったりするときに、いちいち「ネットワーク」
  79.     の「DNS の設定」を変えなくて済む。
  80. ・Closed Mode ... 完全に外部と隔離された LAN で使うモード。
  81.     基本的には、普通のDNS Server だが、自分の知っている範囲
  82.     のみを答え、それ以外は NotFound を返す。
  83.     後に説明する conf ファイルの情報を基に応答する。
  84. ・Open Mode ... 外部とつながっているLAN で使うモード。
  85.     自分の知っている(管轄する)範囲は自分で答え、それ以外は
  86.     外部DNS Server に転送する。
  87.     ある範囲のFQDN のみを書き換えたりする場合に使う。
  88.  
  89. *** 外部DNS Server を 127.0.0.1 にしないでください。
  90. *** UDP のパケット自分の中で、際限なく送りあう状態になります。
  91. *** また同様の理由から、1024番以下のポートからのパケットは無視します。
  92.  
  93. これらの間を自由にモード変更できます。
  94. Open/Closed モードで利用する conf ファイル(自分の応答する範囲を書く)
  95. は、起動時に存在すれば自動的に読み込み、途中で再読み込みも可能です。
  96.  
  97. ・実際の起動と動作確認
  98. DNSの設定が終わったら、ソフトを起動してください。
  99. 動作確認はいろいろありますが、次のようにしてもできます。
  100. Local Mode を選択し、詳細設定ボタンでダイアログを開き、
  101. LocalModeの設定の IP アドレスを 127.0.0.1 にする。(default)
  102.  
  103. コマンドラインプロンプトから、次のように打ち込みます。
  104. D:\Programs>ping hogehoge.com
  105.  
  106. Pinging hogehoge.com [127.0.0.1] with 32 bytes of data:
  107.  
  108. Reply from 127.0.0.1: bytes=32 time<10ms TTL=32
  109. Reply from 127.0.0.1: bytes=32 time<10ms TTL=32
  110. Reply from 127.0.0.1: bytes=32 time<10ms TTL=32
  111. Reply from 127.0.0.1: bytes=32 time<10ms TTL=32
  112.  
  113. つまり、PING を打つわけですが、ここで、 hogehoge.com という、
  114. ありえないホスト名を打ち込んで、DNS を引かせるわけです。
  115.  
  116. これにより動作していることを確認できます。
  117.  
  118. オプション:
  119. ・タスクトレイへ収納
  120. 常駐型のソフトのため、ウィンドウが出ていると邪魔だし、誤操作の
  121. 原因になります。タスクトレイに格納することができます。
  122. ここで左クリックすると元の表示に戻り、右クリックで、
  123. モード変更のメニューが出てきます。
  124.  
  125. ・「最小起動」
  126. これをチェックすると、次回から、起動時にはタスクトレイへ収納された
  127. 状態で起動します。
  128.  
  129. ・「送信のたびに、内容を表示」
  130. これをチェックすると、DNS Server に対する要求を処理した直後に
  131. ダイアログで、どのような要求と、どのような返事をしたかを表示します。
  132. このダイアログが出ているときには、Serverの動作は一時停止しています。
  133. 再開するには、OK をおして、ダイアログを消してください。
  134. 通常は、オフにします。
  135. ただし,外部DNSに問い合わせたときには表示しません.
  136. 内部で処理したパケットに関してのみ表示します.
  137.  
  138. これが出るタイミングは、登録していないときに、
  139. 「A Virtual DNS Server が返信しました。登録してください。」の
  140. 画面が出るのと同じです。
  141. 登録後は、このウィンドウが出なくなります。
  142.  
  143. 一時停止している場合、DNS Client (つまりDNSをひくほう)は
  144. 何度か要求を出しますが、時間が経つと諦めてしまう場合があります。
  145. これを避けるには、すぐウィンドウを消すか、ウィンドウを表示しない
  146. ように、オプションをオフにしてください。
  147. (未登録の場合は、ご自分で OK ボタンをすばやく押してください。)
  148.  
  149. ・順引きと逆引き
  150. このソフトのでは、
  151. ホスト名(FQDN)から IPアドレスを求めることを「順引き」
  152. IPアドレスから ホスト名(FQDN)を求めることを「逆引き」
  153. と表記します。
  154. 両方とも Windows では、「標準Query」で、
  155. 順引きが QueryType: A, 逆引きが QueryType: PTR となっていて、
  156. このソフトでもこれらの二つについてのみ応答します。
  157.  
  158. モード別の詳細説明:
  159. ・Halt Mode
  160. 停止モードです。詳細設定により、
  161. 「全く応答しない」(このソフトを起動していないのと全く同じ)
  162. 「エラーを送信」(NotFound のエラーメッセージを返す)
  163. の二つから選択できます。
  164. 後で説明する conf ファイルを再読み込みする場合、一時的に
  165. このモードにする必要があります。
  166.  
  167. ・Local Mode
  168. 全ての順引き・逆引きに対して画一的な応答をするものです。
  169. 詳細設定 (Local Mode の設定)により、
  170. 「応答: 順引き IP アドレス」(順引きの時に応答で使う返り値の設定)
  171. 「応答: 逆引き Host 」(逆引きの時に応答で使う返り値の設定)
  172. を指定してください。
  173. スタンドアロンの場合には、順引きIP アドレスを 127.0.0.1 に
  174. しておくのが普通でしょう。
  175.  
  176. ・External Mode
  177. 全ての要求に対して、何も処理せずに指定した外部DNS Server に
  178. データを転送し、その外部DNS の応答をそのまま返すモードです。
  179. 簡単に言えば、ただの proxy 動作をするだけです。
  180. このモードを使う場合には、必ず詳細設定の次の項目を埋めてください。
  181. 「外部DNS Server IP Addr」(外部DNS Server の IPアドレス)
  182. 「外部DNS 応答 Timeout」(外部DNS Server の応答時間の最大秒数)
  183. 「外部DNS 並行最大処理数」(外部DNS へのproxy の並行動作最大数)
  184. タイムアウトは、外部DNS Server にデータを転送してから、応答を待つ
  185. 最大の待ち時間(秒/ 自然数に限る)を示し、これ以上時間がかかる場合には
  186. クライアントには何も返さず、次の処理に移ります。
  187. 外部との帯域が小さい場合には、大きい値にしなければなりませんが、
  188. 小さくするほど処理能力が上がります。
  189. 最大並行数は増やすと処理能力が上がりますが最大負荷もあがります.
  190. 最大並行数を増える要求は無視します.
  191.  
  192. ・Closed Mode
  193. 完全に閉じた小規模なLAN 環境でメインの DNS Server として動作します。
  194. 他にDNS Server が用意できない場合には、他のパソコンでも、
  195. このソフトが動作しているパソコンのIPアドレスを「DNS Server」として
  196. 設定してください。
  197. ただし、長い時間安定運用することより、実験的な用途に使うことを想定
  198. しているので、パフォーマンスや安定性では不安が残ります。
  199. このモードと次の Open Mode では、設定ファイル(conf)により、動作を
  200. 指定します。後で conf ファイルの書き方を述べます。
  201. この conf ファイルは、実行バイナリ(vdnss.exe)と同じディレクトリで、
  202. 実行バイナリのファイル名の後ろに".conf" を付けたものとなります。
  203. バイナリ vdnss.exe に対して vdnss.exe.conf というファイルです。
  204.  
  205. このファイルに順引きと逆引きのデータを書き込みます。
  206. 起動時にファイルが存在すれば自動的に読み込む他、Update ボタンにより
  207. 随時読み込みが可能です。ただし、更新中に処理できないため、一時的に
  208. Halt Mode にしてから Update してください。
  209.  
  210. このモードでは、このソフトが管轄する範囲(confファイルで指定)に
  211. 対しては、返答しますが、管轄外のものに関しては、「NotFoundエラー」を
  212. 返答します。
  213.  
  214. ・Open Mode
  215. 基本的には Closed Mode と同じですが、
  216. 管轄外のものに関しては、External Mode と同様の動作で、外部 DNS Server
  217. を使って応答します。この応答は External Mode と同じです。
  218.  
  219. 設定ファイルの書き方:
  220. ファイルの所在は、実行バイナリ(vdnss.exe)と同じディレクトリで、
  221. 実行バイナリのファイル名の後ろに".conf" を付けたものとなります。
  222. バイナリ vdnss.exe に対して vdnss.exe.conf というファイルです。
  223. 適当なテキストエディターで開いて編集します。
  224. 一行一項目で、初めに # があるとコメント行として扱います。
  225. 順引き・逆引きのデータが共存します。
  226. 順引きの行は次のようになっています。
  227. Ahost ip_addr
  228. 例えば、 Ahogehoge.com 192.168.0.1 とすると、????hogehoge.com に
  229. 対して、192.168.0.1 を返します。
  230. hogehoge.com と最後尾からマッチするもの(つまりそれで終わるもの)に
  231. マッチします。
  232.  
  233. 逆引きの行は次のようになっています。
  234. Pip mask host
  235. 例えば、 P192.168.0.0 255.255.255.0 hoge.com とすると、
  236. 192.168.0.0 から 192.168.0.0.255 までに対して、hoge.com を返します。
  237.  
  238. 順引きの逆引きの行,無視の行を判断する基準は,
  239. 行の一文字目が A (A:順引き), P(PTR:逆引き), その他です.
  240. (ver1.3x からのもっとも大きな更新事項です.
  241. 旧バージョンから移行する場合には confファイルを変更してください)
  242.  
  243. 処理は、上の行から行なわれます。最も速くマッチしたもの一つを採用し、
  244. これから返答のメッセージが作成されます。
  245. 従って、順引き・逆引き共に範囲を持っていますが、最も特殊なものから
  246. 上から書いていく必要があります。例えば、順引きなら
  247. Afuga.hoge.com 192.168.0.3
  248. A.hoge.com 192.168.0.2
  249. Ahoge.com 192.168.0.1
  250. とすると、fuga.hoge.com で終わるものは 192.168.0.3 と応答し、
  251. それ以外の ????.hoge.com には 192.168.0.2 と応答し、
  252. hoge.com には 192.168.0.1 と応答することになります。
  253. これらの順番を変えてしまうと意味を成さなくなる行が出てきます。
  254. 逆引きでも同じです。一つのホストに対しての場合は、mask は 
  255. 255.255.255.255 とします。例えば、
  256. P192.168.0.1 255.255.255.255 dns.hoge.com
  257. P192.168.0.254 255.255.255.255 gw.hoge.com
  258. P192.168.0.0. 255.255.255.0 sonota.hoge.com
  259. のように後のものに含まれるものは先に書く必要があります。
  260. この例では 192.168.0.1, 192.168.0.254 以外の 192.168.0.? には
  261. sonota.hoge.com と返す設定になり、順序を変えると意味を成さなくなる
  262. 行が出てきます。
  263.  
  264. 技術詳細:
  265. DNS なので、 UDP 53 番ポートを占有します。
  266. UDP 53番ポートが利用されいる場合、(多重起動を含む)
  267. 立ち上がるときにエラーメッセージを出し、終了します。
  268.  
  269. UDPのみの対応で、TCP の方には対応していません。
  270.  
  271. 次の場合のみ、応対します。
  272. Query(Answerではない)で 標準Query(Inverse Queryではない)、
  273. Questionの個数が一つ以上。Answerその他の個数は0個。
  274. QType: A (Host->IP address), QClass: IN (Internet)
  275. この場合、Question の初めの一つに対して、
  276. Question の個数を 1つ(copy)、Answerの個数を1つ、
  277. その他を0個として、RRを2つで TTL = 0 で返します。
  278. それ以外の場合には、ResultCodeに 4:NotImplemented を返します。
  279. 知らない範囲の順引き/逆引きならば 3:NotFound を返します。
  280. そして、全てのフィールドの個数は0とします。(12bytesのみ)
  281.  
  282. DNS に関しての知識が必要な場合、
  283. RFC1034/ 1035 を参考にしてください。
  284.  
  285. 外部 DNS を必要とするときには,要求ごとに Thread を作り,
  286. 外部からの返事が戻ってきたら送り返す仕組みになりました.
  287. (version 1.3 からの機能です)
  288.  
  289. 以上。
  290.  
  291.