| [Network] | |||||||||||||
Telnetクライアントの使い方
|
|||||||||||||
|
|||||||||||||
| 解説 |
Telnetは、管理作業などを行うためにネットワーク経由でリモートのマシンへログオンする場合によく用いられるが、Webサーバや各種のネットワーク・サービスのデバッグなどのために、Telnetクライアント・プログラムを使う機会も多い。
Telnetでは、基本的には単純な文字コードでしか通信ができないが、このことが逆に、ネットワーク・プロトコルにおける、プリミティブな(基本的な)コマンドやデータ、ステータスなどのやり取りを調べるために役に立つ。例えばWebサーバやメール・サーバとの通信がエラーになっても、クライアント・プログラムによっては、そのエラーの詳細を報告してくれないことが多い。単に「通信できません」と表示されたり、「名前が見つかりません」というような、あいまいなメッセージしか表示しなかったりする(もっとも詳細なエラーを報告されても、一般的なユーザーにとっては意味がないことの方が多いだろうが)。このような場合、実際に何が起こっているのか、どうしてエラーとなるのかなどを調べるには、サーバへTelnetで接続して手動でコマンドを送信し、その結果のメッセージを直接見ることができれば、簡単に解決することも多い。
ここでは、Telnetクライアントを、ネットワークのトラブルシューティングなどに使う場合の方法について解説する。
Telnetの基本的な使い方
Telnetの基本的な使い方は、コマンド・プロンプトを起動して、そこで接続先サーバ名(ホスト名)を指定してTelnetクライアントを起動するという方法である。
C:\>telnet ホスト名 |
これを実行すると、「ホスト名」で指定されたリモート・マシンの「Telnetサービス」へ接続される。「ホスト名」には、実際にはコンピュータの名前やFQDNで指定したマシンの名前、IPアドレスなどが指定できる。「Telnetサービス」とは、TCPの(標準では)23番ポートでリッスン(待ち受け)している、仮想端末(仮想的なキーボードと画面を持つ端末画面)のエミュレーション・サービスのことである。このサービスに接続すると、リモートのマシン上のコンソールで直接文字を入力して、コマンドを実行しているのと同じ効果が得られる。Windows系のOSでは(管理者以外には)あまり一般的な使い方ではないが、UNIXやLinuxなどでは、Telnetによるリモート・システムへのログインは広く普及しているコンピュータの利用方法である。
もしこの場合、指定したリモート・マシン上でTelnetサービスが稼動していなければ(マシンそのものは存在していることに注意)、次のようなエラー・メッセージが表示される。
■Windows 2000の場合 |
Windows 2000の方がメッセージが簡潔で少し不親切であるが、この場合は接続しようとしたポート番号は、デフォルトの「23番」である。Windows XPの方は、接続できなかった理由が「対象のコンピュータによって拒否されたため」と表示されている。一般的には、リッスン状態にないポートへの接続要求は、「拒否される」ことになっている(ネットワーク・プロトコル的にいうと、実際には拒否応答「RST(reset)」が返されている)。
もし指定しているリモートのホストそのものが存在していなければ(つまり間違ったホスト名を指定している場合は)、次のようなメッセージが出力される。
■Windows 2000の場合 |
Windows 2000では、先ほどの接続が拒否された場合と同じメッセージが表示されているので、これだけではその区別は難しい。だが実際には、このメッセージが表示されるまでの待ち時間が長いという違いがある。Telnetコマンドの内部では、指定されたマシンに接続できないので、何度か再試行を行っているからだ。もっとも名前解決自体でも再試行を行うかもしれないので(hostsファイルに記述してあればすぐに名前解決できるが、そうでない場合はWINSサーバやDNSサーバなどに順次問い合わせるため)、実際にエラーが表示されるまでの待ち時間は環境によっても変わるだろう(最低では3秒程度から、長いと20秒程度かかるようである)。
Windows XPの場合は、先ほどの例とは異なるメッセージが表示されている。2通りのメッセージが出力されているが、前者は名前解決などができなかった場合で(表示されるまでの待ち時間はWindows 2000と同様に長いことが多い)、後者は名前解決はできたが(IPアドレスは分かったが)、そのホストへの通信要求に対する応答が返ってこなかった場合(そのホストが存在していないか、途中でブロックされている)に表示されるようである。
もしIPアドレスでなく、名前やFQDNで指定してTelnetで接続できない場合は、名前解決そのものが正しく行われているかどうかも確認しておくとよいだろう。Windows環境における名前解決の方法には、TCP/IPで一般的なhostsファイルやDNSだけでなく、lmhostsやWINS、NetBIOSブロードキャストなどを使ったさまざまな手段が存在する(しかもそれらの優先順位もいろいろある)。そこで、任意の「ホスト名」が実際にどの「IPアドレス」として解決されているかを調べるには、pingコマンドを使うのがもっとも手っ取り早いだろう。pingコマンドには、pingの対象となるホストのIPアドレスを表示する機能があるので、同じ引数でpingコマンドを再実行すればよい。
C:\>telnet serverxx …接続先をIPアドレスではなく、名前で指定する |
ポート番号を指定してTelnetで接続する
Telnetでは標準ではTelnetサービス(TCPの23番)のポートへ接続するようになっているが、オプションによってこれを変更することができる。例えばWebサーバなら80番、SMTPサービスなら25番、POPサービスなら110番などがよく使われるポート番号である。これらのサービスでは、主にテキストによってコマンドやその応答をやり取りしているので、Telnetプログラムで接続して、容易にそのサービスをチェックしたり、トラブルシューティングなどを行ったりすることができる。
Telnetで接続するポート番号を指定するには、以下のように、ホスト名に続けてポート番号を指定すればよい。
C:\>telnet ホスト名 |
ポート番号は、数値で指定してもよいし、サービスを表す文字列で指定してもよい。実際のポート番号とサービス名の対応は、%WINDIR%\system32\drivers\etc\services ファイルに格納されている(UNIXやLinuxの/etc/servicesファイルに相当する)。
例えばメール送信用のSMTPサーバに接続するには、次のようにする。
C:\>telnet mailserver smtp…SMTPサーバへ接続する |
接続直後に一瞬だけ表示される「エスケープ文字は 'CTRL+]' です」というメッセージは、Telnetクライアント・プログラム自身が出力している文字列である(実際にはすぐに画面が切り替わってしまうので、これを見る機会は少ないだろうが)。そして「220 ……」から先が実際のSTMPサーバからの応答である。この例のように、サーバ側から何らかのオープニング・メッセージ(グリーティング・メッセージ)が出力される場合もあるが、出力されないようなサービスもある(もっともテキストでオープニング・メッセージが出力されないようなサービスでは、Telnetで接続してもその後の操作ができないようなものが多い)。
いったんサーバとの接続が確立すれば、後はキーボードからコマンドを入力すれば、それがそのままサーバへと送信される。そしてコマンドに対する応答がサーバ側から送り返されてくると、それがそのまま画面へと表示される。
それでは実際にコマンドを入力してみよう。例えばSMTPサーバのコマンド一覧を表示させるために、HELPというコマンドを送ってみる。具体的には、キーボードから「H」「E」「L」「P」の4文字(小文字でもよい)と「Enter」キーを押せばよい。すると、コマンド一覧が表示されるはずである。ただし、デフォルトのままでは、自分が入力した文字は表示されず、サーバからのメッセージしか表示されないことがある。これではユーザーは手探りでコマンドを入力せねばならず、とても使いにくい。
このようなTelnetクライアントの動きは、実は「仕様」である。Telnetクライアントを使う場合、ユーザーが文字を入力すると、その文字がすぐに画面に表示されるのが普通である。だが実際には、その文字はTelnetのリモートのサーバ側に送られ、サーバ側から改めてクライアント側へと送り返しているのである(遅い回線経由でTelnetを利用すると、送り返されてくるまでのタイムラグがよく分かる)。このような機能をリモート・エコーという。
だが一般的なサーバ・アプリケーションではリモート・エコーの機能は持っていないので(インタラクティブに使うわけではないので、そのような機能は実装されていない)、ローカル側で入力した文字を自分自身で表示する、「ローカル・エコー」モードを有効にするとよい。このためには、次に述べる、Telnetのオプション設定機能を利用する。
Telnetオプションの設定
ローカル・エコーの機能を有効にしたり、Telnetで利用する漢字コードを切り替えるには、Telnetのコマンド・モードで、オプション設定機能を利用する。
Telnetのコマンド・モードを利用するには、2通りの方法がある。1つは、Telnetに引数を何も付けずに起動するという方法である。こうすると、Telnetはコマンド待ち状態で起動する。
C:\>telnet……引数なしで起動する |
この設定画面を表示させるもう1つの方法は、Telnetでリモートのホストへ接続している時に、「エスケープ文字」という特別な文字を入力すればよい。これは、Telnetの通信モードからコマンド・モードへ「エスケープ(脱出)」させるための特別な文字コードのことで、一般的には[Control]+「]」(Controlキーを押しながら右角括弧キーを押す)が使われる。Telnetコマンド起動時に表示されている「エスケープ文字は 'CTRL+]' です」は、このエスケープ文字の現在の設定を表示している。通信中は、このキーを押すと、いつでもすぐにこのコマンド・モードへと移行(脱出)する。
逆にコマンド・モードから通常の通信モードへ復帰するためには、単に「Enter」キーを押せばよい。アクティブなコネクションがあれば、すぐに元のTelnetの画面へと切り替わる(有効なコネクションがなければ、コマンド・モードのまま)。
■ローカル・エコーの制御
ローカル・エコー・モードは、デフォルトでは無効になっているが、設定を変えることによって、有効にすることができる。このためには、setコマンドを利用する。
■Windows 2000の場合■Windows XPの場合
|
このように、setコマンドには多くの引数があるが、ローカル・エコーをオンにするには、Windows 2000ならば「set local_echo」とする。逆に無効にするには「unset local_echo」とする。Windows XPの場合は、引数は「local_echo」ではなく、「localecho」となっているので(下線が含まれていないので)注意する。
■漢字コードの設定
Telnetでは、さまざまな種類の仮想端末に接続するために、Shift JISだけでなく、EUCやJISコードなど何種類かの漢字コード・セットをサポートしている。Windows系OSでは一般的にShift JISコードが使われるので、WindowsのTelnetクライアントでは、デフォルトでShift JISを入力、表示するようになっている。つまりキーボードから入力された漢字コードはShift JISコードに変換して送信され、ホスト側から送信されてきた文字はShift JISコードとして表示されるようになっている。
しかしUNIXなどではEUC漢字コードが一般的なので、UNIXやLinuxなどのTelnetサービスに接続するときはEUCにする必要がある。また、メールやニュースなどのシステムではJISコードが使われることが多いので、これらのシステムへ接続してデバッグするときは、JISコードに切り替えておくと便利である。
Telnetで漢字コードを切り替えるには、set codesetコマンドを使用する。引数には「Shift JIS」や「Japanese EUC」「JIS Kanji」などを指定する。
Microsoft Telnet> set codeset shift jis……Shift JISコードにする |
■エスケープ文字の送信
Telnetで通信中は、エスケープ文字を入力すると、すぐにコマンド・モードへと移行するが、場合によってはこの文字を相手側へ送信したいこともある。その場合は、コマンド・モードで「send esc」とすれば、エスケープ文字そのものを送信することができる。送信後、Enterキーを押せばすぐに元のTelnet画面へと復帰する。
また、エスケープ文字を別の文字に割り当て、デフォルトの「Ctrl-]」をそのまま通るようにする方法もある。例えば「set escape ^\」とすると(^\はCtrlを押しながら\を押す)、「Ctrl-\」がエスケープ文字になる。
■リモート・ホストのオープンとクローズ
Telnetに引数を付けずに起動すると、すぐにコマンド・モードになる。この状態からリモートのホストや特定のポートへと接続するには、openコマンドを用いる。引数として、ホスト名と接続するポート番号(デフォルトはTelnetポート)を指定する。
Microsoft Telnet> open server……serverのTelnetサービスへ接続する |
いったん接続されたコネクションを強制的にクローズするには、closeコマンドを使う。
■そのほかのオプション
コマンド・モードで有効なそのほかのオプションとしては、ログ・ファイルを記録するモード(通信内容をすべてテキスト・ファイルとして保存しておくモード)や、エミュレーションする端末タイプの設定(VT52やVT100などが選択可能)、NTLMの認証モードの設定などがある(Telnetの認証モードについては「TIPS―UNIXからTelnetサービスに接続できない」も参照)。なお、コマンド・モードから(強制的に)Telnetを終了するには、quitコマンドを使う。![]()
| 関連記事 | ||
| Windows TIPS:Telnetサービスを起動する(Windows Insider) | ||
| Windows TIPS:UNIXからTelnetサービスに接続できない(Windows Insider) | ||
|
||||||||||||||||||||||||||||
| 「Windows TIPS」 |
TechTargetジャパン
- フォルダの名前が変更できない不具合を解消する (2012/5/25)
Windows 7のエクスプローラで画像ファイルやPDFが含まれるフォルダの名前が変更できなかったり、削除できなかったりする不具合の解消方法を解説する - 通信相手のMACアドレスを調べる近隣探索プロトコル (2012/5/24)
イーサネットで通信する場合、相手のMACアドレスが分からないとパケットを送信できない。ARPに代わるIPv6の近隣探索機能とは? - 第316話 ネット対応トイレ (2012/5/22)
毎日用をたすだけで、体温に体重、血圧、体脂肪率も計測して、尿検査、便検査も自動で実施、データはネット経由で医師に送られます - 私物のスマートフォンを業務に活用、「BYOD」って何? (2012/5/21)
私物のスマホやノートPCを組織的に業務に活用する「BYOD」が新たなトレンドとして注目されている。なぜいまBYODなのか? BYODのメリットとデメリットは?
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

