1.8. NetworkManager とネットワークスクリプト

Red Hat Enterprise Linux の以前のリリースでは、ネットワークを設定するデフォルトの手段は ネットワークスクリプト を使用するものでした。ネットワークスクリプト という用語は、通常 /etc/init.d/network/ スクリプトおよびこれが呼び出す他のインストール済みスクリプトを指します。ユーザーが提供するファイルは通常、設定とみなされますが、これらのスクリプトへの修正と解釈されることもあります。
NetworkManager はデフォルトのネットワークサービスを提供しますが、Red Hat 開発者はスクリプトと NetworkManager が相互に協力できるようにしました。スクリプトに精通している管理者はそのままスクリプトを継続して使用できます。両方のシステムが並列して稼働し、協力できることが期待されています。以前のリリースからのほとんどのシェルスクリプトも機能し続けることが期待されています。Red Hat では、これらを最初にテストすることを推奨しています。

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

既存の環境変数すべてをクリアにし、クリーンな実行を確保する systemctl ユーティリティー のみ のスクリプトを実行します。コマンドは以下の形式をとります。
systemctl start|stop|restart|status network
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 の各スクリプトを手動で呼び出すこともできます。

カスタムコマンドとネットワークスクリプト

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

注記

ユーザーが initscripts パッケージまたは関連する rpm に含まれるファイルを修正した場合、Red Hat はサポートを提供しません。
ネットワーク接続がオンラインおよびオフラインである時には、旧式のネットワークスクリプトと NetworkManager との両方の方法でカスタムタスクを実行する方法があります。NetworkManager が有効な場合は、ifup および ifdown スクリプトが NetworkManager に対して、問題となっているインターフェースを NetworkManager が管理しているかどうかを尋ねます。このインターフェースは、ifcfg ファイルのDEVICE=の行で見つかります。NetworkManager が該当するデバイスを管理しておらずデバイスが未接続の場合、ifupNetworkManager に接続を開始するよう依頼します。
  • NetworkManager がデバイスを管理していて、デバイスがすでに接続されている場合は、なにも実施されません。
  • NetworkManager がデバイスを管理していない場合は、スクリプトは NetworkManager が存在する前からある古い NetworkManager 以外のメカニズムを使って接続を開始します。
ifdown を呼び出していて NetworkManager がデバイスを管理している場合、ifdownNetworkManager に接続を切断するよう依頼します。
スクリプトは NetworkManager を動的にチェックするので、NetworkManager が実行していない場合、スクリプトは NetworkManager 以前のスクリプトベースの古いメカニズムにフォールバックします。

dispatcher スクリプトの実行

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