2.6. ネットワークスクリプトによる NetworkManager の使用

本セクションは、スクリプトの実行方法と、ネットワークスクリプトでカスタムコマンドを使用する方法を説明します。
ネットワークスクリプト という用語は、/etc/init.d/network スクリプト、またはそれが呼び出すその他のインストール済みスクリプトを指します。NetworkManager は、デフォルトのネットワークサービスを提供し、スクリプトおよび NetworkManager は同時に実行し、連携させることができます。Red Hat は、それを最初にテストすることを推奨します。

ネットワークスクリプトの実行

ネットワークスクリプトは、systemctl コマンドを使用した場合に 限り 実行します。
systemctl start|stop|restart|status network
systemctl ユーティリティーは、既存の環境変数を削除し、正しく実行されるようにします。
Red Hat Enterprise Linux 7 では NetworkManager が最初に起動し、/etc/init.d/networkNetworkManager をチェックして NetworkManager 接続の改ざんを防ぎます。NetworkManager は sysconfig 設定ファイルを使用するプライマリーアプリケーションとされており、/etc/init.d/network はセカンダリーとされています。
/etc/init.d/network スクリプトは、以下を実行します。
  1. 手動 (systemctl コマンドの start|stop|restart network のいずれかで使用)。
    または
  2. ネットワークサービスが有効になっている場合は、起動時およびシャットダウン時 (systemctl enable network コマンドによる)。
これは手動のプロセスで、起動後に発生するイベントに反応しません。ユーザーは ifup スクリプトおよび ifdown スクリプトを手動で呼び出すこともできます。

注記

initscript の技術制限により、systemctl reload network.service コマンドが動作しません。ネットワークサービスに新しい設定を適用するには、restart コマンドを使用します。
~]# systemctl restart network.service
これにより、新しい設定を読み込むために、ネットワークインターフェースカード (NIC) をすべて無効にして有効にします。詳細は、Red Hat ナレッジベースソリューション 「Reload and force-reload options for network service」を参照してください。

ネットワークスクリプトのカスタムコマンドを使用

/sbin/ifup-localifdown-pre-local、および ifdown-local の各スクリプト内のカスタムコマンドは、そのデバイスが /etc/init.d/network サービスで制御されている時にのみ、実行されます。ifup-local ファイルは、デフォルトでは存在しません。必要であれば、/sbin/ ディレクトリーの下に作成します。
ifup-local スクリプトは initscripts だけが読み取り可能で、NetworkManager は読み取ることができません。NetworkManager を使ってカスタムスクリプトを実行するには、dispatcher.d ディレクトリーの下に作成します。「dispatcher スクリプトの実行」を参照してください。

重要

initscripts パッケージに含まれるファイルや、関連する rpms を変更することは推奨されません。ファイルを変更した場合は、Red Hat サポートの対象外となります。
カスタムタスクは、ネットワーク接続が起動または停止したときに、従来の ネットワークスクリプト および NetworkManager の両方を使用して実行できます。NetworkManager が有効な場合は、ifup スクリプトおよび ifdown スクリプトにより、NetworkManager が問題のインターフェースを管理するかどうかを NetworkManager に尋ねます。これは、ifcfg ファイルの DEVICE= 行で確認できます。
NetworkManager が管理するデバイス:
ifup の呼び出し
ifup を呼び出し、デバイスが NetworkManager により 管理されている 場合は、オプションが 2 つあります。
  • デバイスが接続されて いない 場合は、ifup により、NetworkManager が接続を開始します。
  • デバイスがすでに 接続している 場合は、何もする必要がありません。
ifdown の呼び出し
ifdown を呼び出し、デバイスが NetworkManager により 管理される 場合は、以下を行います。
  • ifdown により、NetworkManager は接続を終了します。
NetworkManager が管理しないデバイス:
ifup または ifdown を呼び出す場合は、このスクリプトが、NetworkManager が現れる前から使用されていた、NetworkManager 以外のメカニズムを使用して接続を開始します。

dispatcher スクリプトの実行

NetworkManager により、別のカスタムスクリプトを実行し、接続の状態に応じてサービスを開始/停止できます。デフォルトでは、/etc/NetworkManager/dispatcher.d/ ディレクトリーが存在し、NetworkManager はアルファベット順にそこにあるスクリプトを実行します。それぞれのスクリプトは、root所有者である 実行可能ファイルで、ファイル所有者にのみ 書き込みのパーミッション が設定されている必要があります。NetworkManager の dispatcher スクリプト実行の詳細は、Red Hat ナレッジベースソリューション「ethtool コマンドを適用するように NetworkManager の dispatcher スクリプトを記述する」を参照してください。