LinuxのNetworkManagerプロセスの概要

CentOS6.5ではデフォルトでNetworkManagerというデーモンプロセスが実行されています。このプロセスの概要についてまとめました。
※CentOS7のNetworkManagerについては以下の記事参照。
CentOS7のNetworkManager、nmcliの概要

※目次をクリックすると目次の下部にコンテンツが表示されます。

NetworkManagerとは?
1)psコマンドの出力内容は?
 
$ ps -ef | grep NetworkManager
root 1340 1 0 Jan09 ? 00:00:21 NetworkManager –pid-file=/var/run/NetworkManager/NetworkManager.pid
 
2)実行ファイルのPathは?
 
$ which NetworkManager
/usr/sbin/NetworkManager
 
3)どのパッケージに属する?
 
実行ファイルのパスが分かったのでどのパッケージに属するかみてみます。
 
$ rpm -qf /usr/sbin/NetworkManager
NetworkManager-0.8.1-66.el6.x86_64

NetworkManagerの概要
1)NetworkManagerの概要
 
・ネットワークデバイスと接続が利用可能な時にそれらをアクティブに維持するよう試行する動的ネットワーク制御及び設定システム。
 
・NetworkManagerを使用すると、イーサネット、ワイヤレス、モバイルブロードバンド(携帯3Gなど)、DSLやPPPoEのようなタイプの接続を設定できる。
 さらに、ネットワークエイリアス、静的ルート、DNS情報、VPN接続の他、多くの接続固有のパラメータの設定が可能になる。
 
・NetworkManagerはD-Busにより効果的なAPIを提供するため、アプリケーションはネットワークの設定と状態をクエリ、制御することができる。
 
2)インストール、使用方法
 
①インストール
# yum install NetworkManager
 
②起動、ステータス確認
# service NetworkManager start
# service NetworkManager status
 
③自動起動の設定
# chkconfig NetworkManager on
 
3)NetworkManagerのユーザー接続とシステム接続
 
・NetworkManagerの接続は、常にユーザー接続かシステム接続のどちらか。
 
・ユーザー接続は、それらを作成するユーザーに固有なためそのように呼ばれる。
 
・システム接続では、設定が /etc/sysconfig/network-scripts/ディレクトリ(主に ifcfg-[network_type]インターフェース設定ファイル内)に保管されるのに対して、ユーザー接続の設定はGConf設定データベースとGNOMEキーリングに保管され、ユーザー接続の設定を作成したユーザーのログインセッション中のみに利用可能。
 このため、デスクトップセッションをログアウトすると、ユーザー固有の接続は利用できなくなる。
 これに対しシステム接続は、ブート時に利用可能となるためデスクトップセッションに最初にログインしなくてもシステム上の他のユーザーは使用することができる。
 
・NetworkManagerは、ユーザー接続とシステム接続間の切り替えを迅速かつ便利に行うことができる。
 ユーザー接続をシステム接続に変換すると、NetworkManagerは/etc/sysconfig/network-scripts/ディレクトリの関連したインターフェース設定ファイルを作成し、ユーザーセッションからGConf設定を削除する。
 逆に、システム接続をユーザー固有の接続に変換すると、NetworkManagerはシステム全体の設定ファイルを削除して、対応するGConf/GNOMEキーリング設定を作成する。

NetworkManagerの起動スクリプトとnetworkの起動
NetworkManagerによってLanの設定ファイルの管理を行っている事を確認しました。以前のバージョンでは、networkという起動スクリプトによってネットワーク関連の設定の読込を行っていたので、その違いを見てみました。
 
今回は、CentOS5.10の環境で確認しています。
 
1)起動スクリプトのパス
 
①NetworkManagerの場合
/etc/rc.d/init.d/NetworkManager
 
②networkの場合
/etc/rc.d/init.d/network
 
2)パッケージ
 
①NetworkManagerの場合
# rpm -qf /etc/rc.d/init.d/NetworkManager
NetworkManager-0.7.0-13.el5
 
②networkの場合
# rpm -qf /etc/rc.d/init.d/network
initscripts-8.45.44-3.el5.centos
 
3)statusコマンドの実行結果
 
①NetworkManagerの場合
# service NetworkManager status
NetworkManager (pid 2649) を実行中…
 
②networkの場合
# service network status
設定されたデバイス:
lo eth0
現在活動中のデバイス:
lo eth0
 
4)eth0の設定変更を有効にする
 
/etc/sysconfig/network-scripts/ifcfg-eth0
 
①NetworkManagerの場合
 
/etc/sysconfig/network-scripts/ifcfg-eth0内でIPアドレスを変更するとNetworkManagerのリスタートなどを行わずに自動で反映されてしまいました。
 
②networkの場合
 
NetworkManagerを使用しない状態にして確認しました。
 
この場合は、/etc/sysconfig/network-scripts/ifcfg-eth0内でIPアドレスを変更しても自動で反映されず、networkのスクリプトをrestartとすると反映されました。
 
“NetworkManager”が無いころの方法を知っている人は、知らずに設定ファイルを変更してしまうと自動で反映されてしまうので注意が必要です。
 
NetworkManagerは”NetworkManager”というデーモンが常駐プロセスとして動作しているので、設定ファイルの変更を監視していて自動で反映してくれるのかもしれないですね。

NetworkManagerデーモンの概要
NetworkManagerデーモンの概要をmanを見て確認しました。
 
・イーサネット、WiFI、モバイルブロードバンドデバイスなどのネットワークの接続とその操作を出来るだけ手間がかからないようにしたり自動で行えるようにする。
 
・デバイスが利用可能になるとNetworkManagerはネットワークデバイスを自動で接続してくれる。
 
・ネットワークに関する情報は、D-Busインタフェースを介してエクスポートされる。
 D-Busインタフェースによって、ネットワークの設定と操作に関する監視と制御を行う事が出来る。
 
・NetworkManagerは、ネットワークイベントに応じて、/etc/NetworkManager/dispatcher.dディレクトリ内にあるスクリプトをアルファベット順に実行する。
 
・/etc/NetworkManager/dispatcher.dディレクトリ内のスクリプトは下記条件を満たす必要がある。
 
(a) a regular file
(b) owned by root
(c) not writable by group or other
(d) not set-uid
(e) and executable by the owner
 
・上記スクリプトは、有効にするデバイスのインタフェース名とアクション名の二つの引数を受け取る。
 
・私の環境には、下記3つのファイルがありました。
00-netreport 05-netfs 10-dhclient

NetworkManager.confの設定内容
1)デフォルトの設定内容
 
私の環境(CentOS6.5)では、デフォルトの設定内容は下記になっています。

$ more /etc/NetworkManager/NetworkManager.conf
 
[main]
plugins=ifcfg-rh

 
2)NetworkManager.confの設定内容の概要
 
・NetworkManagerの様々な機能をセットアップするのに使用する。
 
・NetworkManagerの”–config”オプションで設定ファイルのパスを変更できる。
 
①[main]セクション
 
設定ファイル内の唯一の必須セクション
 
②plugins=plugin1,plugin2, …
 
プラグインはシステム全般のネットワーク接続に対する読み書きをするのに使用される。
 
③利用できるプラグイン
 
keyfile(/etc/Net-workManager/system-connections)
ifcfg-rh(/etc/sysconfig/network-scripts/ifcfg-*)
ifupdown(/etc/network/interfaces)
ifcfg-suse(SUSE用)
 
④ifcfg-rhプラグイン
 
・FedoraとRed Hat Enterprise Linuxディストリビューション上で使用されるプラグイン
 
・/etc/sysconfig/network-scripts/ifcfg-*の設定ファイルを読み書きする。
 
・wired, WiFi, and 802.1xをサポートしているが、broadband,PPPoE, VPNはサポートしていない。(keyfileプラグインを使用する)
 
3)デフォルトで実行されるファイル
 
①/etc/NetworkManager/NetworkManager.confの設定
 
plugins=ifcfg-rhの設定によって/etc/sysconfig/network-scripts/ディレクトリ内のifcfg-eth0とifcfg-loが使用される。
 
②NetworkManagerデーモンのデフォルト
 
/etc/NetworkManager/dispatcher.dディレクトリ内にある下記3つのファイルが実行される。
 
00-netreport 05-netfs 10-dhclient

NetworkManagerとifup、ifdown
NetworkManagerは/etc/sysconfig/network-scripts/ディレクトリ内のネットワークインタフェースの管理を行っています。
 一方、ifup、ifdownコマンドでもこのディレクトリ内のインタフェースを操作できるのでその兼ね合いを確認してみました。
 
1)NetworkManagerのデフォルトの挙動
 
下記インタフェースを管理しています。
/etc/sysconfig/network-scripts/ifcfg-*の
 
そして、このファイル内の設定(例えばIPアドレス)を変更すると自動で変更内容が反映されます。
 
2)ifup、ifdownコマンド
 
ifup、ifdownコマンドで/etc/sysconfig/networkと/etc/sysconfig/network-scripts/ifcfg-*に対し操作できます。

下記コマンドで手動でネットワークを停止するとどうなるか確認しました。
 
ifdown eth0
この場合は、NetworkManagerデーモンによって自動で再起動されてしまうといったことは起きませんでした。
 
一方、NetworkManagerデーモンを下記のように再起動するとeth0も起動されました。
service NetworkManager restart
 
※もちろん、ifup eth0やservice network restartでも同様に起動します。

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください