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

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



碓井です。
本 ML に投稿するのは初めてです。宜しくお願いします。

    >>   UNIX USERの9月号の付録CDを用いて、woodyをインストールして使い始めた
    >> ところ、potatoとtelnet/rloginコマンドの挙動が違うことに気が付きました。
    >>   違いは、次のような感じです。
    >>      potato環境:接続先HOSTをFQDNで指定しなくても、telnetが可能
    >>      woody環境: 接続先HOSTをFQDN指定しないと、telnetが失敗
    >> どちらのPCも、resolv.conf / nsswitch.confは次のようになっており違いが
    >> ありません。
    >>   できれば、potato環境のように、HOST名をFQDNで書かなくてもtelnetできる
    >> ようにしたいのですが、どのようにしたらよろしいのでしょうか?

〜中略〜

    >> ■potato環境のtelnetコマンドの振舞い
    >>   次のように、接続先HOSTをFQDNで指定しなくても、telnetが可能です。

    >> suzuki@lupin:~$ telnet serpens.###
    >> Trying 10.WWW.AAA.BBB...
    >> Connected to serpens.###.&&.%%%.co.jp.
    >> Escape character is '^]'.
    >> [SSL not available]


    >> SunOS 5.7

    >> 〜以下、省略〜



    >> ■woody環境のtelnetコマンドの振舞い
    >>  一方、woodyの場合は次のように、エラーとなってしまいます。

    >> suzuki@claris:~$ telnet serpens.### 
    >> telnet: could not resolve serpens.micom/telnet: No address associated with hostname

    >>  次のように、FQDNで接続先HOSTを指定すると、telnetできるようになります。


    >> suzuki@claris:~$ telnet serpens.###.&&.%%%.co.jp
    >> Trying 10.WWW.AAA.BBB...
    >> Connected to serpens.###.&&.%%%.co.jp.
    >> Escape character is '^]'.


    >> SunOS 5.7

    >> 〜以下、省略〜

手元に O'Reilly の 「DNS&BIND」本がないのでうろ覚えなのですが、potato
と woody でのリゾルバライブラリのバージョンの違いによる挙動の違いのよ
うな気がします。

以前のリゾルバ(BIND 4.x 系列だと思いますが、詳細不明)は、
/etc/resolv.conf の domain/search に明示的に記述されていなくても、
親ドメインを付加して名前解決を行なうという挙動をしていたという記述があっ
たと記憶しています。 
これに対して、新しめのリゾルバは、親ドメインを付加して検索しなくなった
ようです。 
つまり「telnet serpens.###」と入力した場合だと、以下のような手順です。
(鈴木さんの記述された /etc/resolv.conf では /etc/resolv.conf の domain に 
 zz.yy.xx.co.jp と記述されていますが、zz.yy.xx.co.jp == ###.&&.%%%.co.jp 
 であると仮定しています。違う場合はご指摘願います。)

=== 以前のリゾルバの場合(potato?) ===

  1. 入力文字列の

      serpens

    で名前解決を行なう。 (順番的には 4. だったかも)
      → 見つからない。

  2. /etc/resolv.conf に記述してある domain 行の設定を付加し、
     
      serpens.###.###.&&.%%%.co.jp
                  ^^^^^^^^^^^^^^^^ リゾルバが付加した部分
    で名前解決を行なう。
      → 見つからない。

  3. 親ドメインの 「&&.%%%.co.jp」を付加し、

      serpens.###.&&.%%%.co.jp
                  ^^^^^^^^^^^^ リゾルバが付加した部分
    で名前解決を行なう。
      → 見つかる。

=== 新しめのリゾルバの場合(woody?) ===

  1. 入力文字列の

      serpens

    で名前解決を行なう。 (順番的には 4. だったかも)
      → 見つからない。

  2. /etc/resolv.conf に記述してある domain 行の設定を付加し、
     
      serpens.###.###.&&.%%%.co.jp
                  ^^^^^^^^^^^^^^^^ リゾルバが付加した部分
    で名前解決を行なう。
      → 見つからない。

  3. 付加すべき domain がもう存在しないため、名前解決をやめて、
     アプリケーション(telnet/rlogin) に名前解決できなかったというエラー
     を返す。 

potato と woody のリゾルバが BIND どのバージョンに当たるのかが調べ切れ
なかったので、外しているかも知れません。

もし、これが原因だった場合、以下のような解決策が考えられます。

  a. 「telnet serpens.###」 ではなく、「telnet serpens」 と入力して使う。
       → domain 行を付加すると、「serpens.###.%%.&&&.co.jp」となり、
          DNS で名前解決可能です。

  b. /etc/hosts に serpens.### のエントリを加える。
       → DNS ではなく、/etc/hosts にて名前解決が成功します。
				   
  c. /etc/resolv.conf の domain 行を以下のように変更する。

     (変更前)
       domain ###.%%.&&&.co.jp
  
     (変更後)
       search ###.%%.&&&.co.jp %%.&&&.co.jp

       → search 行の 2 つ目のドメイン部分を付加すると、
          「serpens.###.%%.&&&.co.jp」となり、DNS で名前解決可能です。

本 ML ではいつも勉強させてもらっていますので、
少しでも貢献できたら幸いです。
宜しくお願いします。

----------------------------------------------------------------
碓井 成		E-mail: usui_mi@xxxxxxxxx