Red Hat Training

A Red Hat training course is available for RHEL 8

第43章 NetworkManager を使用した dhclient の終了フックの実行(dispatcher スクリプトを使用)

NetworkManager の dispatcher スクリプトを使用して、dhclient 終了フックを実行できます。

43.1. NetworkManager の dispatcher スクリプトの概念

NetworkManager-dispatcher サービスは、ネットワークイベントの発生時に、ユーザー提供のスクリプトをアルファベット順に実行します。通常、これらのスクリプトはシェルスクリプトですが、実行可能スクリプトやアプリケーションが可能です。たとえば、dispatcher スクリプトを使用して、NetworkManager で管理できないネットワーク関連の設定を調整することができます。

dispatcher スクリプトは、以下のディレクトリーに保存できます。

  • /etc/NetworkManager/dispatcher.d/: root ユーザーが編集できるディスパッチャースクリプトの一般的な場所。
  • /usr/lib/NetworkManager/dispatcher.d/: 事前にデプロイ済みのイミュータブル dispatcher スクリプトの場合。

セキュリティー上の理由から、NetworkManager-dispatcher サービスは、以下の条件を満たしている場合にのみスクリプトを実行します。

  • スクリプトは root ユーザーによって所有されます。
  • スクリプトは root で読み取り可能かつ書き込み可能です。
  • スクリプトには setuid ビットが設定されていません。

NetworkManager-dispatcher サービスは、以下の 2 つの引数で各スクリプトを実行します。

  1. 操作が発生したデバイスのインターフェース名。
  2. インターフェース が有効である ときなどのアクション。

man ページの NetworkManager(8)Dispatcher scripts セクションには、スクリプトで使用できるアクションと環境変数の概要が記載されています。

NetworkManager-dispatcher サービスは、一度に 1 つのスクリプトを実行しますが、主な NetworkManager プロセスから非同期に実行されます。スクリプトがキューに格納されると、後のイベントが廃止される場合でも、サービスは常に実行します。ただし、NetworkManager-dispatcher サービスは、以前のスクリプトの終了を待たずに、/etc/NetworkManager/dispatcher.d/no-wait.d/ のファイルを参照するシンボリックリンクであるスクリプトを実行します。

関連情報

  • man ページの NetworkManager(8)Dispatcher scripts セクション。