2008年09月11日

"no ip domain-lookup"の代わりに"transport preferred none"

IOSでコマンドを打ち間違えたとき(=存在しないコマンドを入力したとき)、IOSは「その入力内容へのtelnet接続」と解釈します。

例えば、"conf t"と打つつもりが、"conft"となってしまった場合、"conft"というコマンドは存在しませんので、これを"telnet conft"の省略形と解釈します。

次に、"conft"はIPアドレスではありませんので、"ホスト名conft"の名前解決を試みます。このときネームサーバが指定されていないと、プロンプトが戻ってくるまでに時間がかかります。
Router#conft
Translating "conft"...domain server (255.255.255.255)
 (255.255.255.255)
Translating "conft"...domain server (255.255.255.255)

% Unknown command or computer name, or unable to find computer address
Router#
この問題の詳細と解決法はCiscoのサイトにあり、これに従って"no ip domain-lookup"を設定するのが一般的だと思われます。


しかし、問題の本質は「コマンドを入力し、このコマンドが認識されなかった場合には、ルータではこのコマンドを、ユーザが telnet を使用してアクセスを試みているデバイスのホスト名であると解釈」することです。これを止めるにはどうすればよいでしょうか。

検索したところ、ネットワーク技術の今・昔に答えがありました。

lineコンフィグモードで"transport preferred none"(デフォルトは"transport preferred telnet")と設定すれば、コマンドが認識できない場合に、何もせず単にエラーになります。
Router(config)#line con 0
Router(config-line)#transport preferred none

Router#conft
             ^
% Invalid input detected at '^' marker.

Router#
なお、一時的に設定したい場合は、一般モードか特権モード上で"terminal transport none"でもOKです。
Router#terminal transport none
Router#conft
             ^
% Invalid input detected at '^' marker.

Router#


この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔