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

NetworkManager
NetworkManagerはシステムデーモンであり、様々なGUIフロントエンドが利用できる。
作者 レッドハット
開発元 主にレッドハット
初版 2004年11月19日 (19年前) (2004-11-19)
最新版 1.46.0[1] ウィキデータを編集 - 2024年2月22日 (48日前)
リポジトリ ウィキデータを編集
プログラミング
言語
対応OS
プラットフォーム Unix系
サポート状況 開発中
種別 ネットワークの設定と制御
ライセンス GNU GPL
公式サイト NetworkManager
テンプレートを表示

機能 編集

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

動作 編集

 
Linuxカーネル: ネットワークデバイスドライバとネットワークスタック。ユーティリティプログラムはSCIを介してカーネルの各コンポーネントと通信をする。

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

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

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

NetworkManagerを使用する場合のネットワークの設定方法 編集

Linuxやその他のUnix系オペレーティングシステムでは、ifconfigip (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つのソフトウェアコンポーネントが存在する。

  1. NetworkManagerデーモン: 接続の管理と変更の報告を行うソフトウェア。
  2. GNOMEKDEXfceLXQtCinnamonなどのデスクトップ環境向けのGUIフロントエンド

これらのコンポーネントは適切に移植が出来るように設計されており、アプレットfreedesktop.orgの「System Tray Protocol」を実装するデスクトップ環境で利用できる[2]。コンポーネントはD-Busを介して通信をするので、アプリケーションリンクで対応するか既存のアプレットを置き換えることが可能となっている。ノベルSUSE Linux向けに開発したKDE向けのフロントエンドである「KNetworkManager」はこの機能を利用している。

GUIフロントエンドとCLI 編集

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

歴史 編集

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デーモンを実行する必要がなくなった[6]

脚注 編集

  1. ^ "1.46.0"; 閲覧日: 2024年2月22日; 出版日: 2024年2月22日.
  2. ^ System Tray Protocol Specification”. freedesktop.org. 2018年7月13日閲覧。
  3. ^ plasma-nm”. KDE. 2018年7月13日閲覧。
  4. ^ nmcli”. The GNOME Project. 2018年7月13日閲覧。
  5. ^ nmtui”. The GNOME Project. 2018年7月13日閲覧。
  6. ^ Dan Williams (2014年6月20日). “We’ll Build A Dream House Of Net”. 2018年7月13日閲覧。

関連項目 編集

外部リンク 編集