金曜日, 5月 20, 2011

Linuxでシリアルコンソールを使う

メモの為に(というかzdnetの都合で記事が消えないように)コピー。
著作権を侵害するつもりはありません。問題があればコメントでご連絡を。

Linuxでシリアルコンソールを利用するのは、モデムを利用することと似ている。実際、利用されている技術は同一のものである。違う点は、モデムを用いてリモートのシステムにダイアルする代わりに、ヌルモデムケーブルという特殊なシリアルケーブルを用いて2台のコンピュータのシリアルポートを接続するということだけだ。現在、多くのデスクトップやラップトップのマシンにはシリアルポートは付属していない。しかし、サーバ向けのシステムでは事実上すべてのコンピュータにシリアルポートが付属しているので、この手法を利用することは可能だ。

 シリアルコンソールを利用する場合のしくみはこうだ。一方のシステムは、ケーブルの一端で待ち受けを行うようにセットアップする。そして、もう一方のシステムは、クライアントとしてケーブルの反対側からログインを行うために利用する。ただし、ヌルモデムケーブルは左右対称であるので、この関係を逆転させることも非常に簡単だ。次に、シリアルコンソールの必要性についてであるが、シリアルコンソールが必要とされる理由の一つには、ネットワークがダウンしてシステムが正しく動作しなくなった場合に、デバッグ手段として非常に役立つということが挙げられる。また、セキュリティルールを回避してネットワーク間の接続を行う目的でも利用可能である。これは、ファイルのコピーといった用途ではなく、他のシステムのシェルへのアクセス権を得る目的で、だ。具体的には、サーバがDMZ内に設置されている場合、LANからサーバへシェルでアクセスするのは、ネットワークが複雑であるため大変だ。しかし、シリアルコンソールを利用すれば、それを迂回することが可能になるのである。その場合には、リモートからアクセス可能にするためにDMZサーバ上でsshdサービスを動作させる必要もなくなるかもしれない。

 それでは、実際にシリアルコンソールを利用する場合の手順を示そう。まず、実際に必要となるものは、ヌルモデムケーブルとシリアルポートがあるシステム2つだ。ただし、シリアルポートが実際に有効になっているかどうかはBIOSで確認して欲しい。さて、準備が整ったら、サーバ側では/etc/inittabを編集し以下の行を追加する。

S0:12345:respawn:/sbin/agetty -L 115200 ttyS0 vt102
 ここではagettyを起動するように指定している。この場合は、/dev/ttyS0(最初のシリアルポート)でボーレート115200bpsで待ち受けを行い、vt102をターミナルエミュレータで用いるという設定だ。ヌルモデムケーブルを接続してagettyを起動したら、クライアント側ではscreenを用い、以下のようにして接続を行おう。

$ screen /dev/ttyS0 115200
 screenが起動した後Enterを押せば、見慣れたリモートのシステムのログインプロンプトが表示されるはずだ。接続を切断するには、ログアウト後に[CTRLーA]+Kを入力するだけでよい。

 もしお望みであれば、シリアル接続で監視を行うために、すべてのログをシリアルポートにも送信するようsyslogの設定を変更することも可能だ。この設定は、/etc/syslog.confを修正して以下の行を追加することによって行える。

*.* /dev/ttyS0
 どうしてもネットワークルータやスイッチのようなハードウェアにコンソールを介して接続する必要があるのなら、screenを利用してシリアル接続を管理できることは非常に簡単でよい方法だろう。事実上、すべてのLinuxディストリビューションにはscreenがプリインストールされているか、もしくはapt-get、urpmi、yumを用いてすぐにインストール可能だ。また、agettyに関してもほとんどのディストリビューションでは最初からインストールされている。

0 件のコメント: