UNIXシステムにおけるネットワークサービスの管理において、長年にわたり中心的な役割を果たしてきたのがスーパーサーバ型デーモン「inetd」です。Internet Daemonの略称であるinetdは、4.3BSDで初めて採用されて以来、多くのOSでインターネットサービスの効率的なプロセス管理を支えてきました。
本記事では、inetdの基本的な仕組みや役割、そして後継であるxinetdとの違いや歴史的背景について、専門的な視点から分かりやすく紐解いていきます。
1. スーパーサーバ型デーモン「inetd」の基本概念と役割

UNIXシステムでは、telnetやftp、pop3などのネットワークサービスを提供するために、通常はそれぞれ専用のデーモンプロセスが常時バックグラウンドで起動し、クライアントからの接続を待ち受けています。しかし、すべてのサービスを個別に常駐させると、システムのリソース(メモリやCPU)が多大に消費されてしまいます。
そこで考案されたのが「スーパーサーバ」と呼ばれる仕組みです。inetdはこのスーパーサーバの代表例であり、単一のデーモンが代表して複数のネットワークポートの監視を行います。クライアントからの接続要求を検知した瞬間だけに、対応する実際のサービスプロセスを動的に起動・アタッチする役割を担います。
2. inetdが支えるネットワークサービスの仕組みとプロセス管理
inetdの動作原理は非常に洗練されています。通常、システム起動時にinetdは設定ファイルを読み込み、指定された複数のネットワークポートに対してリスニング(待ち受け)状態に入ります。
ネットワークサービスへのアクセスが発生すると、inetdは直ちにそのポートへの接続を受け付け、内部のプロセス管理機構によって該当するプログラム(例えばftpdやtelnetdなど)をフォーク(fork)して実行を引き継ぎます。処理が完了すればその子プロセスは終了し、メモリ資源が解放されるため、リソースの無駄を極限まで削ぎ落とすことができる仕組みとなっています。
3. inetdの歴史的背景:4.3BSDからの歩みと初期UNIXにおける意義
inetdの歴史は古く、バークレー校(UCバークレー)が開発した4.3BSDで初めて導入されました。当時のワークステーションやサーバーは現代のコンピュータに比べてCPU性能やメモリ容量が極めて限られていたため、ハードウェア資源の節約は喫緊の課題でした。
あらゆるネットワークサービスを個別に常駐させるのではなく、inetdが一括して監視するアプローチは、初期のUNIXシステムにおけるスケーラビリティと効率性を飛躍的に高めました。このアーキテクチャは、その後の多くの商用UNIXやLinuxディストリビューションの標準設計として広く受け継がれていくことになります。
4. inetdと後継「xinetd」の違い:セキュリティと設定の進化
長年愛用されてきたinetdですが、インターネットの普及に伴いセキュリティ要件が厳しくなるにつれ、いくつかの限界が露呈しました。特にアクセス制御機能の不足や、ログ監査の柔軟性の低さが課題視されるようになりました。
そこで登場したのが、より高機能な後継スーパーサーバである「xinetd(Extended Internet Daemon)」です。xinetdは、強力なアクセス制御(IPアドレスやホスト名による制限)、時間帯に応じた接続制御、さらにはDoS攻撃(サービス妨害攻撃)に対する防御機能を標準で備えていました。
| 比較項目 | inetd (Internet Daemon) | xinetd (Extended Internet Daemon) |
|---|---|---|
| 初出・歴史 | 4.3BSDで初採用、伝統的なUNIX標準 | inetdの高度な機能拡張版として登場 |
| セキュリティ機能 | 基本的なTCP Wrapper等への依存が中心 | 強力な内蔵アクセス制御(IP・時間制限など) |
| 設定ファイル | 単一のファイル(/etc/inetd.conf)で完結 | ディレクトリ構造による柔軟な設定(/etc/xinetd.d/) |
| 防御・監査機能 | 限定的なロギング機能 | DoS攻撃対策、詳細なロギング・監査機能 |
5. inetdの具体的な設定ファイルと運用の実務知識
伝統的なinetdの設定は、主に単一の設定ファイル(多くは /etc/inetd.conf)によって行われます。このファイルには、サービス名、ソケットタイプ、プロトコル、通信フラグ、実行ユーザー、プログラムのパス、引数などが一行ごとに記述されています。
管理者はこの設定ファイルを編集することで、不要なネットワークサービスを簡単に無効化(コメントアウト)し、セキュリティリスクを低減させることができました。設定変更後は、inetdプロセスに対してHUPシグナルを送ることで、サーバーを再起動せずに設定を動的に再読み込みさせることが可能です。
inetdに関するよくある質問(FAQ)
Q1:inetdは現代のLinux環境でもまだ使われていますか?
A1:近年の多くのモダンLinuxディストリビューションでは、inetdやxinetdに代わり、システム初期化とプロセス管理を統合的に行う「systemd」が主流となっています。しかし、軽量な組込み機器や一部のレガシーなUNIX環境では、依然としてその概念や類似の軽量デーモンが活用されています。
Q2:inetdと通常の常駐デーモン(スタンドアロン)の違いは何ですか?
A2:常駐デーモンは常にメモリ上でリクエストを待ち受けるため応答が速い一方、リソースを常時消費します。一方のinetdは、アクセスがあった時だけ起動するため、アクセス頻度の低いサービスのリソース消費を大幅に抑えられる点が異なります。
Q3:inetdを設定変更した後はどのように反映させますか?
A3:設定ファイル(inetd.conf)を編集した後は、該当するinetdプロセスのPIDを確認し、kill -HUPコマンドなどでシグナルを送信して再読み込みを行うのが一般的です。
スーパーサーバ型デーモンであるinetdは、4.3BSDの時代からUNIXシステムの限られたハードウェア資源を効率的に活用するための画期的な仕組みとして君臨してきました。プロセス管理の概念をシンプルにまとめ、ネットワークサービスの一元化を実現したその設計思想は、のちのxinetdや現代のシステムアーキテクチャにも深く受け継がれています。
テクノロジーが進化し、常時稼働が当たり前になった現代においても、限られたリソースを最適化し、セキュリティと効率性のバランスを取るというinetdが直面した課題の本質は、あらゆるITインフラストラクチャの設計において今なお重要な教訓であり続けています。