はじめに
第4回目となる今号は、
コンソールサーバとは
各種機器のコンソールにネットワークを介して接続するハードウェア、
Conserverとは
シリアル、
準備
Conserverのインストール
OBS600のWebインターフェースのアプリケーションマネージャ、
# pkg_add conserver8
機器構成
今回は3台のサーバを用意して、
server1のCOM1ポートとOBS600の背面にあるRS232Cポートを、

OBS600の設定
OBS600にシリアルコンソール、
接続対象のホスト名の設定
通常ホストの設定は/etc/
172.16.14.90 server1
172.16.14.91 server2
172.16.14.92 server3
rc.confの編集
ConserverをOBS600起動時に自動実行する場合は、
# ls /usr/pkg/etc/rc.dappmgr conserver8 # echo conserver8 YES >> /etc/rc.conf
設定内容を本体のFlashROMに保存
OBS600の通常起動時ではRAMディスクにルートファイルシステムを展開しているため、
# flashcfg -s /etc/flashcfg
conserver.cfの編集
アプリケーションマネージャ、
conserver.
default full { ←①
rw root,plathome;
ro watch;
}
default * { ←②
logfile /usr/pkg/var/consoles/&;
logfilemax 1m;
timestamp 1hab;
include full;
master localhost;
}
console ssh { ←③
type exec;
exec ssh user2@server2;
}
console telnet { ←③
type exec;
exec telnet server3;
}
console serial { ←③
type device;
device /dev/ttyS1; parity none; baud 115200;
}
①default fullブロック:ユーザのアクセス制御の設定
rwはキーボード入力できるattach read/write権限で、 rootとplathomeユーザに与えています。roは参照のみのread only権限で、 watchユーザに与えています。全員にrw権限を与える場合は “rw *” と記述します。 “ro !root” と記述すると、 rootユーザ以外全員をro権限に設定できます。 ②default *ブロック:conso leブロックの共通の設定
logfile行のログファイル名に “&”を指定することでコンソールごとの別ファイルで保存することができます。 logfilemax行でログのローテートサイズを指定します。今回は1Mバイトに設定しています。timestamp行で1時間ごとにタイムスタンプをログファイルに出力する設定にしています。そのログが出力された日時がわかるようになります。 1h 1時間。他に分 (m)、 日 (d)、 ログ (l) の行数で指定可能 a コンソールへの接続/ 切断のログを出力 b break信号をログに出力 ③コンソールごとの設定
ssh、telnetは外部コマンドを使用するので、 type行がexecとなります。exec行で起動するコマンドと起動オプションを記述します。serialは、 シリアルポートに接続しますので、 type行がdeviceとなります。device行でデバイスファイルとボーレートなどの通信設定を記述します。
conserver.passwdの編集
今回、 Conserverにアクセスするパスワードはシステムのパスワードと同一にしたため、
*any*:*passwd*
server1の設定
server1は、
grubの設定
カーネルの起動オプションにconsole出力の設定を行います。/boot/
title Debian GNU/Linux, kernel 2.6.26-2-686
root (hd0,0)
kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro console=tty1 console=ttyS0,115200
initrd /boot/initrd.img-2.6.26-2-686
inittabの設定
ttyS0の設定を追加します
# Example how to put a getty on a serial line
# (for a terminal)
#
T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100
# T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100
動作確認
Conserverの起動
Conserverの起動スクリプトを実行します
# /usr/pkg/etc/rc.d/conserver8 start Starting conserver. # ps ax PID TTY STAT TIME COMMAND 1 ? Ss 0:58 init [2] 〈略〉 9830 ? Ss 0:00 sshd: root@pts/3 9832 pts/3 Ss 0:00 -bash 9862 ? Ss 0:00 /usr/pkg/sbin/conserver -d 9863 ? S 0:00 /usr/pkg/sbin/conserver -d 9868 pts/0 Ss+ 0:00 telnet -l user3 server3 9869 pts/1 Ss+ 0:00 ssh user2@server2 9879 pts/3 R+ 0:00 ps ax
Consoleコマンド
コンソールへの接続は、
ssh、
# console ssh Enter root@ssdlinux.example.org's password: ←①OpenBlockS 600のrootユーザのパスワードを入力 [Enter `^Ec?' for help] [-- MOTD -- just a simple ssh to server2] ←②空リターンを入力 Connection closed by 172.16.14.91 The authenticity of host 'server2 (172.16.14.91)' can't be established. RSA key fingerprint is ce:e7:4a:c1:6f:f5:2e:68:06:09:31:13:68:a7:63:55. Are you sure you want to continue connecting (yes/no)? yes ←③yesを入力 Warning: Permanently added 'server2,172.16.14.91' (RSA) to the list of known hosts. user2@server2's password: ←④パスワードを入力 Last login: Thu Aug 26 16:56:30 2010 from 172.16.14.98 SSD/Linux 0.5-20100723/2.6.29 #1 SMP Fri Jul 23 16:28:00 JST 2010 $
# console telnet Enter root@ssdlinux.example.org's password: ←①OpenBlockS 600のrootユーザのパスワードを入力 [Enter `^Ec?' for help] [-- MOTD -- just a simple telnet to server3] ←②空リターンを入力 Login incorrect server3 login: user3 ←③ログインIDを入力 Password: ←④パスワードを入力 server3[7] $
# console serial Enter root@ssdlinux.example.org's password: ←①OpenBlockS 600のrootユーザのパスワードを入力 [Enter `^Ec?' for help] ←②空リターンを入力 Debian GNU/Linux 5.0 server1 ttyS0 server1 login: user ←③ログインIDを入力 Password: ←④パスワードを入力 Linux server1 2.6.26-2-686 #1 SMP Mon Jun 21 05:58:44 UTC 2010 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/ copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. user1@server1:? $
終了コマンド
consoleコマンドの終了方法は、
$ [disconnect]
# ←sshが切断されてOBS600のプロンプトに戻ります
コンソールの切り替え
ctrl+e、
$ [console: serial]
[Enter ^Ec? for help]
←空リターンを入力
Debian GNU/Linux 5.0 server1 ttyS0
server1 login:
同一コンソールへの接続
Conserverでは1つのコンソールに対して1人のみキー入力ができます。後からの接続はRead onlyとなります。Read onlyコンソールは入力権限を持っているユーザのキー入力を1文字ずつリアルタイムでモニタリングします。入力権限を持っているユーザが切断した場合、
図9はrootユーザがsshのコンソールに接続しているときに、
$ console ssh Enter plathome@ssdlinux.example.org s password: [Enter ^Ec? for help] [no, root@localhost is attached] ←① [read-only -- use ^E c ? for help] ←② pwd ←③ /home/user2 $ [attached] ←④
- ①rootユーザがすでに接続している
- ②plathomeユーザは参照のみ
コンソールの操作をしたい場合は、ctrl+e、 c、 fを押下することで強制的に入力権限を得ることができ、 rootユーザがRead Only権限に変更されます - ③rootユーザがpwdコマンドを実行した結果が表示
- ④rootユーザが切断したため、
入力権限を取得
ログファイル
コンソールのログファイルは、
# ls /usr/pkg/var/consoles/ serial ssh telnet
sshのログ
ログファイルから、
[--root@localhost attached --Mon Aug 30 17:42:04 2010] ←①
Permission denied, please try again.
user2@server2's password:
Last login: Mon Aug 30 17:32:02 2010 from 172.16.14.98
SSD/Linux 0.5-20100723/2.6.29 #1 SMP Fri Jul 23 16:28:00 JST 2010
server2[21]$ pwd
/home/user2
server2[22]$ v/^H ^Hi /etc/hosts^C ←②
server2[22]$
server2[22]$
server2[22]$ [--root@localhost detached --Mon Aug 30 17:42:56 2010] ←①
[--plathome@localhost attached --Mon Aug 30 17:42:56 2010] ←①
server2[22]$ pwd
/home/user2
- ①接続/
切断のログ (conserver. cfのtimestamp 1habのaの機能) - ②タイプミスもロギングされる
serialのログ
console serialのログを抜粋します
[--root@localhost attached --Tue Aug 31 11:53:45 2010] ←①
Debian GNU/Linux 5.0 server1 ttyS0
server1 login: user1
Password:
Last login: Mon Aug 30 11:41:13 EDT 2010 on ttyS0
(略)
Debian GNU/Linux 5.0 server1 ttyS0
server1 login: [--MARK --Tue Aug 31 14:00:00 2010] ←②
root
Password:
Last login: Tue Aug 31 09:39:14 EDT 2010 on ttyS0
- ①接続/
切断のログ - ②タイムスタンプのログ
(conserver. cfのtimestamp 1habの1hの機能)
まとめ
OpenBlockS 600とConserverでコンソールサーバを構築しました。ログファイルから以前の操作手順を参照したり、
弊社ではOpenBlockSのカーネルのデバッグを行う際に、
参考ページ
- Conserver
- URL:http://
www. conserver. com/