1. tcpserver
http://cr.yp.to/ucspi-tcp/tcpserver.html
D. J. Bernstein [Translated into Japanese by MAENO Toshinori] TCP/IP ucspi-tcp tcpserverプログラム
tcpserver は TCP 接続を受けいれる。
1.1. 使い方
tcpserver opts host port prog
opts は getopt風のオプションの並びである。 host は一つの引数である。 port は一つの引数である。 prog は 一つ以上の引数からなる。
tcpserver は TCP クライアントからの接続を待つ。 接続毎に progを実行する。 記述子 0 はネットワークから読むのに使われ、 記述子 1 はネットワークに書くのに使われる。 また、いろいろの 環境変数が設定される。
サーバのアドレスは hostと portで与える。
port は /etc/services にある名前または数である。 0を指定した場合、 tcpserver が使われていない TCP portを選ぶ。
host は 0でもよいが、 このときは任意のローカル IP アドレス への接続を許す; ドットつき10進 IP アドレス ならそのアドレスへの接続だけを許す; ホスト名を指定すると、そのホストのfirst IP アドレスへの接続を許す。
- Host names are fed through qualification using dns_ip4_qualify.
tcpserver は SIGTERM を受けとると終了する。
1.2. オプション
共通のオプション:
- -q: Quiet. エラーメッセージも出力しない。
- -Q: (Default.)
- -v: Verbose. エラーメッセージと状態メッセージを出力する。
接続関連オプション:
- -c n: n を越えた同時接続は扱わない。
- n 個の progが実行されているとき、 どれかが終了するまで新しい接続は受けつけられない。 n は正整数でなければならない。 Default: 40.
- -x cdb: tcprulesによりcdbに変換された ルールに従うこと。
- ルールには環境変数を設定することや 指定した相手からの接続を拒否するよう書ける。 tcpserver を実行中でも tcprulesを実行して、 ルールを変更することが可能である。
- -X: -x cdb とともに指定するもので、 cdb が存在しない場合にも接続を許すためにある。
- 通常は cdb が存在しない場合、tcpserver は接続を拒否する。
- -B banner: 接続されたら直ちにネットワークへ bannerを送りだす。
- tcpserver は $TCPREMOTEHOST や $TCPREMOTEINFOを設定する前に、またcdbを検査する前にbannerを書く。 この機能はサーバからの開始メッセージをクライアントが待つようなプロトコルで 遅延を小さくするために利用できる。
- -g gid: 接続を受けつける準備をしたあと、 グループ ID を gid に切りかえる。 gid は正整数でなければならない。
- -u uid: 接続を受けつける準備をしたあと、 ユーザ ID を uid に切りかえる。 uid は正整数でなければならない。
- -U: -g $GID -u $UIDを意味する。 普通は $GID と $UID は envuidgid によって設定されている。
- -1: 接続を受けつける準備をしたあと、ローカルポート番号を標準出力に書く。
- -b n: 約 n 個の TCP SYN のバックログを許す。
- システムによっては なにもいわずに n を 5 としているものもある。 SYN クッキーをサポートしているシステムでは バックログを気にすることはない。
- -o: IP オプションを有効にする。
- クラアントが IP source route つきのパケットを送ってきたら、 同じ経路を通ってパケットを送り返す。
- -O: (Default.)IP オプションを無効にする。
- クラアントは 接続と送信に IP source route 指定を使えるが、 パケットは常にデフォルト経路にそって送り返す。
- -d: リモートホストの応答が遅れ気味の場合、 データの送信を一秒以下で遅らせる。
- この機能は現在デフォルトであるが、将来は変更されるかもしれない; 使う場合には明示的に指定するように。
- -D: データ送信を遅らせない; TCP_NODELAYを有効にする。
データ収集のためのオプション :
- -h: (Default.) IP アドレスからリモートホスト名へのDNS検索をする; 環境変数 $TCPREMOTEHOSTを設定する。
- -H: リモートホスト名のDNS検索をしない; 環境変数 $TCPREMOTEHOSTを取り除く。
- ループを避けるために、 TCP port 53のサーバではこのオプションを指定しなけばならない。
- -p: Paranoid. リモートホスト名のDNS検索をしたあと、そのホスト名で IP アドレスをDNS検索する。
- 結果がクライアントの IP アドレスのどれかに一致しない場合、 環境変数 $TCPREMOTEHOSTを取り除く。
- -P: (Default.) Not paranoid.
- -l localname: ローカルホスト名のDNS検索をしない; localname を 環境変数 $TCPLOCALHOSTに設定する。
- localname には普通 0を使う。 ループを避けるために、 TCP port 53のサーバではこのオプションを指定しなけばならない。
- -r: (Default.) リモートホストから$TCPREMOTEINFOを取得するよう試みる。
- -R: リモートホストから$TCPREMOTEINFOを取得しない。
- ループを避けるために、 TCP port 53 と 113 のサーバではこのオプションを指定しなけばならない。
- -t n: n 秒後に$TCPREMOTEINFO 取得のための接続を打ちきる。 Default: 26.
2000-11-14 訳: 前野年紀
moin 整形 -- ToshinoriMaeno 2021-05-04 03:13:07