conserverでシリアルコンソールサーバー


conserverをインストールしてシリアルコンソールの管理をする。

必要なパッケージをインストール

serverだけでなくclientも入れないとローカルホストに対しても接続できないので注意。

# apt install conserver-server conserver-client

設定

デフォルト設定のバックアップ

# cd /etc/conserver
# cp conserver.cf conserver.cf~default

下記のように設定を変更(変更箇所は★)

default * {
       master localhost;
       logfile /var/log/conserver/&.log;
       timestamp "";
       include full;
       timestamp 1hab; #<-★ 追加(1時間おきにログにタイムスタンプを加える)
       parity none; #<-★ 追加(シリアル通信のパリティ無しをデフォルト設定にする)
}
access * {
        trusted 127.0.0.1; #<-★ コメントアウト(ローカルからは認証なしでログイン可能とする)
#       allowed 127.0.0.1; #<- ★コメントイン
}
console con1 { type device; baud 9600; device /dev/ttyUSB0; } #<- 追加(/dev/ttyUSB0を速度9600bpsでホスト名con1として追加する)

上の例では/dev/ttyUSB0(速度9600bps)をcon1として登録している。

サービスの自動起動設定

# systemctl daemon-reload
# systemctl restart conserver-server

動作の確認

次のコマンドでアクセスできるかを確認。

# console con1

コンソールから抜ける時[Ctrl-E] → [c] → [.] の順にキーを押す。ちょっと独特。

ログの確認

操作のログは下記ファイルに保存されます。

# cd /var/log/conserver/
# ls 
con1.log  server.log

デバイス名固定の方法

複数のUSBシリアルケーブルを使っていると、時々デバイスが入れ替わってしまうという問題が発生します。そこでUSBのシリアル番号を使い、udevでデバイス名に別名(リンク)を付けます。

デバイスの情報を確認

下記は/dev/ttyUSB0の情報です。

# udevadm info -q property -n /dev/ttyUSB0 | grep -e _ID -e _SERIAL
ID_VENDOR_ID=0403
ID_MODEL_ID=6001
ID_SERIAL=FTDI_FT232R_USB_UART_AB0MRYWE
ID_SERIAL_SHORT=AB0MRYWE
# vi /etc/udev/rules.d/50-usb-serial.rules
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="AB0MRYWEXX", SYMLINK+="ttyUSB-com0", GROUP="dialout"

複数ある場合は個数分の行を加えます。

設定ファイルは作成した瞬間に反映されますが、うまく反映されない時は下記を試してみてください。

# udevadm control --reload-rules
# udevadm trigger

うまく行かない時は下記のコマンドでデバッグできます。

# udevadm test $(udevadm info -q path -n /dev/ttyUSB4) 2>&1 

conserverの設定変更

conserver.cfの内容を設定に合わせて書き換えます。

# cd /etc/conserver
# vi conserver.cf
console con1 { type device; baud 9600; device /dev/ttyUSB-com0; } #<- 追加(/dev/ttyUSB0を/dev/ttyUSB-com0へ変更)

再起動して反映させます。

# systemctl restart conserver-server