スーパーサーバの設定・管理
スーパーサーバとは。ネットワークを通じサービス提供しているサーバは、デーモンと呼ばれる常駐プログラムで、デーモンはメモリ上に常時待機していて、クライアントからの要求を監視します。使用していない時も、メモリなどのリソースを消費しています。常駐するデーモンが多くなると、待機中のデーモンが消費するシステムリソースもそれだけ増加します。
スーパーサーバはサーバプログラムを管理し、この問題を解決します。「inetd」「xinetd」などのスーパーサーバは、他のサーバプログラムに代わりサービス要求を監視し、接続が確立した時点で本来のサーバプログラムに引き渡します。
必要に応じサーバプログラムを個々に起動することで、システムリソースを効率的に使えるメリットがあります。TCP Wrapperと組み合わせることで、アクセス制御の管理も行えます。
デメリットは応答が遅れることです。クライアントからのサービス要求に即応答しなければならないサーバは、スーパーサーバ経由でなくサーバプログラム自身でサービス要求を監視させる方法がベストです、この方法を「スタンドアローン」といいます。Webサーバ、メールサーバがスタンドアローンに該当します。
FTPサーバ、Telnetサーバなど、接続頻度が少ないサーバはスーパーサーバ経由で接続するのに適しています。
スーパーサーバの種類
「inetd」と「xinetd」があります。それぞれ設定方法は異なります。多くのディストリビューションでは「xinetd」が採用されています。
xinetd
xinetdの設定について。全体の設定を行う「/etc/xinetd.conf」ファイルと、「xinetd.d」ディレクトリ(通常は/etc/xinetd.d)以下に配置されたサービス毎の設定ファイルで構成されます。
「/etc/xinetd.conf」ファイルで使われる主なパラメータは次の通りです。
パラメータ | 概要 |
instances | 各サービスの最大デーモン数 |
log_type | ログの出力方法 |
log_on_success | 接続を許可した時にログに記録する内容 |
log_on_failure | 接続を拒否した時にログに記録する内容 |
cps | 1秒間に接続できる最大コネクション数と、限度に達した場合にサービスを休止させる秒数 |
includedir | サービスごとの設定ファイルを収めるディレクトリ |
/etc/xinetd.confファイルの設定例
defaults
{
instances = 60
log_type = SYSLOG authpriv(ログのファシリティを指定)
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d(設定ファイルのディレクトリを指定)