NetworkManager
NetworkManager (ネットワークマネージャー) は、libudevやその他のLinuxカーネルインタフェース上で動作し、高水準のネットワーク設定用のインタフェースの提供も行うデーモンである。
作者 | レッドハット |
---|---|
開発元 | 主にレッドハット |
初版 | 2004年11月19日 |
最新版 | 1.50.1[1] - 2024年12月23日 |
リポジトリ | |
プログラミング 言語 | |
対応OS | |
プラットフォーム | Unix系 |
サポート状況 | 開発中 |
種別 | ネットワークの設定と制御 |
ライセンス | GNU GPL |
公式サイト | NetworkManager |
機能
編集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つのソフトウェアコンポーネントが存在する。
これらのコンポーネントは適切に移植が出来るように設計されており、アプレットはfreedesktop.orgの「System Tray Protocol」を実装するデスクトップ環境で利用できる[2]。コンポーネントはD-Busを介して通信をするので、アプリケーションはリンクで対応するか既存のアプレットを置き換えることが可能となっている。ノベルがSUSE Linux向けに開発したKDE向けのフロントエンドである「KNetworkManager」はこの機能を利用している。
GUIフロントエンドとCLI
編集-
表示されているアクセスポイントを選ぶことで接続することができる。
-
GNOME Shell向けのGUIフロントエンド
- 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.50.1"; 閲覧日: 2024年12月24日; 出版日: 2024年12月23日.
- ^ “System Tray Protocol Specification”. freedesktop.org. 2018年7月13日閲覧。
- ^ “plasma-nm”. KDE. 2018年7月13日閲覧。
- ^ “nmcli”. The GNOME Project. 2018年7月13日閲覧。
- ^ “nmtui”. The GNOME Project. 2018年7月13日閲覧。
- ^ Dan Williams (2014年6月20日). “We’ll Build A Dream House Of Net”. 2018年7月13日閲覧。
関連項目
編集- BlueZ
- GNOME キーリング
- KWallet
- Wicd - Pythonで書かれたネットワークマネージャー
- iproute2
- iw
- wpa_supplicant