aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man8/inetd.8
blob: 3a90e6c3f6f80cbde0d741607fe1164a93fa5be5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
.\" Copyright (c) 1985, 1991, 1993, 1994
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"     from: @(#)inetd.8	8.3 (Berkeley) 4/13/94
.\"	%Id: inetd.8,v 1.22 1998/06/10 12:34:25 phk Exp %
.\" jpman %Id: inetd.8,v 1.2 1997/05/16 07:22:24 yugawa Stab %
.\"
.Dd February 7, 1996
.Dt INETD 8
.Os BSD 4.4
.Sh 名称
.Nm inetd
.Nd インターネット
.Dq スーパサーバ
.Sh 書式
.Nm inetd
.Op Fl d
.Op Fl l
.Op Fl c Ar maximum
.Op Fl C Ar rate
.Op Fl a Ar address
.Op Fl p Ar filename
.Op Fl R Ar rate
.Op Ar configuration file
.Sh 解説
.Nm
は、ブート時に
.Pa /etc/rc
の中で起動されます(
.Xr rc 8
参照)。起動されると、
.Nm
は定められたインターネットソケットを監視し、接続要求を待ちます。
監視しているソケットに対して接続要求が出されると、
.Nm
はそのソケットに対応したサービスを
判定し、サービスを提供するプログラムを起動します。
サーバプログラムはサービスソケットを標準入力・標準出力・
エラー出力として起動されます。
サービスプログラムが完了すると、
.Nm
は再びソケットの監視を行ないます(後述するような例外もあります)。
.Nm
を用いれば 1 つのデーモンで
複数のサービスプログラムを起動することができるので、
システムの負荷を軽減することができます。
.Pp
.Nm
は、起動時に以下のオプションを指定できます。
.Bl -tag -width indent
.It Fl d
デバッグモードにします。
.It Fl l
ログをとります。
.It Fl c Ar maximum
起動可能なサービスのデフォルトにおける最大値を指定します。
サービスごとに指定される "max-child" パラメータによって上書きされ得ます。
.It Fl C Ar rate
1 分間に単一の IP アドレスから起動されるサービスのデフォルトにおける最大値
を指定します。
デフォルトは未設定です。
サービスごとに指定される "max-connections-per-ip-per-minute"
パラメータによって上書きされ得ます。
.It Fl R Ar rate
1 分間に起動できる最大のサービス数を指定します。デフォルトは 256 です。
.It Fl a
監視する IP アドレスを指定します。
.It Fl p
デフォルトとは異なるプロセス ID を保持するファイルを指定します。
.El
.Pp
.Nm
は実行時に設定情報を設定ファイルから読み込みます。
デフォルトでは設定ファイルは
.Pa /etc/inetd.conf
です。
設定ファイルの各フィールドにはエントリが 1 つなければなりません。
各フィールドのエントリはタブやスペースで区切ります。
コメントは行頭に ``#'' をつけます。
設定ファイルのフィールドは以下のものからなります:
.Pp
.Bd -unfilled -offset indent -compact
サービス名
ソケットタイプ
プロトコル
{wait|nowait}[/最大子プロセス数[/IPあたりの分あたりの最大接続数]]
ユーザ名[:クループ名][/ログインクラス名]
サーバプログラム名
サーバプログラム引数
.Ed
.Pp
.No Tn "ONC RPC"
ベースのサービスを記述する場合には、以下のエントリを記述します。
.Pp
.Bd -unfilled -offset indent -compact
サービス名/バージョン
ソケットタイプ
RPC/プロトコル
ユーザ名
サーバプログラム名
サーバプログラム引数
.Ed
.Pp
.Nm
が起動することのできるサービスは 2 種類あります。
1 つは標準で、もう 1 つは TCPMUX です。
標準サービスには割り当てられた well-known ポートがあります。
これは公式のインターネット標準を実装したサービスや BSD 特有のサービスです。
.Tn RFC 1078
に書かれているように、TCPMUX は非標準サービスであり、
well-known ポートが割り当てられていません。
そういった非標準サービスは、あるプログラムが
.Dq tcpmux
well-known ポートに接続してそのサービス名を指定したとき、
.Nm
によって起動されます。
この機能はローカルに開発されたサーバを追加するときに
便利です。
TCPMUX リクエストが受理されるのは、
TCPMUX ベースのサーバに至るまでにおいて、
マルチプレクササービス自身が有効にされているときのみです。
後述の内部サービスに関する議論を参照してください。
.Pp
.Em サービス名
のエントリには、
.Pa /etc/services
ファイルに記述されているサービス名が記述されます。
.Dq 内部
サービス (後述) については、
名前としてそのサービスのオフィシャル名
(すなわち
.Pa /etc/services
内の最初のエントリ)を指定
.Em しなければなりません。
.No Tn "ONC RPC"
ベースのサービスを指定するためには、このフィールドは
.Pa /etc/rpc
に書かれた有効な RPC サービス名でなければなりません。
.Dq /
の右の部分が RPC のバージョン番号です。バージョン番号は、
数字もしくは、バージョンの幅(レンジ)で指定します。
幅を指定する場合は低い番号から高い番号を指定します。たとえば
.Dq rusers/1-3
のように記述します。
TCPMUX サービスでは、
.Em サービス名
のフィールドは、文字列
.Dq tcpmux
、スラッシュ、そしてローカルに選ばれたサービス名から
なります。
.Pa /etc/services
に書かれたサービス名と
.Dq help
は予約済であり、ローカルなサービス名には使用できません。
TCPMUX サービスのためにユニークな名前をつけるには、
頭に組織名をつけ、末尾にバージョン番号をつけるとよいでしょう。
.Pp
.Em ソケットタイプ
のエントリは、
.Dq stream ,
.Dq dgram ,
.Dq raw ,
.Dq rdm ,
.Dq seqpacket
のいずれかである必要があります。それぞれ、ソケットが
stream,
datagram, 
raw, 
reliably delivered message, 
sequenced packet socket
である場合に対応しています。
TCPMUX サービスは
.Dq stream
を使わなければなりません。
.Pp
.Em プロトコル
のエントリには、
.Pa /etc/protocols
に記述されている有効なプロトコル名が記述されます。
例えば
.Dq tcp
や
.Dq udp
などです。
サービスが T/TCP 経由で到達可能とするためには、
.Dq tcp/ttcp
を指定する必要があります。
RPC ベースのサービスの場合、
.Dq rpc/tcp
や
.Dq rpc/udp 
のような指定になります。
TCPMUX サービスは
.Dq tcp
を使わなければなりません。
.Pp
.Em wait/nowait
エントリは、
.Nm
によって起動されたサーバがサービスアクセスポイントに
関連付けられたソケットを引き継ぐかどうか、すなわちサーバが終了するまで
.Nm
が新しいサービス要求を監視するのを待つ必要があるか否かを
指定します。
datagram サーバは、特定のサービスアドレスと結び付いた
datagram ソケットで毎回起動されるため、
.Dq wait
を使わなければなりません。こういったサーバは、終了する前に少なくとも
1 データグラムをソケットから読まなければなりません。
もし datagram サーバが相手に接続したときソケットを
開放するなら、
.Nm
はソケットに対するメッセージをさらに受けることができます。
このようなサーバは
.Dq マルチスレッド
サーバと呼ばれます。
サーバはソケットから datagram を 1 つ読み込み、相手に接続する新しい
ソケットをつくります。
サーバは fork() を行い、親プロセス側は終了なければいけません。
これにより
.Nm
は新しいサービス要求をチェックし、新しいサーバを起動することが
できるようになります。
入って来る全ての datagram を処理し、
時間切れまで動作する datagram サーバは、
.Dq シングルスレッド
サーバと呼ばれます。
.Xr comsat 8 ,
.Pq Xr biff 1 ,
.Xr talkd 8
は後者のタイプの datagram サーバの例です。
.Xr tftpd 8
はマルチスレッドで動く datagram サーバの例です。
.Pp
stream ソケットを使うサーバは一般にマルチスレッドで動き
.Dq nowait
エントリを使います。
こういったサーバへの接続要求は
.Nm
で受け付けられ、新たに受理し、クライアントにつながった
ソケットのみがサーバに与えられます。
多くの stream ベースのサービスはこのように行われます。
.Dq wait
エントリを使う stream ベースのサーバは、
サービスのソケットを監視し、少なくとも 1 つの接続要求を受け入れてから
終了しなければなりません。
そういったサーバは通常、時間切れとなるまで、入って来る要求を
受け付け処理します。
TCPMUX サービスは
.Dq nowait
を使わなければなりません。
.Pp
``nowait'' サービスの子プロセス(あるいは ``スレッド'')の最大数は、
``nowait'' キーワードの後に ``/'' と数字を付け加えることで指定できます。
通常(あるいはゼロが指定された場合)、子プロセスの数に制限はありません。
一方、最大数に達すると、それ以降の接続要求は、存在する子プロセスが終了するまで
待ち行列に蓄えられます。これは、``wait'' モードでも同様ですが、通常は
1 (デフォルトの値)以外は意味がありません。
指定した IP アドレスからの 1 分あたりの最大接続数を指定することも可能です。
この場合、``/'' および最大子プロセス数を指定します。
最大値に達っした場合、指定した IP アドレスからの接続は、
この 1 分が経過するまで、落とされます。
.Pp
.Em ユーザ名
エントリには、サーバを実行するユーザ名を書きます。
これによりサーバを root よりも低い権限で実行できます。
オプションの
.Em グループ名
部分は ``:'' で分けられ、
このユーザのデフォルトグループ以外のグループ名を指定可能です。
オプションの
.Em ログインクラス名
部分は ``/'' で分けられ、
デフォルトの ``daemon'' 以外のログインクラス名を指定可能です。
.Pp
.Em サーバプログラム名
のエントリには、ソケットに要求があったとき
.Nm
が起動し、当該エントリのサービスを提供する
サーバプログラムのパス名を指定します。
.Nm
内にすでに実装されているサービスを提供する場合には、サーバプログラムとして
.Dq internal
を指定します。
.Pp
.Em サーバプログラム引数
のエントリは、サーバを起動する際の引数を、サーバプログラムの起動文字列
である argv[0] を含めて記述します。
.Nm
内に実装されているサービスを提供する場合には、サーバプログラム引数
として
.Dq internal
を指定します。
.Pp
.Nm
は、内蔵ルーチンを用いて簡単なサービスを自身で提供します。
これらのサービスとは
.Dq echo ,
.Dq discard ,
.Dq chargen
(文字生成),
.Dq daytime
(人間が読む形式で時間を出力します),
.Dq time
(機械可読形式の時間。1900 年 1 月 1 日 0 時からの経過秒数を出力します)
です。
これらのサービスは TCP と UDP バージョンのいずれでも利用できます。
UDP バージョンは返事のポートとして内部サービスに相当するポートを
要求されたとき、サービスを拒否します。
(これはループ攻撃に対する防護です。リモート IP アドレスは記録されます。)
これらのサービスの詳細については適当な
.Tn RFC
ドキュメントを参照して下さい。
.Pp
TCPMUX のデマルチプレクスサービスもまた内部サービスとして実装されています。
TCPMUX ベースのサービスを動作させるためには、以下の行を
.Pa inetd.conf
に含む必要があります:
.Bd -literal -offset indent
tcpmux	stream	tcp	nowait	root	internal
.Ed
.Pp
.Fl l
オプションが指定された場合、
.Nm
は、
.Xr accept 2
が終了した時点で、選択されたサービスと要求を発したリモートの IP 番号を
syslog に記録します。
.Pp
.Dv SIGHUP
を受けとると、
.Nm
は、設定ファイルを再度読み込みます。設定ファイルを
再読み込みするとき、サービスを追加、削除、変更できます。
デバッグモードで起動された場合をのぞき、
.Nm
は再設定を容易にするために、プロセス ID を
.Pa /var/run/inetd.pid
に記録します。
.Sh TCPMUX
.Pp
.Tn RFC 1078 
は TCPMUX プロトコルについて述べています。
「 TCP クライアントは他のホストに TCP ポート番号 1 で接続します。
クライアントは、サービス名に<CRLF>を付加して送ります。
サービス名は大文字/小文字を区別しません。
サーバは、肯定(+)もしくは否定(\-)を表す 1 文字を返します。
+ あるいは \- のすぐ後にメッセージが続く場合があります。
返答は <CRLF> で終わります。もし返答が肯定で
あれば、選択されたプロトコルが開始されます。
そうでなければ接続は切られます。」
プログラムにはファイルディスクプリタ 0 と 1 で TCP コネクションが
渡されます。
.Pp
TCPMUX サービス名が ``+'' で始まっているとき、
.Nm
は、プログラムに肯定返答(+)を返します。
これによって、
特別なサーバコードを追加することなく
標準入出力を使うプログラムを起動することができます。
.Pp
特別なサービス名である
.Dq help
により、
.Nm
は
.Pa inetd.conf
にある TCPMUX サービスの一覧を出力します。
.Sh 関連ファイル
.Bl -tag -width /var/run/inetd.pid -compact
.It Pa /etc/inetd.conf
設定ファイル
.It Pa /etc/rpc
サービス名を RPC プログラム番号に変換するテーブル
.It Pa /etc/services
サービス名をポート番号に変換するテーブル
.It Pa /var/run/inetd.pid
現在実行中の
.Nm
の pid
.El
.Sh 使用例
.Pp
次に、いくつかのサービスについて
サービスエントリの
例を挙げておきます。
.Bd -literal
ftp          stream  tcp   nowait root  /usr/libexec/ftpd        ftpd -l
ntalk        dgram   udp   wait   root  /usr/libexec/ntalkd      ntalkd
tcpmux/+date stream  tcp   nowait guest /bin/date                date
tcpmux/phonebook stream tcp nowait guest /usr/local/bin/phonebook phonebook
rstatd/1-3   dgram   rpc/udp wait root  /usr/libexec/rpc.rstatd  rpc.rstatd
.Ed
.Sh エラーメッセージ
.Nm
サーバは、
.Xr syslog 3
を使ってエラーメッセージを記録します。
重要なエラーメッセージと
その説明は以下の通りです。
.Pp
.Bl -ohang -compact
.It Xo
.Ar service Ns / Ns Ar protocol
.No " server failing (looping), service terminated."
.Xc
直前の 1 分間に、そのサービスについての要求数が制限に達しました。
不完全なプログラムや悪意のあるユーザがシステムを
ハングアップさせないために、このような制限が設けられています。
このメッセージが出力される理由はいくつかあります。
.Bl -enum -offset indent
.It
短時間の間に多くのホストがこのサービスを要求している。
.It
不完全なクライアントプログラムがサービスを
頻繁に要求しすぎている。
.It
悪意あるユーザがあるプログラムを起動し、
サービスが '拒否' されるように攻撃している。
.It
起動されたサービスプログラムにエラーがあり、
クライアントがすぐにリトライを起こしてしまう。
.El
.Pp
.Fl R Ar rate
オプションを使うと、制限を変えることができます。
制限に達したとき、10 分経つとサービスは自動的に
再許可されます。
.Pp
.It Xo
.Ar service Ns / Ns Ar protocol :
.No \&No such user
.Ar user ,
.No service ignored
.Xc
.It Xo
.Ar service Ns / Ns Ar protocol :
.No getpwnam :
.Ar user :
.No \&No such user
.Xc
.Xr passwd 5
データベースに
.Ar user
のエントリーがありません。
最初のメッセージは
.Nm
が設定ファイルを(再度)読み込むときに出されます。
2 つ目のメッセージは、サービスが呼び出されたときに
出されます。
.Pp
.It Xo
.Ar service :
.No can't set uid
.Ar uid
.Xc
.It Xo
.Ar service :
.No can't set gid
.Ar gid
.Xc
.Ar user
フィールドのユーザ ID もしくは グループ IDが
無効です。
.Pp
.It "setsockopt(SO_PRIVSTATE): Operation not supported"
.Nm
はそのソケットに設定されている特権状態を放棄しようとしましたが、
失敗しました。
.El
.Sh 関連項目
.Xr login.conf 5 ,
.Xr passwd 5 ,
.Xr rpc 5 ,
.Xr services 5 ,
.Xr comsat 8 ,
.Xr fingerd 8 ,
.Xr ftpd 8 ,
.Xr portmap 8 ,
.Xr rexecd 8 ,
.Xr rlogind 8 ,
.Xr rshd 8 ,
.Xr telnetd 8 ,
.Xr tftpd 8 ,
.Sh 歴史
.Nm
コマンドは
.Bx 4.3
から登場しました。
TCPMUX は Mark Lottor によるコードとドキュメントを元にしています。
.Tn "ONC RPC"
ベースのサービスのサポートは、
.Tn SunOS
4.1
が供給されてから、
それにならって作られました。