新規作成 | 編集(管理者用) | 差分 | 検索 | tnetio | 一覧 | 更新履歴 | RSS SourceForge.jp

40USAGE - tnetio の使い方

tnetsrv

tnetsrv は、外部からのネットワーク接続を待ちうけ、接続があった場合、指定したプログラム(または共有ライブラリ関数)を実行します。

文法

tnetsrv [options] port child-program [program-arg(s)]

 

tnetsrv は、port で指定されたポート番号で待ちうけ、新規接続が行われた時に、child-program を実行します。child-program は、標準入力(ファイルディスクリプタ0)から読み込む事で、ネットワークから受信する事が出来、標準出力(ファイルディスクリプタ1)に書き込む事で、ネットワークに送信を行う事が出来ます。

 

port には、/etc/services に記載されているサービス名または数値を設定します。

 

tnetsrv は、デーモン化(バックグラウンドへ以降)を行いません。tnetsrv をバックグラウンドへ移行させたければ、コマンドの最後に '&' をつけて起動してください。

オプション

-b [IP-Addr]
待ち受けるローカルIP アドレスを指定します。本オプションの指定が無い場合、使用可能である全てのローカルIPアドレスに対して待ち受けます。このオプションは、後述する-lオプションが有効でない限り、名前を設定できません。
-D
標準出力にログを出力する際、日付を出力しません。
-E [ENV_Prefix]
program 実行時に設定する各種環境変数の先頭を、ENV_Prefix にします。本オプションが指定されていない場合、各種環境変数の先頭は、'NETSRV_'になります。
-l
名前の検索を有効にします。本オプションを指定する事で、-b オプション指定時に、名前による待ち受けが可能になります。また、新規接続をログに出力する時、IPアドレスから名前を検索し、その名前もログに出力します。本オプションの指定が無い場合、名前の検索は無効です。
-M [MAX-Connect]
最大同時接続数を MAX-Connect にします。それを超えた接続は待たされます。本オプションが無い場合、最大同時接続数は25です。
-N
TCP_NODELAYを有効にします。
-S
ログを、全て syslog に出力します。本オプションが無い場合、ログは、標準出力に出力されます。
-U
UDP で待ち受けます(本オプションは未対応です)。
-W [Daemon-name]
tcpwrapper(libwrap) の機能を使用し、接続検証を行います。その時、デーモンプロセス名を Daemon-name として検証します。本オプションが指定されていない場合、接続の検証は行われず、全て接続許可と見なします(将来仕様が変わる可能性があります)。
-X [reject-file]
新規接続の時に、reject-file が読み出し可能で存在している場合、その内容をネットワークに出力して、切断します。child-program は実行されません。このオプションは、child-program の保守などで、接続を一時無効にさせたい場合に有効です。
-u [uid]
指定した uid に切り替えます。uid は数値でなければなりません。本オプションが指定されていない場合、起動時の uid で動作します。
-g [gid]
指定した gid に切り替えます。gid は数値でなければなりません。本オプションが指定されていない場合、起動時の gid で動作します。
-k
KEEPALIVE を有効にします。
-a [log-file]
ログ出力は、全て log-file に追加書き込みします。-S オプション指定時は意味を持ちません。
-s
child-program は、実行可能なプログラムではなく、共有ライブラリであるとして、ロードします。詳細は、50SO_LOADを参照ください。
-v
バージョン出力後、終了コード0で終了します。
-P [status-file]
ステータス出力ファイルを設定します(本オプションは未対応です)。
--
オプション文字の検索を打ち切ります。もし、child-program に引数を取る場合、child-program の直前に、-- を入れてください。

標準の動作

オプションを何も設定しない場合の、tnetsrv の動作は以下の通りです。

環境変数

tnetsrv は、新規接続があり、child-program を実行する際、以下の環境変数を設定してから、child-program を実行します。

環境変数名内容格納例
NETSRV_PROTO待ち受けプロトコルtcp
NETSRV_LOCALIP待ち受けIPアドレス192.168.10.2
NETSRV_LOCALPORT待ち受けポート10080
NETSRV_REMOTEIP接続IPアドレス192.168.10.210
NETSRV_REPOTEPORT接続先ポート12345
NETSRV_REMOTEHOST接続先ホスト名(-lオプション有効時のみ)hostname

NETSRV_REMOTEHOST は、-l オプションが設定されたときのみ有効で、-l オプションが指定されていない場合、NETSRV_REMOTEHOST は設定しません。

'NETSRV_' は、-E [ENV_Prefix] で変更できます。例えば、-E TCP とした場合、NETSRV_LOCALIP は、TCPLOCALIP となります。

終了条件

tnetsrv は、SIGINT,SIGTERM を受け取ると終了します。

実行できるプログラムの仕様

child-program で実行できるプログラムは、受信・送信に、標準入出力を使用していれば、利用できます(inetdから起動できるものは、そのまま利用できるはずです)。なお、child-program 実行時、標準エラー出力は、tnetsrv の標準出力と同じ所に向けられますので、child-program 側で、何らかのログ出力を行いたい場合は、標準エラー出力に出力するか、syslog を使用してください。

IP_OPTIONS の無効化について

tnetsrv は、新規接続が IP_OPTIONS 指定を含んで接続してきた場合、IP_OPTIONS の内容をログに出力します。また、IP_OPTIONS の指定に関わらず、必ず IP_OPTIONS を無効にしてから、child-program を実行します。この動作により、(tnetsrv がバグってなければ)ソースルーティング指定におけるIPアドレス詐称に対して効果があります(詳しい情報は、http://www.trusnet.com/secinfo/docs/ipspoof/ に書かれています)。

tnetfwd

tnetfwd は、標準入出力のデータをネットワークに転送します。

文法

tnetfwd [-v] hostname port [udp]

 

tnetfwd は、hostname , port で示す接続先ホスト、ポートに接続します。その後、標準入力のデータを、接続先にそのまま送信し、接続先からの受信データは、そのまま標準出力に出力します。

 

tnetsrv の child-program に tnetfwd を指定する事で、簡易パケットレピータとして動作します。

 

([udp] は現在未対応で、TCP のみの接続となります)

オプション

-v
バージョン出力後、終了コード0で終了します。