NetworkManager

NetworkManager (ネットワークマネージャー) は、libudevやその他のLinuxカーネルインタフェース上で動作し、高水準のネットワーク設定用のインタフェースの提供も行うデーモンである。

機能 
NetworkManagerはネットワークをより簡単に使えることを目的としたユーティリティソフトウェアで、Linuxディストリビューションやその他のUnix系オペレーティングシステムで動作する。

動作 

コンピュータが互いに通信を行うためにIEEE 802.3 (イーサネット)・IEEE 802.11 (無線LAN)・IEEE 802.15 (近距離無線通信)・PPPoE・PPPoAなど様々な通信プロトコルが存在する。ネットワークに接続する場合は、ネットワークカードに適切な設定を行う必要がある。

モノリシックカーネルの場合、全てのデバイスドライバはカーネルの一部であり、ハードウェアはデバイスドライバを介してアクセスされる。LinuxなどのUnix系オペレーティングシステムの場合、デバイスドライバのインタフェースとしてデバイスファイルが利用されている。全てのデバイスファイルは/devディレクトリに存在する。従来のイーサネットハードウェアのデバイスファイルは/eth0や/eth1と呼ばれていた。systemd以降はesp4s0などの名前が付けられるようになった。

ウェブブラウザ・SSH・NTPなどのユーザ空間にあるものは全てデバイスファイルを介してハードウェアにアクセスする。

NetworkManagerを使用する場合のネットワークの設定方法 
Linuxやその他のUnix系オペレーティングシステムでは、ifconfigやip (iproute2の一部) を使用してIEEE 802.3とIEEE 802.11のハードウェアを設定する。利用方法についてはmanページを参照する。これらで行った設定はカーネルに直接設定され、直ちに反映される。再起動をした場合は再度設定をし直す必要がある。

シャットダウン後にも設定を維持するためには、PID1で実行するプログラムが使用される。System Vinitではシェルスクリプトとバイナリプログラムを使用し、systemdでは独自の設定ファイルを解析して使用する。ネットワークインタフェースの設定は/etc/network/interfacesに、DNSサーバの設定は/etc/resolv.confに保存される。/etc/network/interfacesでは、使用する静的IPアドレスまたはdhclientを設定することができる。また、VPNの設定も行うことができる。設定を変更する場合、DHCPでは自動的に行われる。

NetworkManagerを使用しない場合のネットワークの設定方法 
 NetworkManagerはD-Busを介してアクセスすることができる。
 NetworkManagerの設定は/etc/NetworkManager/NetworkManager.confに保存されている。
しかしながら、公衆無線LANの普及などによりDHCPなどを利用した動的なネットワーク設定を行うことが一般的なものになっている。BOOTPはこのような目的で使用された初期のプロトコルであり、現在はその上位互換プロトコルであるDHCPが一般的に利用されている。多くのUnix系オペレーティングシステムには動的なネットワーク設定を行うためにdhclientが利用されている。比較的静的なネットワーク設定か単純な動的なネットワーク設定の場合、dhclientによって構成された静的なネットワーク設定は問題なく動作するが、ネットワークやネットワーク・トポロジーが複雑なものになった場合には、全てのネットワーク設定を集中管理することが重要になる。

ソフトウェアアーキテクチャ 
NetworkManagerは2つのソフトウェアコンポーネントが存在する。
 NetworkManagerデーモン: 接続の管理と変更の報告を行うソフトウェア。
 GNOME・KDE・Xfce・LXQt・Cinnamonなどのデスクトップ環境向けのGUIフロントエンド。
これらのコンポーネントは適切に移植が出来るように設計されており、アプレットはfreedesktop.orgの「System Tray Protocol」を実装するデスクトップ環境で利用できる。コンポーネントはD-Busを介して通信をするので、アプリケーションはリンクで対応するか既存のアプレットを置き換えることが可能となっている。ノベルがSUSE Linux向けに開発したKDE向けのフロントエンドである「KNetworkManager」はこの機能を利用している。

GUIフロントエンドとCLI 

 nm-applet
 GTK3フロントエンド
 plasma-nm
 QMLで書かれたPlasmaアプレット
 nmcli
 コマンドラインインタフェース
 nmtui
 テキストユーザインタフェース

歴史 
NetworkManagerプロジェクトは、Linuxユーザーの近代的なネットワークをより簡単に利用したいというニーズ (特に無線通信) を実現するために、2004年にレッドハットによって開始された。NetworkManagerは日和見的なネットワークの選択を行い、ネットワークに障害が発生した場合や、ユーザーが移動しながら無線通信を行っている場合に、最適なネットワークに接続しようとする。NetworkManagerはユーザーが接続したことがないSSIDよりも、以前に接続をしたことがあるアクセスポイントを優先する。アクセスポイントが暗号化されていた場合、WEPキーまたはWPAキーの入力を求めるようになっている。

NetworkManagerは、D-BusとHALを利用する最初の主要なLinuxデスクトップコンポーネントの1つである。2009年6月以降、NetworkManagerはHALに依存する必要がなくなり、2014年の0.9.10以降はrootユーザーとして操作するためにD-Busデーモンを実行する必要がなくなった。

脚注

関連項目 

 BlueZ
 GNOME キーリング
 KWallet
  - Pythonで書かれたネットワークマネージャー
 iproute2
 iw
 wpa_supplicant

外部リンク 

 

Freedesktop.org
ネットワークソフト
Linuxのソフトウェア
オープンソースソフトウェア