KTBBSだって、telnetの夢を見るって話
もちろんKTBBS以外のBBSシステムだってOKにょ
2001年2月12日改定










超急いでいる方のための迅速な説明


 方法だけ知りたい方は以下の4項目を読んで真似してください。 それでできるはずです。詳しく知りたい方は後半もどうぞ。

1.tel2com Version 1.6 以降を用意する
2.tel2com BBS ゲートウェイ接続時の注意 に記されている結線のケーブルを作成し、 KTBBSホストとtel2comの動作しているパソコンをつなぐ
3.tel2comのCOM Port設定に送信文字列「CONNECT\r\n」と設定する
4.KTBBSは普通のモデムと同様の設定をする

以上です。








前置き


 telnet対応の草の根BBSシステムというと、まぁ一般的には MTBBSというソフトがあるよね。 たしかにMTBBSってのは他に類を見ないほど良くできたソフトではあるんだけど、 残念ながらWindows(Win32)上で動くプログラムだから、 Windows自身の不安定さを被ってしまうことになる。
 草の根BBSのホストを運営したことがある人なら分かるだろうけど、 ホストシステムってのは何ヶ月も連続稼動するものだし、そうじゃなくちゃ困る。 ところがWindowsってのは何ヶ月もの連続稼動には耐えられない。 下手をすると半日すら持たずにリソース不足で止まったりする。

 さて、そこでである。 自分のところで何ヶ月も安定して連続稼動している KTBBSをそのまま使って、 telnetに対応できないかと考えたわけ。 だって、不安定なWindowsにホストを乗せる気はしないし、 今までの過去ログとかファイルボードとかの財産を受け継ぐことも考えると、 システムそのままで移行ってのは魅力的だよね。
 KTBBSはシリアルポートで通信するのだから、 telnetとシリアルの橋渡しをしてくれるソフトがあればいいのだ。



 あ、できればDOSかWindows版がいいな。俺って、UNIX使えないから。












telnetとシリアルをつなぐソフトたち


 フリーソフト&シェアウェアを多数収録している ベクター というサイトをご存知の方も多いと思うが、このサイトで検索すれば telnetをシリアル(COMポート)に渡すソフトがいくつか発見できるはずだ。

ざっと探したところ、
NPCOMM  シェアウェア \5,000/US$48
Telnet Modem Server  シェアウェア 2,000円
TELCOM on Win95  シェアウェア 1,000円
tel2com  シェアウェア 1,000円



この中から、tel2comを採用した。理由は安いから(笑
でも、結果としてtel2comを選んで正解だった。 動作に問題はなかったし、ユーザーサポートは迅速かつ親切だった。











tel2comとKTBBSの接続


 一番簡単なのは、KTBBSの走っているBBSホストのパソコンと、 tel2comの走っているパソコンとを市販のリバースケーブル(別名クロスケーブル) で接続し、KTBBSのCHANNEL.DEFの種別を [0:ダイレクト]に設定してしまうことである。 これでとりあえずはtelnetからKTBBSが利用できるようになる。 ところが、これには落とし穴があって、例えば端末が何らかのトラブルで 強制切断されてもKTBBS側では切断を察知できないのだ。 結果、次にtelnetアクセスしてきた人が、前の人のログインを そのまま使えてしまう。これは困る。 (切断文字列の設定という方法もあるがダウンロード中などの状況では、 確実に切断することはきわめて難しい)
 なぜ、回線が切断されないのかというと、 KTBBSではチャンネル種別を[0:ダイレクト]に設定をすると、 RS-232CのDCD信号を検出しない仕組みになっているからだ。 DCDはモデムの接続状態を示す信号で、モデムが相手と通信中にはこの端子 (D-sub9の場合は1番ピンにあたる)に電圧がONとなり、 逆に切断されるとOFFとなる。 ダイレクトではそのような判断をする必要がないのでDCDを検出しないのである。 (というか、リバースケーブルはDCDが常にOFFになっているので、 検出してしまうと接続ができなくなる)



 それならば、KTBBS側での種別を[1:モデム]にしてやればいいのだが、 今度はモデムの挙動を真似する必要がある。以下に具体的に示そう。
状態 モデム -> KTBBS KTBBS -> モデム
着信 RING[CR+LF]を送信
応答せよ ATA[CR]を送信
接続成功 DCDをON
接続成功(2) CONNECT[CR+LF]を送信
接続完了 ログインメッセージなどを送信

 ここで重要なのは、DCDをONとCONNECT[CR+LF]の2つである。 実はKTBBSというのは、この2つの条件さえそろえば RINGやATAなどの手順を踏まなくても「接続された」と判断するのである。


 さて、ここでtel2comを検証してみよう。

・DCD信号の解決
 tel2com BBS ゲートウェイ接続時の注意に記されている結線のケーブルの配線は、 tel2com側がDTRに、BBS側がDCDに接続され、 そしてtel2comが通信可能な状態になるとDTRがONになる。 つまり、その結線でケーブルを作ればDCDの問題は解決するのだ。

・CONNECT送信の解決
 これは簡単だ。 tel2comのCOM Port設定に送信文字列「CONNECT\r\n」と設定するだけである。 注意しなければならないのは、KTBBSの場合はCONNECTのあとの 改行コードが[CR]+[LF]でなければならないということだ。 Version 1.5 以前のtel2comでは[LF]を設定できないので、 必ずVersion 1.5A 以降を使用する必要がある。




次に切断に至るまでの過程を検討してみよう
状態 モデム -> KTBBS KTBBS -> モデム
切断指示 DTRをOFF
切断報告 DCDをOFF
切断完了
(ログの終了)
次の着信準備 DTRをON

 これも例の結線のケーブルで解決できる。 各種設定のLineの項目にある 「DCD信号がOFFでもtelnet接続を切断しない」の チェックボックスを指定しなければ、tel2comはKTBBSからの切断指示で telnetを切断してくれるのだ。
 また、何らかの理由でtelnet接続が途絶えた場合には、 tel2com側のDTRがオフ(KTBBS側のDCDがオフ)になるので KTBBSは回線の切断を察知することができる。

 以上でtel2comとKTBBSの接続は完了だ。 少々面倒ではあるが、プログラムの書き換えは一切やらなくても KTBBSをtelnetに対応できる。














おまけ


 telnetに対応することによって、インターネットにつながる 場所なら世界どこからでも接続できるようになる。 しかし、telnetは電子メールなどと同じように簡単に盗聴できる。 パケットモニタなどを使用すれば通信の内容が筒抜けなのである。 この点のセキュリティは意識しておく必要がある。

 tel2comは Windows上で走っているのだから、 DOSプロンプトを開けば KTBBSも一台のパソコンで 走らせることができそうな気がする。 でも、DOSプロンプトは Windowsを不安定にするし、 回線を増やすとシリアルポートは足りなくなるだろう。 それをやるくらいならMTBBSを使えって気がする。
  OS/2warp4 に、SIO Vmodemでtelnet対応させて、 その上でMPNBBSv3.00改というDOSのホストプログラムが走っている ネットなら見たことはあるが、なかなか安定しているらしい。

 MTBBSはtelnetでのファイルダウンロードはできないが、 このtel2com+KTBBSの環境では、X/Y/Zmodemでのファイルダウンロードが できる。ハイパーターミナルで動作を確認している。















最後に


 前置きの部分に矛盾している点が一つある。 散々Windowsの不安定を語っておきながら、 telnetゲートウェイはWindows上で走っているということである。 まぁ、telnetゲートが落ちても本体に影響がないという利点はあるのだが。
 実際の問題として、tel2com単体で走っている分には簡単には落ちないようだ。 ただし、裏で何か走らせていると危険。 裏で5分おきにBATファイルを走らせていたときなどは半日と持たずに落ちてしまった。 BATファイル終了後のメモリ開放は難しいので、 何度も走らせているとリソースを食いつぶすのは仕方ないことではあるのだが(苦笑