EN JA
INETD(8)
INETD(8) FreeBSD System Manager's Manual INETD(8)

名前

inetdインターネット“スーパーサーバー”

書式

inetd [ -di][ -q queuelength][ configuration file]

説明

inetd は通常ブート時に /etc/rc.local によって起動される ( rc(8) を参照)。(訳注: ディストリビューションによって異なる)。使用している init(8) が任意のデーモンを再起動できる場合、 inetd は (/etc/rc.local ではなく) init から実行できる。そうすれば、クラッシュした場合に再起動できる。この場合は inetd が自身をバックグラウンドに送るのを防ぐために -i オプションを使わなければならない。さもないと init は混乱してしまう。

実行されている間 inetd は定められたインターネットソケットを監視し、接続要求を待つ。監視しているソケットに対して接続要求が出されると、そのソケットに対応したサービスを判定し、サービスを提供するプログラムを起動する。サービスプログラムが完了すると、 inetd は再びソケットの監視を行なう。後述するような例外もある。 inetd を用いれば 1 つのデーモンで複数のサービスプログラムを起動することができるので、システムの負荷を軽減することができる。

オプション

inetd に指定できるオプションを示す:
-d
いくつかのデバッグを有効にして、 inetd をデバッガから実行されたように動作させる。暗黙のうちに -i も指定される。
-i
バックグラウンドにしない。 init(8) から実行するためにある。
-q queuelength
ソケットの監視キューの大きさを指定された値に設定する。デフォルトは 128。

設定

inetd は実行時に設定情報を設定ファイルから読み込む。デフォルトでは設定ファイルは /etc/inetd.conf である。設定ファイルの各フィールドにはエントリが 1 つなければならない。各フィールドのエントリはタブやスペースで区切る。コメントは行頭に ``#'' をつける。設定ファイルのフィールドは次の通り:

サービス名[@ホスト名] 
ソケットタイプ 
プロトコル 
wait/nowait[.max] 
ユーザー名[.グループ名] 
サーバープログラム名 
サーバープログラム引き数

Sun-RPC ベースのサービスを記述する場合には、次のエントリを記述する。

サービス名/バージョン[@ホスト名] 
ソケットタイプ 
RPC/プロトコル 
wait/nowait[.max] 
ユーザー名[.グループ名] 
サーバープログラム名 
サーバープログラム引き数

サービス名 のエントリには、 /etc/services ファイルに記述されているサービス名が記述される。“内部”サービス (後述) については、名前としてそのサービスの公式名 (すなわち /etc/services 内の最初のエントリ) を指定 しなければならない。 Sun-RPC ベースのサービスを指定するためには、このフィールドは /etc/rpc に書かれた有効な RPC サービス名でなければならない。“/”の右の部分が RPC のバージョン番号である。バージョン番号は、数字もしくは、バージョンの範囲 (レンジ) で指定する。範囲を指定する場合は低い番号から高い番号を指定する。たとえば“rusers/1-3”のように記述する。

サービス名に @hostname という形式の文字列が追加された場合、 inetd は hostname に対応する特定の IP アドレスからの接続についてのみ、サービスポートをバインドさせる (全てのアドレスからの接続は listen しない)。異なるアドレスに対して使用したいだけ指定できるので、 ``仮想ホスト''サービスを設定できる。望むだけの数の特定のアドレスを監視できるが、カーネルによる制限によって、 inetd がそのポートを特定のアドレスに対して (あるいは同時に一般のアドレスに対して) 監視するのが禁止されることもある。 hostname はローカルシステムのインターフェースに関連づけられた、解決可能なホスト名または IP アドレスにすべきである。

ソケットタイプ のエントリは、“stream”, “dgram”, “raw”, “rdm”, “seqpacket”のいずれかで、それぞれソケットが stream, datagram, raw, reliably delivered message, sequenced packet socket である場合に対応している。

プロトコル のエントリには、 /etc/protocols に記述されている有効なプロトコル名が記述される。例えば“tcp”や“udp”などである。 RPC ベースのサービスの場合、“rpc/tcp”や“rpc/udp”のような指定になる。

wait/nowait エントリは、datagram ソケットにのみ適用できる (その他のソケットでは、この場所は“nowait”でなければならない)。もし datagram サーバーが相手に接続したときにソケットを解放するなら、 inetd はソケットに対するメッセージをさらに受けることができる。このようなサーバーは“マルチスレッド”サーバーと呼ばれ、“nowait”エントリを指定しなければならない。入って来る全ての datagram を処理し、時間切れまで動作する datagram サーバーは、“シングルスレッド”サーバーと呼ばれ、“wait”エントリを指定しなければならない。 comsat(8), ( biff(1)), talkd(8) は後者のタイプの datagram サーバーの例である。 tftpd(8) は例外である;これは疑似接続を確立する datagram サーバーである。競合を避けるために“wait”が指定されなければならない;サーバーは最初のパケットを読み込み、新たなソケットを作成し、 inetd が新たなサーバーを起動するような接続要求をチェックできるように、 fork して終了する。オプションのサフィックス (接尾辞) “max” (“wait”または“nowait”からドット``.''で分けられる) は、60 秒の間に最大いくつのサーバーが inetd から起動できるかを指定する。省略された場合の、“max”のデフォルトは 40 である。

user エントリには、サーバーを実行するユーザー名を書く。これによりサーバーを root よりも低い権限で実行できる。ユーザー名に続いてドット``.'' を付加して、その後ろにグループ名を指定することができる。これによりサーバーを password ファイルで指定される (プライマリの) グループ ID とは違うグループ ID で実行できる。グループ名が指定され、ユーザーが root 以外だった場合は、そのユーザの補助グループも (グループアクセスリストに) 設定されることになる。

サーバープログラム名 のエントリには、ソケットに要求があったとき inetd が起動し、当該エントリのサービスを提供するサーバープログラムのパス名を指定する。 inetd 内にすでに実装されているサービスを提供する場合には、サーバープログラムとして“internal”を指定する。

サーバープログラム引数 のエントリには、サーバーを起動する際の引数を、サーバープログラムの起動文字列である argv[0] を含めて記述する。 inetd 内に実装されているサービスを提供する場合には、サーバープログラム引数として“internal”を指定する。

組み込み関数

inetd は、内蔵ルーチンを用いて簡単なサービスを自身で提供する。これらのサービスとは“echo”, “discard”, “chargen” (文字生成), “daytime” (人間が読む形式で時間を出力), “time” (機械可読形式の時間。1900 年 1 月 1 日 0 時からの経過秒数を出力) である。これらのサービスは TCP ベースである。これらのサービスの詳細については適切な RFC ドキュメントを参照のこと。

SIGHUP を受けとると、 inetd は、設定ファイルを再度読み込む。設定ファイルを再読み込みするときに、サービスを追加・削除・変更できる。 inetd はファイル /var/run/inetd.pid を作成し、そこにプロセス ID を記録する。

履歴

inetd コマンドは 4.3BSD から登場した。 Sun-RPC ベースのサービスのサポートは、 SunOS 4.1 で提供されたものにならって作られた。
August 22, 1999 Linux NetKit (0.17)