[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:34664] Re: telnetコマンドの振舞いの違い(potatoとwoody)



鈴木です。

碓井様、織田様、中野様、松田様

 皆様、大変ありがとうございました。

 碓井様の resolv.confのsearch行に該当ドメイン名を追加する方法で解決できました。

  nslookup -type=txt -class=CHAOS version.bind $HOST にて、Bindのバージョンを
調べたところ、potato(4.9.8-REL)、woody(BIND 8.2.2-P5)となっておりました。
  また、nslookupコマンドのdebug modeでの挙動が碓井様が言われたように、 
res_nmkquery のトライアルが、potato(4.9.8-REL)は2回試すのに対して、woody(
BIND 8.2.2-P5)の方は、一度失敗したらやめてしまうことと合致しました。

  nslookupコマンドのdebug modeから、resolverが違いらしいというのは途中から気
になっていましたが、解決方法が判らず迷子になっていました。

From: Minoru Usui <usui_mi@xxxxxxxxx>
Subject: [debian-users:34655] Re: telnetコマンドの振舞いの違い(potatoとwoody)
Date: Thu, 26 Sep 2002 00:32:48 +0900
Message-ID: <20020926.003239.59460871.usui_mi@xxxxxxxxx>

usui_mi> 碓井です。
usui_mi> 本 ML に投稿するのは初めてです。宜しくお願いします。
usui_mi> 
usui_mi>     >>   UNIX USERの9月号の付録CDを用いて、woodyをインストールして使い始めた
usui_mi>     >> ところ、potatoとtelnet/rloginコマンドの挙動が違うことに気が付きました。
usui_mi>     >>   違いは、次のような感じです。
usui_mi>     >>      potato環境:接続先HOSTをFQDNで指定しなくても、telnetが可能
usui_mi>     >>      woody環境: 接続先HOSTをFQDN指定しないと、telnetが失敗
usui_mi>     >> どちらのPCも、resolv.conf / nsswitch.confは次のようになっており違いが
usui_mi>     >> ありません。
usui_mi>     >>   できれば、potato環境のように、HOST名をFQDNで書かなくてもtelnetできる
usui_mi>     >> ようにしたいのですが、どのようにしたらよろしいのでしょうか?
usui_mi> 
usui_mi> 〜中略〜
usui_mi> 
usui_mi>     >> ■potato環境のtelnetコマンドの振舞い
usui_mi>     >>   次のように、接続先HOSTをFQDNで指定しなくても、telnetが可能です。
usui_mi> 
usui_mi>     >> suzuki@lupin:~$ telnet serpens.###
usui_mi>     >> Trying 10.WWW.AAA.BBB...
usui_mi>     >> Connected to serpens.###.&&.%%%.co.jp.
usui_mi>     >> Escape character is '^]'.
usui_mi>     >> [SSL not available]
usui_mi> 
usui_mi> 
usui_mi>     >> SunOS 5.7
usui_mi> 
usui_mi>     >> 〜以下、省略〜
usui_mi> 
usui_mi> 
usui_mi> 
usui_mi>     >> ■woody環境のtelnetコマンドの振舞い
usui_mi>     >>  一方、woodyの場合は次のように、エラーとなってしまいます。
usui_mi> 
usui_mi>     >> suzuki@claris:~$ telnet serpens.### 
usui_mi>     >> telnet: could not resolve serpens.micom/telnet: No address associated with hostname
usui_mi> 
usui_mi>     >>  次のように、FQDNで接続先HOSTを指定すると、telnetできるようになります。
usui_mi> 
usui_mi> 
usui_mi>     >> suzuki@claris:~$ telnet serpens.###.&&.%%%.co.jp
usui_mi>     >> Trying 10.WWW.AAA.BBB...
usui_mi>     >> Connected to serpens.###.&&.%%%.co.jp.
usui_mi>     >> Escape character is '^]'.
usui_mi> 
usui_mi> 
usui_mi>     >> SunOS 5.7
usui_mi> 
usui_mi>     >> 〜以下、省略〜
usui_mi> 
usui_mi> 手元に O'Reilly の 「DNS&BIND」本がないのでうろ覚えなのですが、potato
usui_mi> と woody でのリゾルバライブラリのバージョンの違いによる挙動の違いのよ
usui_mi> うな気がします。
usui_mi> 
usui_mi> 以前のリゾルバ(BIND 4.x 系列だと思いますが、詳細不明)は、
usui_mi> /etc/resolv.conf の domain/search に明示的に記述されていなくても、
usui_mi> 親ドメインを付加して名前解決を行なうという挙動をしていたという記述があっ
usui_mi> たと記憶しています。 
usui_mi> これに対して、新しめのリゾルバは、親ドメインを付加して検索しなくなった
usui_mi> ようです。 
usui_mi> つまり「telnet serpens.###」と入力した場合だと、以下のような手順です。
usui_mi> (鈴木さんの記述された /etc/resolv.conf では /etc/resolv.conf の domain に 
usui_mi>  zz.yy.xx.co.jp と記述されていますが、zz.yy.xx.co.jp == ###.&&.%%%.co.jp 
usui_mi>  であると仮定しています。違う場合はご指摘願います。)
usui_mi> 
usui_mi> === 以前のリゾルバの場合(potato?) ===
usui_mi> 
usui_mi>   1. 入力文字列の
usui_mi> 
usui_mi>       serpens
usui_mi> 
usui_mi>     で名前解決を行なう。 (順番的には 4. だったかも)
usui_mi>       → 見つからない。
usui_mi> 
usui_mi>   2. /etc/resolv.conf に記述してある domain 行の設定を付加し、
usui_mi>      
usui_mi>       serpens.###.###.&&.%%%.co.jp
usui_mi>                   ^^^^^^^^^^^^^^^^ リゾルバが付加した部分
usui_mi>     で名前解決を行なう。
usui_mi>       → 見つからない。
usui_mi> 
usui_mi>   3. 親ドメインの 「&&.%%%.co.jp」を付加し、
usui_mi> 
usui_mi>       serpens.###.&&.%%%.co.jp
usui_mi>                   ^^^^^^^^^^^^ リゾルバが付加した部分
usui_mi>     で名前解決を行なう。
usui_mi>       → 見つかる。
usui_mi> 
usui_mi> === 新しめのリゾルバの場合(woody?) ===
usui_mi> 
usui_mi>   1. 入力文字列の
usui_mi> 
usui_mi>       serpens
usui_mi> 
usui_mi>     で名前解決を行なう。 (順番的には 4. だったかも)
usui_mi>       → 見つからない。
usui_mi> 
usui_mi>   2. /etc/resolv.conf に記述してある domain 行の設定を付加し、
usui_mi>      
usui_mi>       serpens.###.###.&&.%%%.co.jp
usui_mi>                   ^^^^^^^^^^^^^^^^ リゾルバが付加した部分
usui_mi>     で名前解決を行なう。
usui_mi>       → 見つからない。
usui_mi> 
usui_mi>   3. 付加すべき domain がもう存在しないため、名前解決をやめて、
usui_mi>      アプリケーション(telnet/rlogin) に名前解決できなかったというエラー
usui_mi>      を返す。 
usui_mi> 
usui_mi> potato と woody のリゾルバが BIND どのバージョンに当たるのかが調べ切れ
usui_mi> なかったので、外しているかも知れません。
usui_mi> 
usui_mi> もし、これが原因だった場合、以下のような解決策が考えられます。
usui_mi> 
usui_mi>   a. 「telnet serpens.###」 ではなく、「telnet serpens」 と入力して使う。
usui_mi>        → domain 行を付加すると、「serpens.###.%%.&&&.co.jp」となり、
usui_mi>           DNS で名前解決可能です。
usui_mi> 
usui_mi>   b. /etc/hosts に serpens.### のエントリを加える。
usui_mi>        → DNS ではなく、/etc/hosts にて名前解決が成功します。
usui_mi> 				   
usui_mi>   c. /etc/resolv.conf の domain 行を以下のように変更する。
usui_mi> 
usui_mi>      (変更前)
usui_mi>        domain ###.%%.&&&.co.jp
usui_mi>   
usui_mi>      (変更後)
usui_mi>        search ###.%%.&&&.co.jp %%.&&&.co.jp
usui_mi> 
usui_mi>        → search 行の 2 つ目のドメイン部分を付加すると、
usui_mi>           「serpens.###.%%.&&&.co.jp」となり、DNS で名前解決可能です。
usui_mi> 
usui_mi> 本 ML ではいつも勉強させてもらっていますので、
usui_mi> 少しでも貢献できたら幸いです。
usui_mi> 宜しくお願いします。
usui_mi> 
usui_mi> ----------------------------------------------------------------
usui_mi> 碓井 成		E-mail: usui_mi@xxxxxxxxx
usui_mi> 
usui_mi>