最終更新日 2005/04/01
xinetd
スーパーサーバとは
xinetdとは
xinetdの機能
xinetdの入手・インストール
xinetdの設定ファイル
xinetdの基本設定ファイル
xinetdの個別設定ファイル
アトリビュート一覧スーパーサーバとは
ネットワークサービスは、クライアントからの要求を常に受けるために、特定のポートを監視していなければなりません。複数のサービスを提供するためには、常に複数のサービスを起動し監視する必要があります。しかし、これでは、無駄にCPU・メモリの消費が 発生してしいます。そこで、複数のサービス(ポート)を同時に監視し、要求があれば、そのデーモンを起動する仕組みが考えだされました。
それが、スーパーサーバと呼ばれるものです。inetdやxinetdがそれにあたります。
デーモンのためのデーモンで、これがスーパーサーバといわれる所以になっています。
スーパーサーバを利用すると、複数のサービスを起動しておく必要がなく、スーパーサーバひとつですべてのポートを監視することができますので サーバのリソースの消費を防ぐことができます。また、スタンドアローン型のサービスは、一度サービスがダウンすると、手動で再起動するしかありませんが、スーパーサーバ型の場合はサービスが一度ダウンしたとしても、もう一度コネクションをすることでスーパーサーバが再度答えることができます。
だだ、サービスを提供するデーモンに対して、コネクションが多発するものや、速度を重視するデーモンの場合は、一度、スーパーサーバ経由になりますので、速度が遅くなります。そのようなデーモンの場合は、スタンドアロン型が適しています。
xinetdとは
xinetdとは、スーパーサーバのinetdに機能を追加し拡張したものです。inetdは、スーパーサーバとしての機能だけを持っていました。そこで、アクセス制限には別プログラム(TCPWrapper)を使用してきました。
しかし、xinetdでは、xinetd単体でアクセス制御も可能になっています。
また、TcpWrapperではできない範囲のログの監視・記録なども可能になっています。(inetd+TcpWrapper+αの機能をもってきます)
xinetdの機能
xinetdの機能は、スーパーサーバ経由のデーモンの起動とアクセス制限・ログ機能になります。アクセス制限やログ機能については下記のとおりです
- アクセス元のIPアドレスによる制限
- アクセス元のドメインによる制限
- 接続回数による制限
- 接続時間による制限
- syslogを使用せず、直接ログを記録する
- エラーログだけではなく、アクセスログも記録する
xinetdの入手・インストール
FedoraCoreをはじめ、ほとんどのディストリビューションではインストールされていますのでインストールの必要はありません。もし、インストールされていなければ、各ディストリビューションのCDROM又はホームページから入手します。
ソースファイルは、「http://www.xinetd.org/」から入手可能です。
xinetd(RPM版)のインストール
| # rpm -ivh xinetd-x.x.x.-x.x.i386.rpm |
xinetdの設定ファイル
xinetdの設定ファイルは2つに分かれています。ひとつは、全体の設定ファイル「/etc/xinetd.conf」です。 もうひとつは、個別の設定ファイル「/etc/xinetd.d/<デーモン名>」になります。xinetdの全体の設定を「/etc/xinetd.conf」で行い、telnetなどのサーバの個別の設定ファイルは「/etc/xinetd.d」ディレクトリ以下に配置されます。| 設定ファイル | 説明 |
| /etc/xinetd.conf | すべてのデーモンに共通の設定を記述 |
| /etc/xinetd./<デーモン名> | デーモン個別の設定を記述 |
xinetdの基本設定ファイル
xinetdの基本設定は、「/etc/xinetd.conf」で行います。設定ファイルは書式は以下のとおりです。書式 <アトリビュート> = <値>
1: defaults
2: {
3: instances = 60
4: log_type = SYSLOG authpriv
5: log_on_success = HOST PID
6: log_on_failure = HOST
7: cps =25 30
8: }
9: includedir /etc/xinetd.d |
- xinetdを使用するすべてのサービスに適用する設定を行う
- 適用の開始
- 同時に起動するプログラムの最大数。60まで
- ログの出力形式。syslogdでauthpriv
- サービスの起動に成功した際のログの出力を指定。ホスト名とプログラムのプロセスIDを記録
- サービスの起動に失敗した際のログの出力の指定。ホスト名記録
- クライアントからの接続要求に答えるサービスの数を指定。1つ目の値が1秒間に応答できる数。
この値を超えるとサービスは無効になり、2つ目の値(秒)が経過したあとに有効になる - 適用の終了
- 「/etc/xinetd.d」ディレクトリにある各プログラムの設定ファイルを読み込むように設定
xinetdの個別設定ファイル
xinetdで管理している各サーバの個別の設定ファイルは、「/etc/xinetd.d」下に配置されています。書式は、xinetdの基本設定ファイルと同じです。書式 <アトリビュート> = <値>
例)telnetファイル1: service telnet
2: {
3: flags = REUSE
4: socket_type = stream
5: wait = no
6: user = root
7: server = /usr/sbin/in.telnetd
8: log_on_failure += USERID
9: disable = no
10: } |
- telnetサービスの設定であることを明示。「/etc/services」ファイルのデーモンの項目を同じものでなければいけない
- 適用の開始
- デーモンの動作を指定
- ソケットタイプを指定。TCPベースの場合は、「stream」を指定する。
- サーバプログラムの動作を指定。「no」はマルチスレッドで動作。
- プログラムの実行ユーザを指定。
- サーバプログラムの起動コマンドを指定する。
- プログラムの起動に失敗した場合のログにUSERIDを残す設定。
- サービスの有効・無効を設定。
- 適用の終了
アトリビュート一覧
| 属性名 | 内容 |
| instances | xinetdから同時に起動可能なサービス数 |
| log_type | ログの出力形式(syslogのファシリティ) |
| log_on_success | 接続が成功した場合の記録内容 |
| log_on_failure | 接続が失敗した場合の記録内容 |
| cps | 1秒間に許可する最大コネクション数。停止してから許可するまでの時間(秒) |
| flags | サービスのタイプ(オプション)を指定 |
| socket_type | ソケットタイプの指定。TCPは、「stream」。UDPは「dgram」を指定 |
| wait | サーバ動作の指定。「yes」はシングルスレッド。「no」はマルチスレッド |
| user | サービスを実行ユーザを指定 |
| server | サーバプログラムのパスを指定 |
| disable | サービスの許可・拒否を指定。「no」は許可、「yes」は拒否 |
Top