HOMELinux道場Linux道場ネットワーク編第4回 TELNET+SSH

Linux道場ネットワーク編

第4回TELNET+SSH

はじめに

前回は、ネットワークに関連する用語についてと、実際にLinux OSを使用し、コマンドを入力してネットワークインターフェースの 設定状態の確認を行いました。今回はネットワーク通信確認を行なうコマンドと、リモート接続に使用する、「TELNET」と「SSH」に ついて取り上げます。

ネットワーク通信確認を行なうコマンドについて

対象ホストとの通信確認を行う「ping」コマンドと、対象ホストまでの経路を確認する「traceroute」コマンドについて取り上げます。コマンドを実践する前に「ICMP」について解説します。

「ICMP」について

「ICMP」(「Internet Control Message Protocol」)は、パケット送信に異常が発生した(パケットの送信が行なえなくなった)時にエラーメッセージや制御(診断)メッセージの通知に使われるプロトコルです。このメッセージはパケット受信先のホスト、(受信先ホストが見つからない等の時は)経路の途中にあるIPルーターがパケット送信元に対して通知します。
表1はICMPメッセージの種類のタイプコードと内容(一部)を纏めた表です。

表1.ICMPメッセージの種類(一部)表1.ICMPメッセージの種類(一部)

ICMP到達不能メッセージについて

ICMP到達不能メッセージは、対象のホストに対してパケットの送信が行えなかった場合に、IPルーターが送信元ホストに送信します。このICMP到達不能メッセージには、パケットが到達できなった原因も表示されます。
表2はICMP到達不能メッセージの種類のCode番号とメッセージ、内容(一部)を纏めた表です。

表2.ICMP到達不能メッセージ (一部)表2.ICMP到達不能メッセージ (一部)

「ping」コマンドについて

「ping」コマンドは、ネットワーク上の相手先ホストへの到達が可能か調査するコマンドです。(ping = Packet ImterNetwork Groper)
ターゲット(ホスト、またはIPアドレス)に対して、パケットを送信し、ターゲットからの返答を確認します。
「ping」コマンドは「ICMP」のタイプコードの「8」と「0」を利用して行なわれます。また「8」と「0」のメッセージを「ICMPエコーメッセージ」と言います。

図1.ICMPエコーメッセージ図1.ICMPエコーメッセージ

「ping」コマンドの書式は「ping IPアドレス(またはホスト名)」になります。コマンドを実行し、応答があると応答時間が表示されます。図中にある「time=xxxx ms」が応答時間(単位ms)です。Linux OSの場合、[Ctrl + C]ボタンを押すまで処理が継続されます。
(「ping」コマンドはWindows OS(DOSプロンプト画面)でも使用でき、ターゲットに対して4回エコー要求を行ないます。)
図2では、ターゲットにIPアドレス、図3ではターゲットにホスト名を指定してpingコマンドを実行しています。

図2.ターゲットにIPアドレスを指定してpingコマンドを実行図2.ターゲットにIPアドレスを指定してpingコマンドを実行

図3.ターゲットにホスト名を指定してpingコマンドを実行図3.ターゲットにホスト名を指定してpingコマンドを実行

図4は、現在ネットワークに接続していないターゲットに対してpingコマンドを実行した例です。そのため、エラーメッセージとして「Destination Host Unreachable」(指定されたホストに到達できない)が表示されています。

図4. 存在しないターゲットを指定してpingコマンドを実行図4. 存在しないターゲットを指定してpingコマンドを実行

「traceroute」コマンドについて

「traceroute」コマンドは、ネットワーク上の特定のホストまでの経路を表示(確認)するコマンドです。
「traceroute」コマンドは、パケット情報にあるTTLを利用しています。TTL(Time To Live)とは、ネットワーク上でのパケットの生存時間です。ネットワーク上に存在するパケットにはTTL値が決められており、パケットがIPルーター(ゲートウェイ)を通過する度に1ずつ減少し、TTLが0になるとパケットはネットワーク上から破棄されます。またIPルーター(ゲートウェイ)がパケットを破棄する時は、送信元に対して破棄したことを連絡する「ICMP Time Exceeded Message」(ICMPメッセージタイプコード11 時間超過(Time Exceeded)を通知します。TTLは、設定間違いや存在しないホストへのパケット送信などによる宛先不明のパケットなどが、ネットワーク上に溢れない様にするための機能です。

図5. tracerouteコマンドを実行時の流れ図5. tracerouteコマンドを実行時の流れ

「traceroute」コマンドの書式は「traceroute IPアドレス(またはホスト名)」になります。
図6はLinux OS上でtracerouteコマンドを実行したときの例です。(Windows OSの場合は、「tracert」になります。)
赤枠に囲まれた部分は「TTL数 ホスト名(IPアドレス) 応答時間 応答時間 応答時間」を表します。
応答時間が3つ表示されますが、これはTTLが同じパケット3回送信して、ネットワークの混雑状況など確認している為です。
同じTTLで応答時間のばらつきが大きい場合は、ネットワークが混雑しているといえます。
また、黄枠に囲まれた部分の「* * *」は応答が無かったことを示します。
(セキュリティ対策の為、敢えて応答しないIPルーター(ゲートウェイ)もあります。)

図6.tracerouteコマンド実行時の例図6.tracerouteコマンド実行時の例
図6で指定したターゲット「lpic.or.jp」はサンプルであり、実際には存在しておりません。

「traceroute」コマンドと同等のコマンドとして、「tracepath」コマンドがあります。
図7はLinux OS上で「tracepath」コマンドを実行したときの例です。

図7. tracepathコマンド実行時の例図7. tracepathコマンド実行時の例
図7で指定したターゲット「lpi.org」はサンプルであり、実際には存在しておりません。

図中にある赤枠の「PMTU」(PASS MTU/経路MTU (MTU = 1回の転送で送信できるデータの最大値を示す値))は通信間で最大転送可能パケットサイズが最小である経路(地点)を表し、黄枠の「asymm」(asymmetric)は、通信経路が非対称であったことを意味します。
前回と今回で取り上げた「ifconfig」(Windows OS:「ipconfig」)、「ping」、「traceroute」(Windows OS:「tracert」コマンドはネットワークの設定確認、障害調査には欠かすことのできないコマンドです。Linux OSとWindows OSでコマンドに違いはありますが、どちらでも使いこなせるように覚えておくことをオススメします。

「TELNET」と「SSH」(Secure Shell)について

「TELNET」と「SSH」はリモート接続(遠隔ログイン/操作)を行なう為に使うサービス(プロトコル・プログラム)です。
「TELNET」、または「SSH」を使用すると、現在操作しているコンピュータからネットワーク上に接続されている別のコンピュータにログインし、操作を行なうことができます。「TELNET」と「SSH」の最大の違いとして、「TELNET」はホスト間の通信を、そのまま状態で行なうのに対し、「SSH」はコンピュータ間の通信を暗号化して行ないます。「TELNET」での通信は暗号化が行なわれていないので、パケットキャプチャー(ネットワーク上に流れるパケットを解析、表示する)ソフトで「パスワードの盗聴」等をされてしまう危険があります。それに対して「SSH」は暗号化した状態で通信を行なっているので、「TELNET」と比較するとセキュリティ面での信頼が高いです。そのため現状のLinux OSでは、リモート接続に「TELNET」ではなく「SSH」が標準で使用されます。

図8.TELNETまたはSSHを使用してのリモート接続図8.TELNETまたはSSHを使用してのリモート接続

「TELNET」の使用方法について

「TELNET」を使用してリモート接続を行う場合、接続元のコンピュータには「TELNETクライアント」(telnet)とリモート先のホストに「TELNET」によるリモートログインを許可するプロセス(サービス)(in.telnetd)が使用できる状態であることが前提になります。
リモート先ホストのプロセスを確認し、「inetd」、または「xinetd」プロセスが起動しているか確認してください。
in.telnetdサービスは一般的に「inetd」、または「xinetd」プロセスに含まれています。
(ps aux | grep inetd(xinetd)| grep v コマンドで確認できます。図9参照)

図9.xinetプロセス確認図9.xinetプロセス確認

「TELNET」の書式は「telnet IPアドレス(ホスト名)」になります。今回は実行環境として、Linux OSに「Debian (Linux version 2.6.18)」をインストールしたホストを2台(接続元ホストとしてホスト名「info」、リモート接続先ホストとしてホスト名「fifo」)使います。
図10は、ホスト名「info」にログインし、「TELNET」を使用してホスト名「fifo」にリモート接続を行った時の図です。

図10.TELNETを使用したリモート接続図10.TELNETを使用したリモート接続

図10の先頭(赤枠)ではリモート先ホスト名を指定して、telnetコマンドを実行しています。接続要求が到達するとリモート先ホストへのログイン画面(黄枠)が表示されます。ログイン名とパスワードを入力し認証されるとリモート先ホストにログインできます。リモートホストで「ps aux」コマンドを実行すると「in.telnetd」プロセスが起動しているのを確認できます。(緑枠)
リモート先ホストへの接続を終了するには「exit」(青枠)コマンドを実行します。

  • ※TELNETを使用したリモートログインが行えない場合は、「inetd」、または「xinetd」の設定を確認してください。
    「inetd」の場合は、「/etc/inetd.conf」ファイル(図11)を確認してください。(telnet設定行の先頭に「#」がついている場合は無効になっています。「#」削除後、inetプロセスの再起動をしてください。)

図11 /etc/inetd.confの設定図11 /etc/inetd.confの設定

  • ※「xinetd」の場合は、「/etc/xinetd.d/telnet」ファイル(図12)を確認してください。「disable = yes」の場合は使用できません。「disable =no」に修正後、xinetプロセスの再起動を行ってください。

図12 /etc/xinetd.d/telnetの設定図12 /etc/xinetd.d/telnetの設定

「SSH」について (接続先サーバーの設定・接続元から「コマンド」について)

「SSH」を使用してリモート接続を行う場合も、「TELNET」と同様に「SSHクライアント」(ssh)とリモート先のホストに「SSH」によるリモートログインを許可するプロセス(サービス)(sshd)が使用できる状態であることが前提になります。
リモート先ホストのプロセスを確認し、「sshd」プロセスが起動しているか確認してください。
(ps aux | grep sshd| grep v コマンドで確認できます。図13参照)

図13.sshdプロセス確認図13.sshdプロセス確認

「SSH」の書式は「ssh ログインユーザー名@ IPアドレス(ホスト名)」になります。実行環境は「TELNET」を実行した環境と同じです。(接続元ホストとしてホスト名「info」、リモート接続先ホストとしてホスト名「fifo」)
図14は、ホスト名「info」にログインし、「SSH」を使用してホスト名「fifo」にリモート接続を行った時の図です。

図14.SSHを使用したリモート接続図14.SSHを使用したリモート接続

図14の先頭(赤枠)ではログインを行うユーザー名とリモート先ホスト名を指定して、sshコマンドを実行しています。
接続要求が到達するとリモート先ホストへのログイン画面(黄枠)が表示されます。パスワードを入力し認証されるとリモート先ホストにログインできます。リモートホストで「ps aux」コマンドを実行するとsshdを使用してログインしているユーザー名(プロセス)が確認できます。(緑枠の[priv]はprivilege separation(権限分離/非特権)のことで、本来ならばroot権限で操作を行なう「sshd」の権限を分離して、非特権(ユーザー)モードで起動していることを表します。
また「pts/0(数値)」は仮想端末(リモート接続)を表します。(ptsは「pseudo-terminal slave」の略です。詳細は「man pts」を実行し、確認してください。(pseudo = 仮の、擬似の意味) リモート先ホストへの接続を終了するには「exit」(青枠)コマンドを実行します。

  • ※SSHを使用したリモートログインが行えない場合、「sshd」プロセスが起動しているか確認してください。「sshd」プロセスが起動していない場合は、「/etc/init.d/ssh start」を実行し、プロセスを起動してください。

おわりに

今回は通信確認を行うコマンドとリモート接続を行う「TELNET」と「SSH」について取り上げました。
次回は、「ntp」(ネットワークタイムプロトコル)とntpサーバーの構築と設定について取り上げます。

マイクロテクノロジー株式会社

コラム執筆/森谷 仁
マイクロテクノロジー株式会社 管理本部 情報システム室

〒101-0021
東京都千代田区外神田5-1-2末広ビル
TEL 03-3833-8080

このページのトップへ