NetworkManager

NetworkManagerは、Linuxカーネルのインタフェース上で動作するデーモンであり、高水準なネットワーク設定を可能にするユーティリティソフトウェアです。このソフトウェアは、ネットワークをより簡単に利用できるように設計されており、Linuxディストリビューションや他のUnix系オペレーティングシステムで動作します。

NetworkManagerの動作



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

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

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

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



Linuxや他のUnix系オペレーティングシステムでは、 `ifconfig` や `ip` (iproute2の一部)を使用して、イーサネットと無線LANハードウェアを設定します。これらのコマンドの利用方法については、manページを参照してください。これらのコマンドで設定された内容は、直接カーネルに反映され、即座に適用されます。ただし、再起動を行うと、設定はリセットされるため、再度設定を行う必要があります。

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

NetworkManagerを使用しない場合のネットワーク設定



NetworkManagerはD-Busを介してアクセスできます。その設定は `/etc/NetworkManager/NetworkManager.conf` に保存されます。

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

ソフトウェアアーキテクチャ



NetworkManagerは主に2つのコンポーネントで構成されています。

1. NetworkManagerデーモン: 接続の管理と変更の通知を行うソフトウェアです。
2. GUIフロントエンド: GNOME、KDE、Xfce、LXQtCinnamonなどのデスクトップ環境向けのグラフィカルインターフェースです。

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

GUIフロントエンドとCLI



NetworkManagerには、以下のようなGUIフロントエンドとCLIツールが存在します。

nm-applet: GTK3を使用したフロントエンドです。
plasma-nm: QMLで記述されたPlasmaアプレットです。
nmcli: コマンドラインインターフェースです。
nmtui: テキストユーザーインターフェースです。

歴史



NetworkManagerプロジェクトは、Linuxユーザーがより簡単にネットワーク(特に無線通信)を利用できるようにするために、2004年レッドハットによって開始されました。NetworkManagerは、利用可能なネットワークを自動的に選択し、ネットワーク障害が発生した場合や、ユーザーが移動しながら無線通信を使用している場合に、最適なネットワークへの接続を試みます。過去に接続したことのあるアクセスポイントを、初めて接続するアクセスポイントよりも優先的に選択します。アクセスポイントが暗号化されている場合、WEPキーまたはWPAキーの入力を求めます。

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

関連項目



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

外部リンク



NetworkManager 公式ウェブサイト

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。