新規作成 | 検索 | tnetio | 一覧 | 更新履歴 | RSS SourceForge.jp

40USAGE - tnetio の使い方

差分表示


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 の動作は以下の通りです。

- bind する IP アドレスは、使用可能な全てのIPアドレス(0.0.0.0)
- ログは標準出力に出力し、先頭に日付が入る。
- プログラム実行時に設定する環境変数の先頭は、NETSRV_ がつけられる。
- 接続されたIPアドレスから名前を検索しない。
- 最大同時接続数は25
- TCP_NODELAY は無効
- TCP で待ち受ける。
- TCP Wrapper の機能は使用しない。接続は全て許可される。
- KEEPALIVE は無効。
- IP_OPTIONS は無効化される。

** 環境変数

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で終了します。