/etc/inetd.conf
ファイルには、そのようなサーバとサーバの使うポート番号が書かれています。inetd
コマンドはここで書かれた全てのポートをリッスンします; そのポートに対する接続を検出したら、inetd
は対応するサーバプログラムを実行します。
/etc/inetd.conf
ファイルの有効な各行は (スペースで区切られた) 7 つのフィールドで 1 つのサーバを表現します:
/etc/services
ファイルに含まれる情報を使って標準的なポート番号に置換されます)。
stream
、 UDP データグラムの場合 dgram
。
tcp
または udp
。
wait
または nowait
です。これは inetd
に他の接続を受け入れる前に、起動されたプロセスの終了を待つか否かを伝えます。簡単に多重送信対応できる TCP 接続の場合、通常 nowait
を使います。UDP を使って応答するプログラムに対しては、サーバが複数接続の並列化を管理する機能を持っている場合に限り nowait
を使うべきです。この後に子プロセスの最大数、さらに 1 分間に認められる接続の最大数 (デフォルトの値は 256) を指定することが可能です。
argv[0]
) を含みます。
例9.1 /etc/inetd.conf
からの抜粋
talk dgram udp wait nobody.tty /usr/sbin/in.talkd in.talkd finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd ident stream tcp nowait nobody /usr/sbin/identd identd -i
/etc/inetd.conf
ファイルの中では tcpd
プログラムを使うことが多いです。tcpd
プログラムを使うと、アクセス制御ルールを適用して新たな接続を制限することが可能です。アクセス制御ルール hosts_access(5) マニュアルページで説明されており、/etc/hosts.allow
と /etc/hosts.deny
ファイルを使います。一旦その接続が認証されたら、tcpd
は実際のサーバを実行します (以下の例では in.fingerd
など)。tcpd
はそれが実行されたときの名前 (1 番目の引数 argv[0]
) を頼りに、実際に実行するプログラムを識別します。この点に注意してください。そのため、引数リストは tcpd
で始めるのではなく、ラップされなければいけないプログラムで始めるべきです。