[CTX]
[ALL]
SockMux server
SockMux サーバー
SockMux は、DeleGate 間通信用に設計された実験段階のプロトコルです
これは、"ポートフォワーディング" を行うためのシンプルなプロトコルで、
単一の常駐接続上で複数の、受付、転送、および、切断を行います。
一組の SockMux-DeleGate は、その間で接続を生成/保持し、
そして、ローカルからリモートへのポートの転送は互いの接続上で行われます。
常駐接続は、レセプター側では、"-Phost:port" パラメーター、コネクター側では、
"SERVER=sockmux://host:port" によって生成されます。
外部のリモートへの転送を行うため、接続を受理するポートは、
PORT="listOfPorts パラメーターで指定します。
リモートから内部サーバーへの接続は、接尾文字列 ",-in" を、SERVER="telnet://host:23,-in"
のようにつけて指定します。
1つの内部への接続は、指定したプロトコルのプロキシーである DeleGate で処理できます。
プロトコル名が、SERVER="telnet,-in" または "-in" が
接尾された "-in(option list)" のような
指定をした場合のみ、DeleGate は接続処理を呼び出します。
オプションリスト は、起動された DeleGate に
コマンドラインオプションリストとして渡されます。
例)SERVER="telnet://host,-in(+=config.cnf)" は、
``delegated SERVER=telnet://host +=config.cnf'' のような
コマンドラインオプションで、DeleGate を起動します。
例) 双方向 SockMux-DeleGate
hostX% delegated SERVER=sockmux -PhostX:9000 PORT=9023 SERVER="telnet://hostX,-in"
hostY% delegated SERVER=sockmux://hostX:9000 PORT=9023 SERVER="telnet://hostY,-in"
// 一組の SockMux-DeleGate は、"hostX:9000" のポートに接続し、その後、
// ポート "hostX:9023" は、"telnet://hostY" に転送され、
// ポート "hostY:9023" は、"telnet://hostX" に転送されます。
例) 単方向 SockMux-DeleGate
hostX% delegated SERVER=sockmux -PhostX:9000 SERVER="telnet://hostX,-in"
hostY% delegated SERVER=sockmux://hostX:9000 PORT=hostY:9023
// hostY:9023 は "telnet://hostX" に転送されます。
例)単方向 を proxy-Telent-DeleGate へ
hostX% delegated SERVER=sockmux -PhostX:9000 PORT=hostX:9023
hostY% delegated SERVER=sockmux://hostX:9000 SERVER="telnet,-in"
// hostX:9023 は、hostY 上の telnet プロキシーへ転送されます。
SockMux をソケット間のデータ中継に使用する場合、
アプリケーションプロトコルを解釈せずに SockMux 上を中継します。
このような中継は、SERVER パラメーターの代わりに、
DEST パラメーターを使用することで、以下のように、簡単な表記で表現できます:
DEST=host:port[:srcHostList]
は次のもの用
SERVER=tcprelay://host:port,-in[:-:srcHostList]
DEST=host:port/udp[:srcHostList]
は次のもの用
SERVER=udprelay://host:port,-in[:-:srcHostList]
例) SockMux 経由の tcprelay
hostX% delegated SERVER=sockmux://hostY:9000 PORT=hostX:111
hostY% delegated SERVER=sockmux -PhostY:9000 DEST=hostT:111
// hostX:111/tcp は、hostY 経由で hostT:111/tcp のサーバーに転送されます。
Example: SockMux/TCP 経由で UDP を中継する
hostX% delegated SERVER=sockmux://hostY:9000 PORT=hostX:53/udp
hostY% delegated SERVER=sockmux -PhostY:9000 DEST=hostU:53/udp
// hostX:53/udp は、hostY 経由で、hostU:53/udp のサーバーに転送されます。
これらは、他の方法として、名前付パイプのような単一の FIFO デバイスを使用し
2つの SockMux-DeleGate 間の常駐接続を作ります。
それは、SERVER=sockmux:commtype@fifoName のように指定し、
この、commtype は、"commin", "commout", "comm" の内一つで、
それぞれ、単方向入力,単方向出力,双方向入出力を表します。
例)ホスト上の FIFO デバイスを使用する。
% mkfifo /tmp/com0
% mkfifo /tmp/com1
serv1) SERVER=sockmux:commin@/tmp/com0 SERVER=sockmux:commout@/tmp/com1 ...
serv2) SERVER=sockmux:commin@/tmp/com1 SERVER=sockmux:commout@/tmp/com0 ...
例)2ホスト間の通信ポートを使用する (未テスト)
host1) SERVER=sockmux:comm@com1 ...
host2) SERVER=sockmux:comm@com2 ...
常駐接続は DeleGate により起動された外部プログラムにより生成できます。
プログラムの処理は、
ファイルディスクリプター番号 0 および、1 で DeleGate とのソケット
でやり取りされます;
例) 外部コマンドを使用して接続を開始する。
% SERVER="sockmux:proc@connectCommand" ...
リモートから内部への接続するための対象サーバーは、
受け付けたリモートポートによって選択できます。
SERVER パラメーターに、
":-:-Pxxxx"
を後置することで、PORT=xxxx によりリモートホスト上で
受け付けられた接続にのみ有効になります。
例)複数のポートを転送する
hostX% ... PORT=8023,8080
hostY% ... SERVER=telnet,-in:-:-P8023 SERVER=http,-in:-:-P8080
// hostX:8023 は、hostY 上の telnetプロキシーに転送されます。
// hostX:8080 は、hostY 上の HTTP プロキシーに転送されます。
注記)FTP データ接続の転送は、(まだ)サポートされません。