「NetworkManager」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
(3人の利用者による、間の67版が非表示)
1行目: 1行目:
 
[[Category:ネットワークマネージャ]]
 
[[Category:ネットワークマネージャ]]
 
[[Category:Red Hat]]
 
[[Category:Red Hat]]
  +
[[Category:DHCP]]
[[cs:NetworkManager]]
 
 
[[de:Networkmanager]]
 
[[de:Networkmanager]]
 
[[en:NetworkManager]]
 
[[en:NetworkManager]]
[[es:NetworkManager]]
 
 
[[fr:NetworkManager]]
 
[[fr:NetworkManager]]
[[it:NetworkManager]]
 
 
[[pt:NetworkManager]]
 
[[pt:NetworkManager]]
[[ru:NetworkManager]]
 
[[tr:NetworkManager]]
 
 
[[zh-hans:NetworkManager]]
 
[[zh-hans:NetworkManager]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|ネットワーク設定}}
 
{{Related|ネットワーク設定}}
{{Related|ワイヤレス設定}}
+
{{Related|ワイヤレスネットワーク設定}}
{{Related|Netctl}}
 
{{Related|Wicd}}
 
 
{{Related articles end}}
 
{{Related articles end}}
[http://projects.gnome.org/NetworkManager/ NetworkManager] はネットワークの検知とシステムの設定を自動で行いネットワークに接続するプログラムです。NetworkManager の機能は無線有線両方のネットワークに使うことがきます。無線ネットワークでは、既知の無線ネットワークを優先一番信頼性のあるネットワークに切り替えることができます。NetworkManager 対応アプリケーションはオンラインとオフライン切り替えることが可能です。また、NetworkManager は無線接続よりも有線接続優先され、モデム接続特定の VPN に対応しています。NetworkManager はもともとは Red Hat によって開発されていましたが、現在では [[GNOME]] プロジェクトによってホストされています。
+
[https://networkmanager.dev/ NetworkManager] は、システムがネットワーク自動的に接続きるようにするためにネットワークの検出と設定の機能を提供するプログラムです。NetworkManager の機能は無線ネットワークと有線ネットワークの両方で有用です。無線ネットワークでは、NetworkManager は既知の無線ネットワークを優先するようになっており最も信頼性のあるネットワークに切り替える機能もあります。NetworkManager 対応アプリケーションはオンラインモードとオフラインモードの切り替えが可能です。また、NetworkManager は無線接続よりも有線接続優先するようになっており、モデム接続特定の種類の VPN に対応しています。NetworkManager は元々 Red Hat によって開発されていましたが、現在では [[GNOME]] プロジェクトによってホストされています。
   
{{Warning|デフォルトでは、Secrets (WiFi パスワードなど) はファイルシステム root ユーザーと、GUI を介して設定にアクセスできるユーザー (nm-applet など) がアクセスできます。[[NetworkManager#Wi-Fi パスワードの暗号化|Wi-Fi パスワードの暗号化]] を参照してください。}}
+
{{Warning|デフォルトでは、機密情報 (Wi-Fi パスワードなど) は root ユーザからファイルシステムでアクセス可能であり、さらに GUI (''nm-applet'' など) を介して設定にアクセスできるユーザからもアクセス可能です。[[#Wi-Fi パスワードの暗号化]] を参照してください。}}
   
 
== インストール ==
 
== インストール ==
   
NetworkManager は[[公式リポジトリ]]にある {{Pkg|networkmanager}} パッケージでインストールできます。こには、デーモンコマンドラインインターフェス ({{ic|nmcli}})、cursesベースのテキストインターフェス ({{ic|nmtui}})が含まれます。
+
NetworkManager は {{Pkg|networkmanager}} パッケージで[[インストール]]できます。このパッケージには、デーモンコマンドラインインターフェス ({{ic|nmcli}})、そして curses ベースのインターフェス ({{ic|nmtui}}) が含まれています。
   
=== NetworkManager を有効する ===
+
=== NetworkManager を有効する ===
   
インストール、{{ic|NetworkManager.service}} を [[systemd#ユニットを使う|開始/有効]]ます。NetworkManager デーモンが起動すると、すでに構成されている使用可能な "system connections" に自動的に接続します。"user connections" または接続の場合は、構成および接続するために、nmcli またはアプレットが必要です。
+
インストールしたら、{{ic|NetworkManager.service}} を[[起動/有効]]する必要があります。NetworkManager デーモンが起動すると、に構成されている用可能な "システム接続" に自動的に接続します。"ユーザ接続" 未構成接続を設定したり接続したりするに''nmcli'' アプレットが必要です。
   
  +
{{Note|
=== 追加のインターフェース ===
 
  +
* ネットワークを設定しようとするサービスが他に動いていないことを確認しなければなりません。事実、ネットワーキングサービスが複数動いていると、互いに干渉してしまいます。現在動作中のサービスの完全なリストは {{ic|1=systemctl --type=service}} で見られます。衝突の恐れのあるサービスは[[停止]]してください。NetworkManager サービスを有効化する方法は [[#設定]] を見てください。
  +
* [[systemd-resolved]] が[[起動]]されていない場合、エラーメッセージがログに溢れ始めます。詳細は [[#Unit dbus-org.freedesktop.resolve1.service not found]] を見てください。
  +
}}
   
* {{Pkg|nm-connection-editor}}: グラフィカルインターフェ
+
=== 追加のインターフェ ===
  +
* {{Pkg|network-manager-applet}}: システムトレイアプレット ({{ic|nm-applet}}).
 
  +
* {{Pkg|nm-connection-editor}}: グラフィカルユーザインターフェイス。
  +
* {{Pkg|network-manager-applet}}: システムトレイアプレット ({{ic|nm-applet}})。
  +
  +
=== モバイルブロードバンドサポート ===
  +
  +
NetworkManager はモバイルブロードバンド接続のサポートに [[ModemManager]] を使用します。
  +
  +
{{Pkg|modemmanager}} と {{Pkg|usb_modeswitch}} を[[インストール]]してください。その後、{{ic|ModemManager.service}} を[[有効化]]し、[[起動]]してください。
  +
  +
ModemManager を認識させるために {{ic|NetworkManager.service}} を[[再起動]]する必要がある場合があります。サービスを再起動し、モデムを挿し直せば、認識されるはずです。
  +
  +
フロントエンド (例えば {{Pkg|nm-connection-editor}}) から接続を追加し、接続タイプにモバイルブロードバンドを選択してください。ISP と料金プランを選んだら、[[Wikipedia:ja:APN|APN]] とその他の設定が {{Pkg|mobile-broadband-provider-info}} にある情報で自動的に書き込まれるはずです。
  +
  +
=== PPPoE / DSL サポート ===
   
  +
PPPoE / DSL サポートに関しては {{Pkg|rp-pppoe}} を[[インストール]]してください。PPPoE 接続を追加するには、{{ic|1=nm-connection-editor}} を使って新しい DSL/PPPoE 接続を追加してください。
{{Note|ネットワークを設定しようとするサービスが他に動いていないことを確認してください。複数のネットワークサービスがあると衝突します。{{ic|1=systemctl --type=service}} で現在動作しているサービスのリストを表示できるので、ネットワークサービスがあったら[[systemd#ユニットを使う|停止]]してください。NetworkManager サービスを有効にする方法は[[#設定|設定]]を見てください。}}
 
   
 
=== VPN サポート ===
 
=== VPN サポート ===
   
NetworkManager 1.16 から [[WireGuard]] に対応しました。詳細は [https://blogs.gnome.org/thaller/2019/03/15/wireguard-in-networkmanager/] を参照してください。
+
NetworkManager 1.16 から [[WireGuard]] のネイティブなサポートが追加されました。必要なのは {{ic|wireguard}} カーネルモジュールだけです。詳細は [https://blogs.gnome.org/thaller/2019/03/15/wireguard-in-networkmanager/ NetworkManager のブログ記事の WireGuard] をてください。
   
NetworkManager の VPN サポートはプラグインシステムをベースしています。NetworkManager で VPN のサポートが必要なときは以下のパッケージの中から必要なものをインストールしください:
+
その他の VPN タイプに対するサポートはプラグインシステムをベースしています。以下のパッケージで提供されています:
   
* {{Pkg|networkmanager-openconnect}} for [[OpenConnect]]
+
* {{Pkg|networkmanager-openconnect}}: [[OpenConnect]]
* {{Pkg|networkmanager-openvpn}} for [[OpenVPN]]
+
* [[networkmanager-openvpn]]: [[OpenVPN]]
* {{Pkg|networkmanager-pptp}} for [[PPTP クライアント]]
+
* {{Pkg|networkmanager-pptp}}: [[PPTP クライアント]]
* {{Pkg|networkmanager-vpnc}} for [[Vpnc]]
+
* {{Pkg|networkmanager-strongswan}}: [[strongSwan]]
* {{Pkg|networkmanager-strongswan}} for [[strongSwan]]
+
* {{Pkg|networkmanager-vpnc}}
 
* {{AUR|networkmanager-fortisslvpn-git}}
 
* {{AUR|networkmanager-fortisslvpn-git}}
 
* {{AUR|networkmanager-iodine-git}}
 
* {{AUR|networkmanager-iodine-git}}
 
* {{AUR|networkmanager-libreswan}}
 
* {{AUR|networkmanager-libreswan}}
* {{AUR|networkmanager-l2tp}}
+
* {{Pkg|networkmanager-l2tp}}
 
* {{AUR|networkmanager-ssh-git}}
 
* {{AUR|networkmanager-ssh-git}}
 
* {{Pkg|network-manager-sstp}}
 
* {{Pkg|network-manager-sstp}}
   
{{Warning|1=VPN サポート[https://bugzilla.gnome.org/buglist.cgi?quicksearch=networkmanager%20vpn 不安定]す。GUI からデーモンプロセスのオプションが正しく設定されていることを確認し、パッケージリリースされるたび再確認してください [https://bugzilla.gnome.org/show_bug.cgi?id=755350]。}}
+
{{Warning|1=VPN サポートに関連する[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues?search=VPN&state=opened バグ]が大量に存在しています。デーモンプロセスのオプションが GUI から適切に設定されていることを確認し、パッケージリリースの度ダブルチェックしてください。}}
   
  +
{{Note|1=<nowiki/>
=== Mobile broadband support ===
 
  +
* VPN 使用時に DNS 解決を完全に機能させるには、[[#DNS キャッシングと条件付きフォワーディング|条件付きフォワーディング]]をセットアップする必要があります。
  +
* これらのプラグインは、ドキュメント化されたコマンドラインインターフェイスが存在しなかったり、アプレットが実行されていないと全く動作しなかったりする場合があります。通常のデスクトップ環境を使用している場合には問題になりません。通常とは異なるものを使用している場合は、接続を設定したりアクティブ化したりする際に必要なダイアログが表示されるようにするために [[#nm-applet]] を実行するべきです。[https://bbs.archlinux.org/viewtopic.php?id=246698]
  +
}}
   
  +
== 使い方 ==
モバイル回線に接続するためには、{{pkg|modemmanager}}か {{pkg|mobile-broadband-provider-info}} 、または {{pkg|usb_modeswitch}} を[[インストール]]してください。 詳しくは [[USB 3G モデム#Network Manager]] を確認してください。
 
   
  +
NetworkManager には {{man|1|nmcli}} と {{man|1|nmtui}} が付属しています。
=== PPPoE / DSL サポート ===
 
   
  +
=== nmcli 例 ===
PPPoE / DSL 接続のサポートが必要な場合は {{pkg|rp-pppoe}} を[[インストール]]してください。実際に使うためには、{{ic|1=nm-connection-editor}} から新しい DSL/PPPoE 接続を追加してください。
 
   
  +
近くの Wi-Fi ネットワークを一覧表示します:
== グラフィカルフロントエンド ==
 
   
  +
$ nmcli device wifi list
NetworkManager を簡単に使えるようにするためのアプレットをインストールすることができます。この GUI フロントエンドはシステムトレイ(や通知エリア)に収納され、NetworkManager のネットワーク選択や設定が可能です。異なるデスクトップにあわせて様々なアプレットが存在します。その他に [[#nm-applet]] を使うこともできます。
 
  +
  +
Wi-Fi ネットワークに接続します:
  +
  +
$ nmcli device wifi connect ''SSID_または_BSSID'' password ''パスワード''
  +
  +
非表示の Wi-Fi ネットワークに接続します:
  +
  +
$ nmcli device wifi connect ''SSID_または_BSSID'' password ''パスワード'' hidden yes
  +
  +
{{ic|wlan1}} インターフェイスで Wi-Fi に接続します:
  +
  +
$ nmcli device wifi connect ''SSID_または_BSSID'' password ''パスワード'' ifname wlan1 ''プロファイル名''
  +
  +
インターフェイスを切断します:
  +
  +
$ nmcli device disconnect ifname eth0
  +
  +
名前、UUID、タイプ、バッキングデバイスを含む接続のリストを取得します:
  +
  +
$ nmcli connection show
  +
  +
接続を有効にします (つまり、既存のプロファイルでネットワークに接続します):
  +
  +
$ nmcli connection up ''名前_または_uuid''
  +
  +
接続を削除します:
  +
  +
$ nmcli connection delete ''名前_または_uuid''
  +
  +
ネットワークデバイスとその状態のリストを表示します:
  +
  +
$ nmcli device
  +
  +
Wi-Fi をオフにします:
  +
  +
$ nmcli radio wifi off
  +
  +
=== 接続を編集する ===
  +
  +
設定の包括的なリストについては、{{man|5|nm-settings}} を参照してください。
  +
  +
まず、接続のリストを取得する必要があります:
  +
  +
{{hc|$ nmcli connection|<nowiki>
  +
NAME UUID TYPE DEVICE
  +
有線接続 2 e7054040-a421-3bef-965d-bb7d60b7cecf ethernet enp5s0
  +
有線接続 1 997f2782-f0fc-301d-bfba-15421a2735d8 ethernet enp0s25
  +
MY-HOME-WIFI-5G 92a0f7b3-2eba-49ab-a899-24d83978f308 wifi --
  +
</nowiki>}}
  +
  +
ここでは、後で使用する接続 ID として最初の列を使用できます。この例では、{{ic|有線接続 2}} を接続 ID として選択します。
  +
  +
作成後に接続 {{ic|有線接続 2}} を設定するには、次の3つの方法があります:
  +
  +
; nmcli 対話型エディタ
  +
: {{ic|nmcli connection edit '有線接続 2'}}。<br> 使用法はエディタから十分に文書化されています。
  +
  +
; nmcli コマンドラインインターフェイス
  +
: {{ic|nmcli connection modify '有線接続 2' ''設定''.''プロパティ'' ''値''}}。使用方法については {{man|1|nmcli}} を参照してください。例えば、{{ic|nmcli connection modify '有線接続 2' ipv4.route-metric 200}} コマンドを使用して、IPv4 ルートメトリックを 200 に変更できます。
  +
設定を削除するには、次のように空のフィールド ("") を渡します:
  +
: {{ic|nmcli connection modify '有線接続 2' ''設定''.''プロパティ'' ""}}
  +
  +
; 接続ファイル
  +
: {{ic|/etc/NetworkManager/system-connections/}} で、対応する {{ic|有線接続 2.nmconnection}} ファイルを変更します。<br>{{ic|nmcli connection reload}} で設定ファイルをリロードすることを忘れないでください。
  +
  +
== フロントエンド ==
  +
  +
[[デスクトップ環境]]と統合するために、ほとんどのユーザはアプレットをインストールしたいと考えるでしょう。アプレットはネットワークの選択や設定を容易にするだけでなく、機密情報をセキュアに保存するために必要なエージェントも提供します。様々なデスクトップ環境は独自のアプレットを持っています。デスクトップ環境に独自のアプレットが存在しない場合、[[#nm-applet]] を使用することもできます。
   
 
=== GNOME ===
 
=== GNOME ===
   
GNOME にはツールが内蔵されており、ネットワーク設定からアクセスできます。
+
[[GNOME]] にはツールが内蔵されており、ネットワーク設定からアクセス可能です。
   
 
=== KDE Plasma ===
 
=== KDE Plasma ===
   
{{Pkg|plasma-nm}} アプレをインストールしてください。
+
{{Pkg|plasma-nm}} ケージ[[インストール]]してください。その後、''パネルオプション > ウィジェットを追加 > ネットワーク'' で KDE タスクバーにアプレットを追加してください。
   
 
=== nm-applet ===
 
=== nm-applet ===
   
{{Pkg|network-manager-applet}} はあらゆる Xorg 環境で動作する GTK+ 3 フロントエンドです (システムトレイに表示されます)
+
{{Pkg|network-manager-applet}} は、システムトレイのある Xorg 環境で機能する GTK 3 フロントエンドです。
   
接続情報を保存するには [[GNOME Keyring]] をインストール設定してください。
+
接続に関する機密情報 (Wi-Fi のパスワードなど) を保存するには、[https://specifications.freedesktop.org/secret-service/latest/ Secret Service D-Bus API] を実装しているアプリケーション ([[GNOME/Keyring]]、[[KDE Wallet]]、[[KeePass|KeePassXC]] など) をインストール設定してください。
   
{{ic|Make available to other users}} オプションを有効すると、NetworkManager はパスワードを平文で保存しま。ただしファイルにアクセスできるのは root だけです (他のユーザーは {{ic|nm-applet}} をしてアクセスす)。[[#Wi-Fi パスワードの暗号化]]を見てください。
+
接続の設定で {{ic|Make available to other users}} チェックボックスオプションを有効すると、NetworkManager はその接続のパスワードを平文で保存することに注意てください。とはいえ、パスワードが含まれるファイルは root (及び {{ic|nm-applet}} をして他のユーザ) からしかアクセスできせん。[[#Wi-Fi パスワードの暗号化]] を見てください。
   
システムトレイを使わずに {{ic|nm-applet}} を起動したい場合、{{Pkg|trayer}} または {{Pkg|stalonetray}} を使います。例えば、以下のようなスクリプトを追加して使うことができます:
+
{{Pkg|trayer}} {{Pkg|stalonetray}} を使うことで、システムトレイ無しで {{ic|nm-applet}} を実行することができます。例えば、以下のようなスクリプトをパスに追加することができます:
   
 
{{hc|nmgui|<nowiki>
 
{{hc|nmgui|<nowiki>
93行目: 175行目:
 
</nowiki>}}
 
</nowiki>}}
   
[[stalonetray]] のウィンドウを閉じると {{ic|nm-applet}} も終了るため、ネットワーク設定で無駄なメモリ消費ることありません。
+
''stalonetray'' のウィンドウを閉じると{{ic|nm-applet}} も閉じま。なので、ネットワーク設定を終えたら余分なメモリ消費されることありません。
   
  +
このアプレットは、Wi-Fi ネットワークの接続や切断などのイベントの通知を表示することができます。これらの通知を表示させるには、通知サーバがインストールされている必要があります ([[デスクトップ通知]] を見てください)。アプレットを通知サーバ無しで使うと、標準出力や標準エラー出力にメッセージが表示され、最悪、アプレットがハングするかもしれません。[https://bugzilla.gnome.org/show_bug.cgi?id=788313] を参照してください。
==== Xfce ====
 
[[Xfce]] でも {{Pkg|network-manager-applet}} は動作しますが、エラーメッセージなど通知を表示するには {{ic|nm-applet}} に加えて FreeDesktop.org の仕様に準拠した[[デスクトップ通知]]デーモンが必要です。xfce のパネル設定では "Notification Area" という名前のアプリになります。通知を有効にするには {{Pkg|xfce4-notifyd}} をインストールしてください。新しい無線ネットワークに接続したときにパスワードの入力プロンプトを表示させるには {{Pkg|gnome-keyring}} などの org.freedesktop.secrets サービスが必要です。
 
   
通知デーモンがないと、{{ic|nm-applet}} アプレット以下のエラーを標準出力に表示ます:
+
通知を無効化した状態で {{ic|nm-applet}} を実行するには、アプレット以下のコマンドで起動てください:
   
  +
$ nm-applet --no-agent
(nm-applet:24209): libnotify-WARNING **: Failed to connect to proxy
 
** (nm-applet:24209): WARNING **: get_all_cb: couldn't retrieve
 
system settings properties: (25) Launch helper exited with unknown
 
return code 1.
 
** (nm-applet:24209): WARNING **: fetch_connections_done: error
 
fetching connections: (25) Launch helper exited with unknown return
 
code 1.
 
** (nm-applet:24209): WARNING **: Failed to register as an agent:
 
(25) Launch helper exited with unknown return code 1
 
   
  +
{{Tip|{{ic|nm-applet}} は[[XDG Autostart|自動起動デスクトップファイル]]によって自動的に起動されるかもしれません。そのような場合に {{ic|--no-agent}} オプションを追加するには、デスクトップファイルの Exec 行を変更してください。つまり:
{{ic|nm-applet}} は問題なく動作しますが、通知は表示されません。
 
   
  +
{{bc|1=Exec=nm-applet --no-agent}}
アプレットが表示されない場合は {{AUR|xfce4-indicator-plugin}} パッケージをインストールしてください [https://askubuntu.com/questions/449658/networkmanager-tray-nm-applet-is-gone-after-upgrade-to-14-04-trusty]。
 
   
  +
}}
==== Openbox ====
 
   
  +
{{Warning|[[i3]] では、nm-applet が {{ic|--no-agent}} オプションで起動された場合、パスワード入力ダイアログが表示されないため、アイテムリストをクリックして新しい暗号化された Wi-Fi ネットワークに接続することができなくなります。[[journal]] には {{ic|no secrets: No agents were available for this request}} と出力されます。}}
Openbox で正しく動作させるには、XFCE と同じ理由で GNOME アプレットに {{Pkg|xfce4-notifyd}} 通知デーモンが必要です。また、システムトレイにアプレットを表示するには {{Pkg|gnome-icon-theme}} パッケージが必要です。
 
   
  +
==== Appindicator ====
認証情報 (Wireless/DSL) を保存するには [[GNOME Keyring]] をインストール・設定してください。
 
   
  +
バージョン 1.18.0 から、Appindicator のサポートが公式の {{Pkg|network-manager-applet}} パッケージで[https://gitlab.archlinux.org/archlinux/packaging/packages/network-manager-applet/-/commit/527448fb2a87d85055f504f463dfe961dccd75c3 利用可能]になりました。nm-applet を Appindicator の環境で使うには、アプレットを以下のコマンドで起動してください:
{{ic|nm-applet}} は autostart ファイルを {{ic|/etc/xdg/autostart/nm-applet.desktop}} にインストールします。これに問題が発生する場合 (例: {{ic|nm-applet}} が二度起動する、全く起動しない)、[[Openbox#autostart]] や [https://bbs.archlinux.org/viewtopic.php?pid=993738] を見て解決してください。
 
   
  +
$ nm-applet --indicator
=== コマンドライン ===
 
   
==== nmcli ====
+
=== networkmanager-dmenu ===
   
  +
フロントエンドのもう一つの選択肢は {{AUR|networkmanager-dmenu-git}} です。これは、NetworkManager の接続を {{ic|nm-applet}} ではなく [[dmenu]] や [[rofi]] で管理する小さなスクリプトです。このスクリプトには必須の機能が全て揃っています。例えば: NetworkManager の既存の Wi-Fi 接続や有線接続に接続する、新しい Wi-Fi 接続に接続する、必要に応じてパスフレーズを要求する、既存の VPN 接続に接続する、ネットワークを有効化/無効化する、''nm-connection-editor'' GUI を起動する、Bluetooth ネットワークに接続する。
{{Pkg|networkmanager}} パッケージにはバージョン 0.8.1 から [http://manpages.ubuntu.com/manpages/maverick/man1/nmcli.1.html nmcli] が含まれています。
 
 
例:
 
 
* wifi ネットワークに接続するには: {{bc|nmcli dev wifi connect <name> password <password>}}
 
* {{ic|wlan1}} の wifi インターフェイスの wifi に接続するには: {{bc|nmcli dev wifi connect <name> password <password> iface wlan1 [profile name]}}
 
* インターフェイスを切断するには: {{bc|nmcli dev disconnect iface eth0}}
 
* 切断されたインターフェイスに再接続するには: {{bc|nmcli con up uuid <uuid>}}
 
* UUID のリストを表示するには: {{bc|nmcli con show}}
 
* ネットワークデバイスのリストと状態を表示するには: {{bc|nmcli dev}}
 
* wifi をオフにするには: {{bc|nmcli r wifi off}}
 
 
==== nmtui ====
 
 
''nmtui'' は ''networkmanager'' のグラフィックフロントエンドで curses を使っています。X のない環境でネットワークを設定・管理するのに便利です。{{Pkg|networkmanager}} パッケージにはバージョン 0.9.10 から ''nmtui'' が含まれています。
 
 
==== nmcli-dmenu ====
 
 
もしくは {{ic|nm-applet}} の代わりに ''dmenu'' を使って NetworkManager の接続を管理する小さなスクリプト {{AUR|networkmanager-dmenu-git}} も存在します。既存の NetworkManager の有線・無線接続に接続したり、新しい無線接続に接続したり、必要であればパスフレーズをリクエストする、既存の VPN 接続に接続する、ネットワークを無効化・有効化する、''nm-connection-editor'' GUI を起動するなどの機能が備わっています。
 
   
 
== 設定 ==
 
== 設定 ==
   
  +
NetworkManager を適切に実行させるには、いくつか追加の手順が必要です。[[ネットワーク設定#ホスト名の設定]] で説明されているように、{{ic|/etc/hosts}} が設定されていることを確認してください。
NetworkManager には正しく機能させるために必要なことがあります。
 
   
  +
NetworkManager のグローバルな設定ファイルは {{ic|/etc/NetworkManager/NetworkManager.conf}} です。追加の設定ファイルは {{ic|/etc/NetworkManager/conf.d/}} に置くことができます。通常、グローバルなデフォルト値に対して設定を行う必要はありません。
次に進む前に {{ic|/etc/hosts}} が正しいことを確認してください。この手順を行う前に接続を試すと、NetworkManager が設定を変えてしまうことがあります。[[ネットワーク設定 #ホストネームの設定]] にあるように設定ができていることを確認してください。{{ic|/etc/hosts}} の例:
 
   
  +
設定ファイルを編集したら、以下のコマンドで変更を適用することができます:
{{hc|/etc/hosts|
 
127.0.0.1 localhost
 
::1 localhost
 
}}
 
   
  +
# nmcli general reload
nss-myhostname を使っていない場合:
 
 
{{hc|/etc/hosts|
 
127.0.0.1 my-laptop localhost
 
::1 my-laptop localhost
 
}}
 
   
=== NetworkManager を有効にする ===
+
=== NetworkManager-wait-online ===
   
  +
{{ic|NetworkManager.service}} を有効化すると、{{ic|NetworkManager-wait-online.service}} も有効化されます。{{ic|NetworkManager-wait-online.service}} は oneshot なシステムサービスで、ネットワークが構成されるまで待機します。このサービスには {{ic|1=WantedBy=network-online.target}} が含まれているため、このサービスが終了するのは、{{ic|network-online.target}} 自体が有効化されている時か、あるいは {{ic|network-online.target}} が他のユニットによって実行された時のみです。[[systemd#ネットワークが稼働した後にサービスを実行する]] も参照してください。
NetworkManager は {{ic|NetworkManager.service}} を使って[[systemd#ユニットを使う|操作]]します。NetworkManager デーモンが起動すると、自動的に設定済みの有効な "システム接続" に接続します。"ユーザー接続"や設定していない接続には {{ic|nmcli}} やアプレットを使って設定・接続する必要があります。
 
   
  +
デフォルトでは、{{ic|NetworkManager-wait-online.service}} は、ネットワーク接続が確立されるのを待つ ({{man|1|nm-online}} を参照) のではなく、NetworkManager の起動が完了するのを待ちます。ネットワークの準備が整う前に {{ic|NetworkManager-wait-online.service}} が終了してしまってブート時に一部のサービスが失敗してしまう場合、{{ic|NetworkManager-wait-online.service}} [[ユニットを拡張]]し、{{ic|ExecStart}} 行から {{ic|-s}} を削除してください:
NetworkManager のグローバルな設定ファイルは {{ic|/etc/NetworkManager/NetworkManager.conf}} にあります。他の設定ファイルは {{ic|/etc/NetworkManager/conf.d/}} 以下に置くことが出来ます。通常、グローバルなデフォルト設定ファイルに設定を加える必要はありません。
 
   
  +
[Service]
=== NetworkManager Wait Online を有効にする ===
 
  +
ExecStart=
ネットワークが立ち上がる前にサービスが起動して失敗する場合、NetworkManager サービスにプラスして {{ic|NetworkManager-wait-online.service}} を使って下さい。ただし、ネットワークが設定されていないときでも殆どのネットワークデーモンは正しく立ち上がるので、これが必要になるのは稀です。
 
  +
ExecStart=/usr/bin/nm-online -q
   
  +
ただし、これにより[https://lists.fedoraproject.org/archives/list/users@lists.fedoraproject.org/thread/EGC324JD3HJCGVN7J55WYPRLFDA3TP7N/ 他の問題]が発生する可能性があることに注意してください。
それでもサービスが正しく起動できない場合 {{ic|/usr/lib/systemd/system/NetworkManager-wait-online.service}} のタイムアウト設定が短すぎることが原因です。デフォルトのタイムアウトである 30 から高い値に修正してください。
 
   
  +
一部のケースで、タイムアウトの設定が短すぎるために、このサービスの起動が失敗してしまう場合があります。サービスを[[編集]]して {{ic|NM_ONLINE_TIMEOUT}} を {{ic|60}} からより大きい値に変更してください。
=== PolicyKit パーミッションの設定 ===
 
   
  +
=== PolicyKit のパーミッションをセットアップする ===
ワーキングセッションの設定については[[一般的なトラブルシューティング#セッションのパーミッション]]を参照してください。
 
   
  +
デフォルトでは、アクティブなローカルセッションのユーザは全員パスワード無しでほぼ全てのネットワーク設定を変更することができます。セッションの種類を確認する方法については、[[一般的なトラブルシューティング#セッションのパーミッション]] を見てください。ほとんどの場合、特に設定しなくても全て動作するはずです。
ワーキングセッションで、NetworkManager に必要な特権を与える方法は複数存在します:
 
   
  +
一部のアクション (システムのホスト名を変更するなど) においては、管理者のパスワードが必要です。そのような場合、自身のユーザを {{ic|wheel}} グループに[[ユーザーとグループ#グループ管理|追加]]し、パスワードのプロンプトを表示する [[Polkit#認証エージェント|Polkit の認証エージェント]]を実行する必要があります。
''方法 1.'' ログイン時に {{ic|/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1}} ({{Pkg|polkit-gnome}} に含まれています) などの [[PolicyKit]] 認証エージェントを実行する。ネットワーク接続を追加・削除したときにパスワードを求められるようになります。
 
   
  +
リモートセッションの場合 (例えば、[[TigerVNC#vncserver をバーチャル(ヘッドレス)セッションで起動する|ヘッドレス VNC]])、NetworkManager を使用するために必要な特権を得る方法は複数あります:
''方法 2.'' ユーザーを {{ic|wheel}} グループに追加する。パスワードを入力する必要はなくなりますが、root パスワードを入力せずに [[sudo]] を使えるなど、他の権限もユーザーアカウントに与えてしまうことになります。
 
   
  +
# 自身を {{ic|wheel}} グループに[[ユーザーとグループ#グループ管理|追加]]する。アクションの度にパスワードを入力する必要があります。注意点として、{{ic|wheel}} グループに追加すると他の権限 (root パスワードを入力せずに [[sudo]] を実行できるなど) も付与される場合があります。
''方法 3.'' ユーザーを {{ic|network}} グループに追加して以下のファイルを作成する:
 
{{hc|/etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules|<nowiki>
+
# 自身を {{ic|network}} グループに[[ユーザーとグループ#グループ管理|追加]]し、以下の内容で {{ic|/etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules}} を作成する: {{bc|<nowiki>
 
polkit.addRule(function(action, subject) {
 
polkit.addRule(function(action, subject) {
 
if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("network")) {
 
if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("network")) {
 
return polkit.Result.YES;
 
return polkit.Result.YES;
 
}
 
}
});</nowiki>}}
+
});
{{ic|network}} グループの全てのユーザーはパスワードしでネットワーク追加削除できるようになります。[[ディスプレイマネージャ#systemd-logind を使う|systemd-logind]] でアクティブセッションを作っていない場合、この方法は systemdは動きせん
+
</nowiki>}} {{ic|network}} グループの全ユーザパスワードしでネットワーク追加削除を行えるようになります (これは、Polkit 認証エージェ実行する必要がないことを意味します。なので、この方法は SSH セッションも使えす。)
   
 
=== プロクシ設定 ===
 
=== プロクシ設定 ===
   
NetworkManager は直接プロクシ設定を扱いませんが、GNOME や KDE を使っている場合、NetworkManager の情報を使ってプロクシ設定を管理する [http://marin.jb.free.fr/proxydriver/ proxydriver] を使うことができます。[[Arch User Repository|AUR]] の {{AUR|proxydriver}} パッケージを探して下さい
+
NetworkManager は直接プロクシ設定を扱いませんが、[[GNOME]][[KDE]] を使っている場合、NetworkManager の情報を使ってプロクシ設定を管理する {{AUR|proxydriver}} を使うことができます。
   
proxydriver でプロクシ設定を変更できるようにするには、GNOME スタートアッププロセスの一部として、次のコマンドを実行する必要があります (System -> Preferences -> Startup Applications):
+
''proxydriver'' でプロクシ設定を変更できるようにするには、GNOME スタートアッププロセスの一部として、次のコマンドを実行する必要があります ([[GNOME#自動起動]] を参照):
   
xhost +si:localuser:''your_username''
+
$ xhost +si:localuser:''ユーザ名''
   
 
参照: [[プロキシ設定]]
 
参照: [[プロキシ設定]]
   
=== DHCP client ===
+
=== 接続の確認 ===
   
  +
NetworkManager は、ネットワークに接続した後にウェブサーバへの接続を試みて、キャプティブポータルなどが存在しないか確認します。デフォルトの接続先ホスト ({{ic|/usr/lib/NetworkManager/conf.d/20-connectivity.conf}} で設定されています) は [https://ping.archlinux.org ping.archlinux.org] (redirect.archlinux.org の CNAME エイリアス) です。別のウェブサーバを使う、または接続チェックを無効化するには、{{ic|/etc/NetworkManager/conf.d/20-connectivity.conf}} を作成してください ({{man|5|NetworkManager.conf|CONNECTIVITY SECTION}} を参照)。以下は、GNOME のサーバを使用する例です ([[GNOME]] を使用する必要はありません):
NetworkManager はデフォルトでは DHCP クライアントは内部のものを使います。DHCPv4 プラグインは [https://nettools.github.io/n-dhcp4/ nettools' n-dhcp4] ライブラリが基になっていて、DHCPv6 プラグインは {{ic|systemd-networkd}} のコードが基となっています。
 
   
  +
{{hc|/etc/NetworkManager/conf.d/20-connectivity.conf|<nowiki>
NetworkManager は他の DHCP クライアントを使うことができ、そのためには次の好きな方をインストールしてください:
 
  +
[connectivity]
  +
uri=http://nmcheck.gnome.org/check_network_status.txt
  +
</nowiki>}}
   
  +
NetworkManager の接続チェックを無効化するには、以下の設定を使用してください。これは、接続チェックを無効化する VPN に接続している場合に便利です。
* {{Pkg|dhclient}} - ISCの DHCP クライアント。
 
* {{Pkg|dhcpcd}} - [[dhcpcd]]。
 
   
  +
{{hc|/etc/NetworkManager/conf.d/20-connectivity.conf|<nowiki>
{{Note|
 
  +
[connectivity]
* NetworkManager は、 dhcpcd を IPv6 のために使うことを、サポートしていません (詳しくは [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/5 NetworkManager issue #5] )。DHCP クライアントとして dhcpcd を設定している場合には、 DHCPv6 内部のクライアントを使います。
 
  +
enabled=false
* NetworkManager は{{Pkg|dhcpcd}} のバージョン 9.0.0 以上をサポートしなくなりました。詳細は {{Bug|66231}} を見てください。
 
  +
</nowiki>}}
* {{Pkg|dhclient}} や {{Pkg|dhclient}} が提供する systemd ユニットを有効にしないでください。NetworkManager と干渉します。
 
  +
}}
 
  +
{{Note|自動的な接続チェックはプライバシーの問題を引き起こす可能性がありますが、Arch Linux のデフォルトの接続先 URL は如何なるアクセスも記録しません。[https://gitlab.archlinux.org/archlinux/infrastructure/-/commit/fabccd0f61e5dea3925e8a0c6a46d56d5750c121#a4f34381bbb18ea77bfb3dd11a8aeca707078fca_0_26] [https://gitlab.archlinux.org/archlinux/infrastructure/-/blob/master/roles/ping/templates/nginx.d.conf.j2] を参照してください。}}
  +
  +
=== キャプティブポータル ===
  +
  +
[[Wikipedia:ja:キャプティブポータル|キャプティブポータル]]が存在している場合、デスクトップマネージャが、資格情報を求めるウィンドウを自動的に開く場合があります。あなたのデスクトップ環境がこれを行わない場合、{{Pkg|capnet-assist}} パッケージを使用することができます (しかし現在、このパッケージの NetworkManager ディスパッチャスクリプトは壊れています)。あるいは、NetworkManager ディスパッチャスクリプトを以下の内容で作成することもできます:
  +
  +
{{hc|/etc/NetworkManager/dispatcher.d/90-open_captive_portal|<nowiki>
  +
#!/bin/sh -e
  +
# Script to dispatch NetworkManager events
  +
#
  +
# Runs shows a login webpage on walled garden networks.
  +
# See NetworkManager(8) for further documentation of the dispatcher events.
  +
  +
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  +
  +
if [ -x "/usr/bin/logger" ]; then
  +
logger="/usr/bin/logger -s -t captive-portal"
  +
else
  +
logger=":"
  +
fi
  +
  +
wait_for_process() {
  +
PNAME=$1
  +
while [ -z "$(/usr/bin/pgrep $PNAME)" ]; do
  +
sleep 3;
  +
done
  +
}
  +
  +
#launch the browser, but on boot we need to wait that nm-applet starts
  +
start_browser() {
  +
local user="$1"
  +
local display="$2"
  +
  +
export DISPLAY="$display"
  +
wait_for_process nm-applet
  +
  +
export XAUTHORITY="/home/$user/.Xauthority"
  +
  +
$logger "Running browser as '$user' with display '$display' to login in captive portal"
  +
sudo -u "$user" --preserve-env=DISPLAY,XAUTHORITY -H xdg-open http://capnet.elementary.io 2>&1 > /dev/null
  +
}
  +
  +
# Run the right scripts
  +
case "$2" in
  +
connectivity-change)
  +
$logger -p user.debug "dispatcher script triggered on connectivity change: $CONNECTIVITY_STATE"
  +
if [ "$CONNECTIVITY_STATE" = "PORTAL" ]; then
  +
# Match last column of who's output with ' :[at least one digit] '
  +
who | awk '$NF ~ /\(:[0-9]+\)/ { print $1 " " substr($NF, 2, length($NF)-2) };' | \
  +
while read user display; do
  +
start_browser $user $display || $logger -p user.err "Failed for user: '$user' display: '$display'"
  +
done
  +
fi
  +
;;
  +
*)
  +
# In a down phase
  +
exit 0
  +
;;
  +
esac
  +
</nowiki>}}
  +
  +
このスクリプトを実行するには、{{ic|NetworkManager.service}} を[[再起動]]するか、システムを再起動する必要があります。そうしたら、ディスパッチャスクリプトはキャプティブポータルを検知するとログインウィンドウを開くはずです。
  +
  +
別の解決策は Google Chrome ベースの {{AUR|captive-browser-git}} です。
  +
  +
=== DHCP クライアント ===
  +
  +
デフォルトでは、NetworkManager は自身の内蔵 DHCP クライアントを使用します。内蔵 DHCPv4 プラグインは [https://nettools.github.io/n-dhcp4/ nettools の n-dhcp4] ライブラリをベースにしていますが、内蔵 DHCPv6 プラグインは systemd-networkd ベースのコードから作られています。
  +
  +
別の DHCP クライアントを使用するには、以下の代替実装のどれかを[[インストール]]してください:
  +
  +
* {{Pkg|dhclient}} - [[dhclient]]
  +
* {{Pkg|dhcpcd}} - [[dhcpcd]]
   
DHCP クライアントのバックエンドを変えたい場合は、{{ic|/etc/NetworkManager/conf.d/}} にある設定ファイルで {{ic|1=main.dhcp=''dhcp_client_name''}} を設定してください。例:
+
DHCP クライアントのバックエンドを変更するには、{{ic|/etc/NetworkManager/conf.d/}} に設定ファイルを作成して、そのファイル内で {{ic|1=main.dhcp=''DHCP_クライアント名''}} オプションを設定してください。例えば:
   
 
{{hc|1=/etc/NetworkManager/conf.d/dhcp-client.conf|2=
 
{{hc|1=/etc/NetworkManager/conf.d/dhcp-client.conf|2=
226行目: 349行目:
 
}}
 
}}
   
  +
{{Note|
=== dnsmasq ===
 
  +
* NetworkManger は IPv6 に dhcpcd を使用することをサポートしていません。[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/5 NetworkManager issue #5] を参照してください。dhcpcd が DHCP クライアントとして設定されている場合、NetworkManager は DHCPv6 に対しては内臓の DHCP クライアントを使用します。
  +
* {{Pkg|dhclient}} パッケージと {{Pkg|dhcpcd}} パッケージに同梱されている systemd ユニットは有効化しないでください。NetworkManager と競合してしまいます。詳細は [[#インストール]] セクションに書かれているノートを見てください。
  +
}}
  +
  +
=== DNS の管理 ===
  +
  +
NetworkManager の DNS 管理については、GNOME プロジェクトの wiki ページ [https://wiki.gnome.org/Projects/NetworkManager/DNS Projects/NetworkManager/DNS] で説明されています。
  +
  +
==== DNS キャッシングと条件付きフォワーディング ====
  +
  +
NetworkManager には、[[dnsmasq]] または [[systemd-resolved]] を使用して DNS キャッシングと条件付きフォワーディングを有効化するプラグインが存在します ([https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/143 以前は]、"条件付きフォワーディング" は NetworkManager のドキュメントで "split DNS" と呼ばれていました)。このセットアップには、DNS ルックアップがキャッシュされるので名前解決の時間が短縮され、VPN ホストの DNS ルックアップが、関連する VPN の DNS サーバに転送されるという長所があります。これは、複数の VPN に接続する場合に特に便利です。
  +
  +
{{Note|{{ic|/etc/resolv.conf}} が {{ic|/run/systemd/resolve/stub-resolv.conf}} や {{ic|/run/systemd/resolve/resolv.conf}}、{{ic|/lib/systemd/resolv.conf}}、{{ic|/usr/lib/systemd/resolv.conf}} へのシンボリックリンクである場合、NetworkManager は systemd-resolved を自動的に選択します。dnsmasq を使用するには、まずシンボリックリンクを削除する必要があります。その後で、NetworkManager を再起動してください。}}
  +
  +
===== dnsmasq =====
   
{{Pkg|dnsmasq}} がインストールされていることを確認します次に、{{ic|/etc/NetworkManager/conf.d/}} の設定ファイルを使用して {{ic|1=main.dns=dnsmasq}} を設定します。
+
{{Pkg|dnsmasq}} がインストールされていることを確認してくださいそして、{{ic|/etc/NetworkManager/conf.d/}} の設定ファイル (無い場合は作成してください) で {{ic|1=main.dns=dnsmasq}} を設定してください:
   
 
{{hc|/etc/NetworkManager/conf.d/dns.conf|2=
 
{{hc|/etc/NetworkManager/conf.d/dns.conf|2=
235行目: 373行目:
 
}}
 
}}
   
次に、root として {{ic|nmcli general reload}} を実行します NetworkManager は自動的に dnsmasq を起動し、 {{ic|/etc/resolv.conf}} に {{ic|127.0.0.1}} を追加します。元の DNS サーバは {{ic|/run/NetworkManager/no-stub-resolv.conf}} にあります。 dnsmasq が使用されていることを確認するには、 {{ic|drill example.com}} を使用して同じ DNS ルックアップを2回実し、サーバとクエリの時間を確認ます。
+
次に、{{ic|nmcli general reload}} を root として実行してください。NetworkManager は自動的に dnsmasq を起動し、{{ic|/etc/resolv.conf}} に {{ic|127.0.0.1}} を追加します。元の DNS サーバは {{ic|/run/NetworkManager/no-stub-resolv.conf}} を見れば分かります。dnsmasq が使用されているかどうかは、{{ic|drill example.com}} 同じ DNS ルックアップを2ってサーバとクエリの時間を計測すれば確認できます。
   
 
{{Note|
 
{{Note|
* {{ic|dnsmasq.service}} を起動したり、 {{ic|/etc/dnsmasq.conf}} を編集したりする必要はありません。 NetworkManager は、 systemd サービスを使用せず、dnsmasq のデフォルト設定ファイルを読み込まずに dnsmasq を起動します。
+
* {{ic|dnsmasq.service}} を起動したり、{{ic|/etc/dnsmasq.conf}} を編集したりする必要はありません。NetworkManager は、その systemd サービスを使ず、さらに dnsmasq のデフォルト設定ファイルを読み込まずに dnsmasq を起動します。
* NetworkManager によって起動された dnsmasq インスタンスは {{ic|127.0.0.1:53}} にバインドされます。同じアドレスとポートで他のソフトウェア ({{ic|dnsmasq.service}} 含む) を実行することはできません。
+
* NetworkManager によって起動された dnsmasq インスタンスは {{ic|127.0.0.1:53}} にバインドされます。なので、これと同じアドレスとポートで他のソフトウェア ({{ic|dnsmasq.service}} 含む) を実行することはできません。
 
}}
 
}}
   
  +
====== dnsmasq のカスタム設定 ======
=== systemd-resolved ===
 
   
  +
{{ic|/etc/NetworkManager/dnsmasq.d/}} 内に設定ファイルを作成することで、''dnsmasq'' のカスタム設定を作成することができます。例えば、DNS キャッシュ (RAM 内に格納されます) のサイズを変更するには:
NetworkManager は、 [[systemd-resolved]] を DNS リゾルバおよびキャッシュとして使用できます。使用する前に、 ''systemd-resolved'' が正しく設定され、{{ic|systemd-resolved.service}} が [https://wiki.archlinux.jp/index.php/Systemd#.E3.83.A6.E3.83.8B.E3.83.83.E3.83.88.E3.82.92.E4.BD.BF.E3.81.86 スタート] してることを確認してください。
 
   
  +
{{hc|/etc/NetworkManager/dnsmasq.d/cache.conf|2=
{{ic|/etc/resolv.conf}} が [https://wiki.archlinux.jp/index.php/Systemd-resolved#DNS symlink] から {{ic|/run/systemd/resolve/stub-resolv.conf}}、 {{ic|/run/systemd/resolve/resolv.conf}}、 または {{ic|/usr/lib/systemd/resolv.conf}} に設定されている場合は、自動的に systemd-resolved が使用されます。
 
  +
cache-size=1000
  +
}}
  +
  +
設定ファイルの構文は以下のコマンドで確認できます:
  +
  +
$ dnsmasq --test --conf-file=/dev/null --conf-dir=/etc/NetworkManager/dnsmasq.d
  +
  +
利用可能な全てのオプションについては {{man|8|dnsmasq}} を参照してください。
  +
  +
====== IPv6 ======
  +
  +
{{Accuracy|NetworkManager は {{ic|::1}} を {{ic|/etc/resolv.conf}} に追加しないため、以下の方法では問題を解決できません。{{ic|@::1}} を手動で drill に渡さない限り、{{ic|Error: error sending query: No (valid) nameservers defined in the resolver}} というエラーで失敗します。}}
  +
  +
NetworkManager で {{ic|dnsmasq}} を有効化すると、IPv6 のみの DNS ルックアップ (つまり、{{ic|drill -6 [hostname]}}) が機能しなくなる場合があります (しかし、それ以外では機能する)。この問題を解決するには、以下のファイルを作成し、IPv6 ループバックもリッスンするように ''dnsmasq'' を設定してください:
  +
  +
{{hc|/etc/NetworkManager/dnsmasq.d/ipv6-listen.conf|2=
  +
listen-address=::1
  +
}}
  +
  +
さらに、{{ic|dnsmasq}} は上流の IPv6 DNS を優先しません。残念ながら、NetworkManager も IPv6 DNS を優先しません ([https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/936712 Ubuntu Bug])。回避策は、NetworkManager の設定で IPv6 DNS を無効化することです (IPv4 DNS があると仮定します)。
  +
  +
====== DNSSEC ======
  +
  +
NetworkManager によってデフォルトで開始される dnsmasq インスタンスは、{{ic|--proxy-dnssec}} オプションを渡して開始されるため、[[DNSSEC]] を検証しません。なので、上流の DNS サーバからの DNSSEC 情報を何でも信頼します。
  +
  +
dnsmasq に DNSSEC を適切に検証させるには、以下の設定ファイルを作成してください (これにより、DNSSEC をサポートしない名前サーバでの DNS 解決が機能しなくなります):
  +
  +
{{hc|/etc/NetworkManager/dnsmasq.d/dnssec.conf|2=
  +
conf-file=/usr/share/dnsmasq/trust-anchors.conf
  +
dnssec
  +
}}
  +
  +
===== systemd-resolved =====
  +
  +
NetworkManager は [[systemd-resolved]] を DNS リゾルバ及び DNS キャッシュとして使用することができます。まず先に、''systemd-resolved'' が適切に設定されていて、{{ic|systemd-resolved.service}} が[[開始]]されていることを確認してください。
  +
  +
{{ic|/etc/resolv.conf}} が {{ic|/run/systemd/resolve/stub-resolv.conf}} や {{ic|/run/systemd/resolve/resolv.conf}}、{{ic|/usr/lib/systemd/resolv.conf}} への[[systemd-resolved#DNS|シンボリックリンク]]である場合、systemd-resolved は自動的に使用されます。
   
{{ic|1=main.dns=systemd-resolved}} {{ic|/etc/NetworkManager/conf.d/}} 設定すると、明示的に有効できます
+
{{ic|/etc/NetworkManager/conf.d/}} 内の設定ファイルで {{ic|1=main.dns=systemd-resolved}} 設定するこれを明示的に有効化することもできます:
   
 
{{hc|/etc/NetworkManager/conf.d/dns.conf|2=
 
{{hc|/etc/NetworkManager/conf.d/dns.conf|2=
255行目: 430行目:
 
}}
 
}}
   
  +
===== openresolv サブスクライバのある DNS リゾルバ =====
=== NetworkManager の無効化 ===
 
   
  +
ローカルの [[DNS リゾルバ]]へのサブスクライバ (加入者) が [[openresolv]] に存在している場合、サブスクライバをセットアップし、[[#openresolv を使う|openresolv を使用するように NetworkManager を設定してください]]。
''dbus'' によってサービスが自動的に起動してしまうこともあります。''systemctl'' でサービスをマスクすることで完全に無効化できます:
 
# systemctl mask NetworkManager
 
# systemctl mask NetworkManager-dispatcher
 
   
  +
NetworkManager は単一の "インターフェイス" を ''resolvconf'' に広告するため、2つの NetworkManager 接続間で条件付きフォワーディングを行うのは不可能です。[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/153 NetworkManager issue 153] を参照してください。
=== /etc/resolv.conf ===
 
   
  +
この問題は {{ic|/etc/resolvconf.conf}} で {{ic|1=private_interfaces="*"}} を設定すれば、部分的に緩和できます [https://roy.marples.name/projects/openresolv/configuration/]。検索ドメインリストに無いドメインのクエリは、フォワーディングされません。そのようなクエリは、他の DNS サーバにフォワーディングされるか、DNS ルートサーバから回帰的に解決されるなどして、ローカルのリゾルバの設定に従って処理されます。
NetworkManager の {{ic|/etc/resolv.conf}} 管理モードは、 {{ic|main.rc-manager}} 設定で設定されています。デフォルトの {{ic|auto}} モードでは、 {{ic|/etc/resolv.conf}} の管理方法が次の順序で選択されます。
 
   
  +
==== カスタム DNS サーバ ====
* {{ic|/etc/resolv.conf}} が [https://wiki.archlinux.jp/index.php/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E5%B1%9E%E6%80%A7#.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E5.B1.9E.E6.80.A7 不変] の場合、ファイルは [https://wiki.archlinux.jp/index.php?title=NetworkManager&action=submit#.E7.AE.A1.E7.90.86.E5.AF.BE.E8.B1.A1.E5.A4.96.E3.81.AE_.2Fetc.2Fresolv.conf はまったく変更されません。] です。これは {{ic|1=main.rc-manager=unmanaged}} と同じです。
 
* {{ic|/etc/resolv.conf}} が {{ic|/run/systemd/resolve/stub-resolv.conf}}、 {{ic|/run/systemd/resolv.conf}}、または {{ic|/usr/lib/systemd/resolv.conf}} へのシンボリックリンクの場合、[[#systemd-resolved|systemd-resolved が使用されています]] これは {{ic|1=main.rc-manager=systemd-resolved}} と同じです。
 
* {{ic|/usr/bin/resolvconf}} が存在する場合は、[https://wiki.archlinux.jp/index.php?title=NetworkManager&action=submit#openresolv_.E3.82.92.E4.BD.BF.E7.94.A8 resolvconfを使用] これは {{ic|1=main.rc-manager=resolvconf}} と同じです。
 
* {{ic|/etc/resolv.conf}} が通常のファイルの場合、 NetworkManager はそのファイルに直接書き込みます。これは {{ic|1=main.rc-manager=file}} と同じです。
 
   
  +
===== カスタムグローバル DNS サーバの設定 =====
詳細は、 {{man|5|NetworkManager.conf}} のマニュアルページを参照してください。
 
   
  +
全ての接続に対して DNS サーバを設定するには、{{man|5|NetworkManager.conf}} 内で {{ic|[global-dns-domain-*]}} というセクション内で {{ic|1=servers=''serveripaddress1'',''serveripaddress2'',''serveripaddress3''}} という構文を使ってDNS サーバを指定してください。例えば:
{{Tip|openresolv を使用すると、 NetworkManager を他の ''resolvconf'' の場合サポートソフトウェアと共存させることができます。たとえば、 openresolv が [[openresolv#Subscribers|subscriber]] を持つローカル DNS キャッシングおよびスプリット DNS リゾルバを実行できます。 openresolv で NetworkManager を使用している場合、条件付き転送は[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/153 まだ完全にはサポートされていません]}}
 
   
  +
{{hc|/etc/NetworkManager/conf.d/dns-servers.conf|2=
''NetworkManager'' は、いわゆる dispatcher スクリプト経由のフックも提供しています。これは、ネットワークの変更後に {{ic|/etc/resolv.conf}} を変更するために使用できます。詳細は、 [https://wiki.archlinux.jp/index.php/NetworkManager#.E3.83.8D.E3.83.83.E3.83.88.E3.83.AF.E3.83.BC.E3.82.AF.E3.82.B5.E3.83.BC.E3.83.93.E3.82.B9.E3.81.A8_NetworkManager_dispatcher NetworkManager dispatcher] および {{man|8|NetworkManager}} を参照してください。
 
  +
[global-dns-domain-*]
  +
servers=::1,127.0.0.1
  +
}}
   
 
{{Note|
 
{{Note|
  +
* [[#DNS キャッシングと条件付きフォワーディング|NetworkManager の dnsmasq か systemd-resolved プラグイン]]、または [[#openresolv サブスクライバのある DNS リゾルバ|openresolv サブスクライバ]]を使用する場合、{{ic|1=servers=}} オプションにループバックアドレスを指定しないでください。DNS 解決が機能しなくなる可能性があります。
* NetworkManager が [[#dnsmasq|dnsmasq]] または [[#systemd-resolved|systemd-resolved]] のいずれかを使用するように設定されている場合、適切なループバックアドレスが {{ic|/etc/resolv.conf}} に書き込まれます。
 
  +
* 指定されたサーバは [[systemd-resolved]] に送られず、接続の DNS サーバが代わりに使用されます。
* NetworkManager が {{ic|resolv.conf}} に書き込む、または書き込む {{ic|/etc/resolv.conf}} ファイルは、 {{ic|/run/NetworkManager/resolv.conf}} にあります。
 
  +
}}
* 取得したネームサーバと検索ドメインを含む {{ic|resolv.conf}} ファイルは {{ic|/run/NetworkManager/no-stub-resolv.conf}} にあります。
 
  +
  +
===== 接続でのカスタム DNS サーバの設定 =====
  +
  +
====== 接続でのカスタム DNS サーバの設定 (GUI) ======
  +
  +
セットアップ方法は、使用するフロントエンドの種類に依ります。手順としては通常、アプレットを右クリックし、プロファイルを編集 (または作成) し、DHCP タイプに ''自動 (アドレスのみ)'' (''Automatic (specify addresses)'') を選択するというものです。DNS アドレスを入力する必要があり、通常、{{ic|127.0.0.1, ''DNS-server-one'', ...}} という形です。
  +
  +
====== 接続でのカスタム DNS サーバの設定 (nmcli / 設定ファイル) ======
  +
  +
[[#接続を編集する|接続の設定]]で {{ic|dns}} フィールド (及び、関連する {{ic|dns-search}} と {{ic|dns-options}}) を使うことで、接続毎に DNS サーバをセットアップすることができます。
  +
  +
{{ic|method}} が {{ic|auto}} に設定されている場合 (DHCP を使用する場合)、{{ic|ignore-auto-dns}} を {{ic|yes}} に設定する必要があります。
  +
  +
==== /etc/resolv.conf ====
  +
  +
NetworkManager の {{ic|/etc/resolv.conf}} 管理モードは、{{ic|main.rc-manager}} で設定されます。{{Pkg|networkmanager}} パッケージはこれを、上流のデフォルトである {{ic|auto}} ではなく、{{ic|symlink}} に設定します。設定と値は {{man|5|NetworkManager.conf}} man ページでドキュメント化されています。
  +
  +
{{Tip|openresolv を使用すると、NetworkManager は、''resolvconf'' によってサポートされている他のソフトウェアと共存できます。例えば、openresolv が [[openresolv#Subscribers|subscriber]] を持つローカル DNS キャッシングおよび分割 DNS リゾルバを実行できます。openresolv で NetworkManager を使用する場合、条件付きフォワーディングは[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/153 まだ完全にサポートされていない]ことに注意してください。}}
  +
  +
また、''NetworkManager'' は、ネットワークの変更後に {{ic|/etc/resolv.conf}} を変更するために使用できる、いわゆるディスパッチャスクリプトを介したフックも提供します。詳細は [[#ネットワークサービスで NetworkManager dispatcher を使用する]] と {{man|8|NetworkManager}} を参照してください。
  +
  +
{{Note|
  +
* NetworkManager が [[#dnsmasq|dnsmasq]] または [[systemd-resolved]] のいずれかを使用するように設定されている場合、適切なループバックアドレスが {{ic|/etc/resolv.conf}} に書き込まれます。
  +
* NetworkManager が書き込む {{ic|resolv.conf}}、または {{ic|/etc/resolv.conf}} に書き込む内容は、{{ic|/run/NetworkManager/resolv.conf}} で見られます。
  +
* 取得したネームサーバーと検索ドメインを含む {{ic|resolv.conf}} ファイルは、{{ic|/run/NetworkManager/no-stub-resolv.conf}} にあります。
 
}}
 
}}
   
 
===== 管理対象外の /etc/resolv.conf =====
 
===== 管理対象外の /etc/resolv.conf =====
   
NetworkManager が {{ic|/etc/resolv.conf}} に干渉しないようにするには、{{ic|/etc/NetworkManager/conf.d/}} の設定ファイルで {{ic|1=main.dns=none}} を設定します。
+
NetworkManager が {{ic|/etc/resolv.conf}} に干渉しないようにするには、{{ic|/etc/NetworkManager/conf.d/}} の設定ファイルで {{ic|1=main.dns=none}} を設定してください:
   
 
{{hc|/etc/NetworkManager/conf.d/dns.conf|2=
 
{{hc|/etc/NetworkManager/conf.d/dns.conf|2=
293行目: 491行目:
 
{{Tip|NetworkManager が DNS 設定を [[systemd-resolved]] に送信しないように、{{ic|1=main.systemd-resolved=false}} を設定することもできます。}}
 
{{Tip|NetworkManager が DNS 設定を [[systemd-resolved]] に送信しないように、{{ic|1=main.systemd-resolved=false}} を設定することもできます。}}
   
{{Note|[[#DNS キャッシングと条件付きフォワーディング]] を参照して、NetworkManager を {{ic|1=main.dns=none}} ではなく、 [https://wiki.archlinux.jp/index.php/Dnsmasq dnsmasq] や [[systemd-resolved]] などの他の DNS バックエンドを使用して設定てください。}}
+
{{Note|{{ic|1=main.dns=none}} を使うのではなく、[[dnsmasq]] や [[systemd-resolved]] などの他の DNS バックエンドを使用するように NetworkManager を設定する方法については、[[#DNS キャッシングと条件付きフォワーディング]] を見てください。}}
   
その後、 {{ic|/etc/resolv.conf}} 壊れたシンボリックリンクになるかもしれませんので、削除する必要があり次に、新しい {{ic|/etc/resolv.conf}} ファイルを作成します
+
その後、{{ic|/etc/resolv.conf}} 壊れたシンボリックリンクにな、削除する必要が生じるかもしれせんその場合、新しい {{ic|/etc/resolv.conf}} ファイルを作成してください
   
===== openresolv を使 =====
+
===== openresolv を使 =====
   
  +
{{Note|NetworkManager は、{{Pkg|systemd-resolvconf}} によって提供されている systemd-resolved の ''resolvconf'' インターフェイスの使用をサポートしていません ({{man|1|resolvectl|COMPATIBILITY WITH RESOLVCONF(8)}})。
{{Tip|NetworkManager は、{{ic|/etc/resolv.conf}} が不変であるか、システムの {{ic|resolv.conf}} ファイルの一つへのシンボリックリンクでない限り、自動的に ''resolvconf'' を使います。}}
 
  +
* [[systemd-resolved]] を使用する際は {{ic|1=main.rc-manager=resolvconf}} を設定しないでください。代わりに、[[systemd-resolved#DNS|/etc/resolv.conf シンボリックリンクを適切に作成する]]か、[[#systemd-resolved|systemd-resolved を使用するように NetworkManager を明示的に設定]]してください。
 
  +
* systemd-resolved を使用しない場合は、{{Pkg|systemd-resolvconf}} パッケージがインストールされていないことを確認してください。{{ic|systemd-resolved.service}} が起動されていないと、このパッケージは、resolvconf を使用する全てのネットワーキングソフトウェア (NetworkManager だけではありません) の機能を破壊します。
{{Note|NetworkManager は、 {{Pkg|systemd-resolvconf}} によって提供される system-resolved の ''resolvconf'' インターフェイス [https://man.archlinux.org/man/resolvectl.1#COMPATIBILITY_WITH_RESOLVCONF(8) resolvectl COMPATIBILITY WITH RESOLVCONF(8)] の使用をサポートしていません。
 
* [[systemd-resolved]] を使用する場合は、 {{ic|1=main.rc-manager=resolvconf}} を設定せず、 [https://wiki.archlinux.jp/index.php/Systemd-resolved#DNS /etc/resolv.conf へのシンボリックリンクを正しく作成します。] または [https://wiki.archlinux.org/index.php/NetworkManager#systemd-resolved NetworkManager を構成して、明示的に systemed-resolved を使用する] 設定してください。
 
* systemd-resolvconf を使用しない場合は、 {{Pkg|systemd-resolvconf}} パッケージがインストールされていないことを確認してください。 {{ic|systemd-resolved.service}} を起動しないと、 resolvconf を使用するすべてのネットワークソフトウェア (NetworkManager だけでなく) が動作しなくなります。
 
 
}}
 
}}
   
[[openresolv]] を使用するように NetworkManager を明示的に設定するには、 {{ic|1=main.rc-manager=resolvconf}} を {{ic|/etc/NetworkManager/conf.d/}} の設定ファイルで設定します。
+
[[openresolv]] を使用するように NetworkManager を設定するには、{{ic|/etc/NetworkManager/conf.d/}} の設定ファイルで {{ic|1=main.rc-manager=resolvconf}} を設定してください:
   
 
{{hc|/etc/NetworkManager/conf.d/rc-manager.conf|2=
 
{{hc|/etc/NetworkManager/conf.d/rc-manager.conf|2=
313行目: 509行目:
 
}}
 
}}
   
  +
=== ファイアウォール ===
== NetworkManager dispatcher を使用したネットワークサービス ==
 
  +
  +
現在の接続に基づいて [[Firewalld#NetworkManager を使ったゾーン管理|firewalld ゾーンを割り当てる]]ことができます。たとえば、職場では制限の厳しいファイアウォールを使用し、自宅では制限の少ないファイアウォールを使用します。
  +
  +
これは、[[#ネットワークサービスで NetworkManager dispatcher を使用する|NetworkManager dispatcher]] を使用して行うこともできます。
  +
  +
== ネットワークサービスで NetworkManager dispatcher を使用する ==
   
NetworkManager がインターフェスを起動するまで実行したくないネットワークサービスがかなりあります。NetworkManager には、ネットワークに接続したときにサービスを開始し、切断したときにサービスを停止する機能があります ([[NFS]]、[[SMB]]、および [[Network Time Protocol daemon |NTPd]] など)
+
NetworkManager がインターフェスを立ち上げるまで実行したくないようなネットワークサービスはたくさんあります。NetworkManager には、(例えば [[NFS]] や [[SMB]]、[[NTPd]] を使用する時などに) ネットワークに接続したサービスを開始し、切断したサービスを停止する機能があります
   
この機能を有効するには、{{ic|NetworkManager-dispatcher.service}} を [[有効化]] および [[起動]] する必要があります。
+
この機能を有効するには、{{ic|NetworkManager-dispatcher.service}} を[[有効化]]し、かつ[[起動]]する必要があります。
   
サービスがアクティブになるとスクリプトを {{ic|/etc/NetworkManager/dispatcher.d}} ディレクトリに追加できます。
+
このサービスを有効化したら、{{ic|/etc/NetworkManager/dispatcher.d}} 内にスリプ追加することができます。
   
スクリプトは '''root''' によって所有されている必要がありまそうでない場合dispatcher スクリプトを実行しません。セキュリティを強化するために、グループ [[ファイルのパーミッションと属性#所有権を変更|所有権]] も root に設定します。
+
スクリプトは '''root''' によって所有されていなければなりませんディスパッチャはroot によって所有されていないスクリプトを実行しません。セキュリティを高めるために、スクリプトのグループ[[所有権]]も root に設定してください:
   
 
# chown root:root /etc/NetworkManager/dispatcher.d/''10-script.sh''
 
# chown root:root /etc/NetworkManager/dispatcher.d/''10-script.sh''
   
ファイル[[ヘルプ:読み方#実行可能属性の付与|実行可能属性]] であこと確認してください。
+
スクリプトファイル[[実行可能属性|実行可能]]にす忘れないでください。
   
スクリプトは、接続時にはアルファベット順で実行され、切断時にはアルファベットの逆順で実行されます。それらがどのような順序で表示される確認するために、スクリプト名の前に数字を使用するのが一般的です (例:{{ic|10-portmap}} または {{ic|30-netfs}}) "ポートマッパー" は、NFS マウント行される前に稼働しています)
+
スクリプトは、ネットワークへの接続時にはアルファベット順で実行され、切断時にはアルファベット順で実行されます。実行される順番保証するために、スクリプトの前に数字を置くのが一般的です (例: {{ic|10-portmap}}{{ic|30-netfs}}。こうすることで、NFS マウントる前に、''portmapper'' が立ち上がります)
   
スクリプトはの引数を受け取ります:
+
スクリプトは以下の引数を受け取ります:
   
 
* '''インターフェイス名:''' 例えば {{ic|eth0}}
 
* '''インターフェイス名:''' 例えば {{ic|eth0}}
* '''Action:''' ''up'', ''down'', ''vpn-up'', ''vpn-down'', ... (参照 {{man|8|NetworkManager}} 完全なリストにつては)
+
* '''アクション:''' ''up''''down''''vpn-up''''vpn-down'' など (完全なリストは {{man|8|NetworkManager-dispatcher}} を見てください)
   
{{Warning|外部ネットワークまたはパブリックネットワークに接続する場合は、開始しようとしているサービスそれらのサービス接続できると予想されるサーバーに注意してください。パブリックネットワークに接続していときに間違ったサービスを開始するセキュリティホールが生じる可能性があります}}
+
{{Warning|外部ネットワークや公開ネットワークに接続する場合は、どのサービスを起動するのかサーバにサービス接続できるのかに注意してください。公開ネットワークに接続に間違ったサービスを起動してしまうとセキュリティホールを作ってしまう可能性があります}}
   
=== dispatcher タイムアウトの回避 ===
+
=== ディスパッチャのタイムアウトを防ぐ ===
   
上記が動作している場合、このセクションは関係ありません。しかし、dispatcher スクリプトの実行に関連する一般的な問題があり、実行に時間がかかります。初は、3秒の内部タイムアウトのみが使用されていました。呼び出されたスクリプトが時間内に完了しない場合、スクリプトは強制終了されました。その後、タイムアウトは約20秒に延長されました (詳しくは [https://bugzilla.redhat.com/show_bug.cgi?id=982734 Bugtracker] をご覧ください) タイムアウトがまだ問題を引き起こしている場合、{{ic|NetworkManager-dispatcher.service}} が終了後もアクティブであように [[ドロップインファイル]] を使することで回避できるかもしれせん。
+
上記がうまくいっているのであれば、このセクションは関係ません。しかし、ディスパッチャのスクリプトの実行に時間が掛かってしまうという一般的な問題があります。初は、3 だけの内部タイムアウトが使用されていました。呼れたスクリプトが時間内に完了しないそのスクリプトは kill されていました。後、タイムアウトは約 20 秒に延長されました (詳は [https://bugzilla.redhat.com/show_bug.cgi?id=982734 Bugtracker] を参照)タイムアウトのせいで依然として問題が発生する場合、{{ic|NetworkManager-dispatcher.service}} に対する[[ドロップインファイル]]を使って、終了後もアクティブ状態を維持するように設定することで問題を回避できます:
   
 
{{hc|/etc/systemd/system/NetworkManager-dispatcher.service.d/remain_after_exit.conf|2=
 
{{hc|/etc/systemd/system/NetworkManager-dispatcher.service.d/remain_after_exit.conf|2=
345行目: 547行目:
 
}}
 
}}
   
変更した {{ic|NetworkManager-dispatcher}} サービスを開始し有効ます
+
その後、変更した {{ic|NetworkManager-dispatcher}} サービスを開始し、かつ有効てください
   
{{Warning|{{ic|RemainAfterExit}} 行を追加すると、dispatcher が閉じなくなります。残念ながら、スクリプトを再実行する前に、dispatcher を '''終了する必要がありま''' これにより、dispatcher はタイムアウトしませんが、閉じません。つまり、スクリプトは起動ごとに 1 しか実行されませんしたがって、タイムアウトが問題を引き起こしていることが明らかでない限り、この行を追加しないでください。}}
+
{{Warning|{{ic|RemainAfterExit}} 行を追加すると、ディスパッチャが閉じられなくなります。残念ながら、ディスパッチャは、スクリプトを再実行する前に'''閉じなければなりません'''。先の設定により、ディスパッチャはタイムアウトしませんが、閉じられもしません。これは、スクリプトはブート毎に 1 しか実行されないことを意味しなので、タイムアウトが実際に問題を起こしていない限り、この行を追加しないでください。}}
   
=== Dispatcher 例 ===
+
=== ディスパッチャの例 ===
   
==== リモートフォルダ sshfs でマウント ====
+
==== sshfs でリモートディレクトリをマウントする ====
   
スクリプトは制限的な環境で実行されるので、SSH エージェントに接続するには {{ic|SSH_AUTH_SOCK}} を export する必要があります。複数の方法が存在しますしく [https://bbs.archlinux.org/viewtopic.php?pid=1042030#p1042030 このメッセージ] を見てさい。以下の例は [[GNOME Keyring]] と一緒に動作し、ロックが解除されていない場合パスワードを尋ねます。NetworkManager がログイン時に自動的に接続する場合は、''gnome-keyring'' は起動せ export は失敗ます。{{ic|UUID}} は {{ic|nmcli con status}} {{ic|nmcli con list}} コマンドで確認できます。
+
このスクリプトは非常に制限された環境で実行されるため、SSH エージェントに接続するためには {{ic|SSH_AUTH_SOCK}} 変数エクスポートする必要があります。これを行う方法はいくつかあります (は[https://bbs.archlinux.org/viewtopic.php?pid=1042030#p1042030 このメッセージ]を見てください)。以下の例は [[GNOME Keyring]] を使って動作し、キーリングがまだアンロックされていない場合パスワードを要求します。NetworkManager がログイン時に自動的にネットワークに接続するような状況では、''gnome-keyring'' がまだ開始されておら、変数のエクスポートが失敗する可能性が高いです (そのために sleep コマンドがあります)接続とマッチする {{ic|UUID}} は{{ic|nmcli connection status}} {{ic|nmcli connection list}} を実行すれば確認できます。
   
 
{{bc|<nowiki>
 
{{bc|<nowiki>
377行目: 579行目:
 
</nowiki>}}
 
</nowiki>}}
   
==== Mounting of SMB shares ====
+
==== SMB 共有をマウントする ====
   
  +
[[SMB]] 共有は特定のネットワークや場所 (例えば自宅) でしか利用できないことがあります。ディスパッチャを使えば、現在の場所で利用可能な SMB 共有のみをマウントすることができます。
Some [[SMB]] shares are only available on certain networks or locations (e.g. at home). You can use the dispatcher to only mount SMB shares that are present at your current location.
 
   
  +
以下のスクリプトは、特定のネットワークに接続していることを確認し、それに応じて共有をマウントします:
The following script will check if we connected to a specific network and mount shares accordingly:
 
   
 
{{hc|/etc/NetworkManager/dispatcher.d/30-mount-smb.sh|<nowiki>
 
{{hc|/etc/NetworkManager/dispatcher.d/30-mount-smb.sh|<nowiki>
 
#!/bin/sh
 
#!/bin/sh
   
# Find the connection UUID with "nmcli connection show" in terminal.
+
# 接続 UUID はターミナルで "nmcli connection show" を実行して確認してください。
# All NetworkManager connection types are supported: wireless, VPN, wired...
+
# 全種類の NetworkManager 接続がサポートされています: 無線、VPN、有線など。
 
if [ "$2" = "up" ]; then
 
if [ "$2" = "up" ]; then
 
if [ "$CONNECTION_UUID" = "uuid" ]; then
 
if [ "$CONNECTION_UUID" = "uuid" ]; then
396行目: 598行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
以下のスクリプトは、ソフトウェアが特定のネットワークからの切断を開始する前に、全ての SMB 共有をアンマウントします:
The following script will unmount all SMB shares before a software initiated disconnect from a specific network:
 
   
 
{{hc|/etc/NetworkManager/dispatcher.d/pre-down.d/30-umount-smb.sh|<nowiki>
 
{{hc|/etc/NetworkManager/dispatcher.d/pre-down.d/30-umount-smb.sh|<nowiki>
406行目: 608行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
{{Note|このスクリプトは上記の通り {{ic|pre-down.d}} サブディレクトリに配置してください。さもないと、接続状態が変わる度に毎回、全ての共有がアンマウントされてしまいます。}}
{{Note|Make sure this script is located in the {{ic|pre-down.d}} sub-directory as shown above, otherwise it will unmount all shares on any connection state change.}}
 
   
  +
以下のスクリプトは、特定のネットワークから予期せずに切断されてしまった時に、全ての SMB 共有のアンマウントを試みます:
The following script will attempt to unmount all SMB shares following an unexpected disconnect from a specific network:
 
   
 
{{hc|/etc/NetworkManager/dispatcher.d/40-umount-smb.sh|<nowiki>
 
{{hc|/etc/NetworkManager/dispatcher.d/40-umount-smb.sh|<nowiki>
421行目: 623行目:
   
 
{{Note|
 
{{Note|
* Since NetworkManager 0.9.8, the ''pre-down'' and ''down'' events are not executed on shutdown or restart, see [https://bugzilla.gnome.org/show_bug.cgi?id&#61;701242 this bug report] for more info.
+
* NetworkManager 0.9.8 から、''pre-down'' ''down'' のイベントはシャットダウン時や再起動時に実行されなくなりました。詳細は[https://bugzilla.gnome.org/show_bug.cgi?id&#61;701242 このバグレポート]を見てください。
  +
* 上記 2 つの ''umount'' スクリプトでは、マウントに実際にアクセスしているアプリケーションが 'ハング' してしまう傾向が依然としてあります。
* The previous ''umount'' scripts are still prone to leaving applications actually accessing the mount to 'hang'.
 
 
}}
 
}}
   
An alternative is to use the script as seen in [[NFS#Using a NetworkManager dispatcher]]:
+
代替案は、[[NFS#NetworkManager dispatcher を使う]] にあるスクリプトを使うことです:
   
 
{{hc|/etc/NetworkManager/dispatcher.d/30-smb.sh|<nowiki>
 
{{hc|/etc/NetworkManager/dispatcher.d/30-smb.sh|<nowiki>
 
#!/bin/sh
 
#!/bin/sh
   
  +
# 接続 UUID はターミナルで "nmcli connection show" を実行して確認してください。
# Find the connection UUID with "nmcli con show" in terminal.
 
# All NetworkManager connection types are supported: wireless, VPN, wired...
+
# 全種類の NetworkManager 接続がサポートされています: 無線、VPN、有線など。
 
WANTED_CON_UUID="CHANGE-ME-NOW-9c7eff15-010a-4b1c-a786-9b4efa218ba9"
 
WANTED_CON_UUID="CHANGE-ME-NOW-9c7eff15-010a-4b1c-a786-9b4efa218ba9"
   
 
if [ "$CONNECTION_UUID" = "$WANTED_CON_UUID" ]; then
 
if [ "$CONNECTION_UUID" = "$WANTED_CON_UUID" ]; then
 
 
  +
# スクリプトパラメータ $1: ネットワークインターフェイス名 (未使用)
# Script parameter $1: network interface name, not used
 
  +
# スクリプトパラメータ $2: ディスパッチされたイベント
# Script parameter $2: dispatched event
 
 
 
 
case "$2" in
 
case "$2" in
450行目: 652行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
{{Note|このスクリプトは {{ic|noauto}} オプションのマウントは無視します。これらのマウントをディスパッチャが管理できるようにするには、このオプションを取り除くか、{{ic|auto}} を使ってください。}}
{{Note|This script ignores mounts with the {{ic|noauto}} option, remove this mount option or use {{ic|auto}} to allow the dispatcher to manage these mounts.}}
 
   
Create a symlink inside {{ic|/etc/NetworkManager/dispatcher.d/pre-down/}} to catch the {{ic|pre-down}} events:
+
{{ic|pre-down}} イベントをキャッチできるようにするために {{ic|/etc/NetworkManager/dispatcher.d/pre-down/}} 内にシンボリックリンクを作成してください:
   
 
# ln -s ../30-smb.sh /etc/NetworkManager/dispatcher.d/pre-down.d/30-smb.sh
 
# ln -s ../30-smb.sh /etc/NetworkManager/dispatcher.d/pre-down.d/30-smb.sh
   
==== Mounting of NFS shares ====
+
==== NFS 共有をマウントする ====
   
See [[NFS#Using a NetworkManager dispatcher]].
+
[[NFS#NetworkManager dispatcher を使う]] を見てください。
   
  +
==== ディスパッチャを使って、LAN ケーブルが挿入されているかに応じて Wi-Fi を自動的にオンオフする ====
==== Use dispatcher to automatically toggle wireless depending on LAN cable being plugged in ====
 
   
  +
アイディアとしては、LAN ケーブルが抜かれた時にのみ Wi-Fi をオンにし (例えば、ラップトップのドックから取り外された時など)、LAN ケーブルが挿入されたら Wi-Fi を自動的に無効化します。
The idea is to only turn Wi-Fi on when the LAN cable is unplugged (for example when detaching from a laptop dock), and for Wi-Fi to be automatically disabled, once a LAN cable is plugged in again.
 
   
Create the following dispatcher script[https://superuser.com/questions/233448/disable-wlan-if-wired-cable-network-is-available], replacing {{ic|1=''LAN_interface''}} with yours.
+
以下のディスパッチャスクリプト[https://superuser.com/questions/233448/disable-wlan-if-wired-cable-network-is-available]を作成してください。{{ic|1=''LAN_interface''}} の部分はあなたの LAN インターフェイスに置き換えてください。
   
  +
コンピュータがオンの時に LAN インターフェイスが接続され、コンピュータがオフの時に切断された場合のフェイルセーフがあることに注意してください。このフェイルセーフがないと、コンピュータがオンに戻っても Wi-Fi は依然としてオフであり、LAN インターフェイスが切断されていれば、ネットワーク接続が利用できなくなってしまいます。
Note that there is a fail-safe for the case when the LAN interface was connected when the computer was last on, and then disconnected while the computer was off. That would mean the radio would still be off when the computer is turned back on, and with a disconnected LAN interface, you would have no network.
 
   
 
{{hc|/etc/NetworkManager/dispatcher.d/wlan_auto_toggle.sh|2=
 
{{hc|/etc/NetworkManager/dispatcher.d/wlan_auto_toggle.sh|2=
485行目: 687行目:
 
}}
 
}}
   
{{Note|You can get a list of interfaces using [[#nmcli examples|nmcli]]. The Ethernet (LAN) interfaces start with {{ic|en}}, e.g. {{ic|1=enp0s5}}}}
+
{{Note|[[#nmcli |nmcli]] を使えばインターフェイスの一覧を得られます。イーサネット (LAN) インターフェイスの名前は {{ic|en}} で始まります (例: {{ic|1=enp0s5}})。}}
   
  +
==== ディスパッチャを使って、ネットワーク接続が確立された後に VPN に接続する ====
==== Use dispatcher to connect to a VPN after a network connection is established ====
 
   
  +
この例では、特定の Wi-Fi ネットワークに接続した後に、以前定義された VPN 接続に自動的に接続したいと思います。最初にすべきことは、そのネットワークに接続した後にすることを定義するディスパッチャスクリプトを作成することです。
In this example we want to connect automatically to a previously defined VPN connection after connecting to a specific Wi-Fi network. First thing to do is to create the dispatcher script that defines what to do after we are connected to the network.
 
   
  +
{{Note|このスクリプトでは {{ic|iwgetid}} を使うために {{Pkg|wireless_tools}} を必要とします。}}
{{Note|This script will require {{Pkg|wireless_tools}} in order to use {{ic|iwgetid}}.}}
 
   
 
{{hc|/etc/NetworkManager/dispatcher.d/vpn-up|<nowiki>
 
{{hc|/etc/NetworkManager/dispatcher.d/vpn-up|<nowiki>
 
#!/bin/sh
 
#!/bin/sh
  +
VPN_NAME="NetworkManager に定義されている VPN 接続の名前"
VPN_NAME="name of VPN connection defined in NetworkManager"
 
ESSID="Wi-Fi network ESSID (not connection name)"
+
ESSID="Wi-Fi ネットワークの ESSID (接続名ではない)"
   
 
interface=$1 status=$2
 
interface=$1 status=$2
515行目: 717行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
全ての Wi-Fi ネットワークで VPN への接続を試みたい場合は、次の ESSID 定義を使用できます: {{ic|1=ESSID=$(iwgetid -r)}}。スクリプトのパーミッションを[[#ネットワークサービスで NetworkManager dispatcher を使用する|適宜]]設定することを忘れないでください。
If you would like to attempt to automatically connect to VPN for all Wi-Fi networks, you can use the following definition of the ESSID: {{ic|1=ESSID=$(iwgetid -r)}}. Remember to set the script's permissions [[#Network services with NetworkManager dispatcher|accordingly]].
 
   
  +
[https://developer.gnome.org/NetworkManager/0.9/secrets-flags.html VPN の機密情報が保管される方法]により、上記のスクリプトで VPN への接続しようとしても、{{ic|NetworkManager-dispatcher.service}} が 'no valid VPN secrets' というエラーで失敗する場合があります。幸運なことに、スクリプトから VPN のパスワードにアクセスする方法は他にもあります。
Trying to connect with the above script may still fail with {{ic|NetworkManager-dispatcher.service}} complaining about 'no valid VPN secrets', because of [https://developer.gnome.org/NetworkManager/0.9/secrets-flags.html the way VPN secrets are stored]. Fortunately, there are different options to give the above script access to your VPN password.
 
   
1: One of them requires editing the VPN connection configuration file to make NetworkManager store the secrets by itself rather than inside a keyring [https://bugzilla.redhat.com/show_bug.cgi?id=710552 that will be inaccessible for root]: open up {{ic|/etc/NetworkManager/system-connections/''name of your VPN connection''}} and change the {{ic|password-flags}} and {{ic|secret-flags}} from {{ic|1}} to {{ic|0}}.
+
1: それらの方法の1つでは、VPN 接続の設定ファイルを編集して、[https://bugzilla.redhat.com/show_bug.cgi?id=710552 root からはアクセスできない]キーリングではなく自身で機密情報を保存させるように NetworkManager を設定する必要があります: {{ic|/etc/NetworkManager/system-connections/''VPN接続の名前''}} を開き、{{ic|password-flags}} {{ic|secret-flags}} {{ic|1}} から {{ic|0}} に変更してください。
   
  +
それだけではうまく行かない場合は、以下の内容で {{ic|passwd-file}} を安全な場所にディスパッチャスクリプトと同じパーミッションと所有権で作成する必要があるかもしれません:
If that alone does not work, you may have to create a {{ic|passwd-file}} in a safe location with the same permissions and ownership as the dispatcher script, containing the following:
 
   
 
{{hc|/path/to/passwd-file|
 
{{hc|/path/to/passwd-file|
vpn.secrets.password:YOUR_PASSWORD
+
vpn.secrets.password:パスワード
 
}}
 
}}
   
  +
ファイルからパスワードを得られるようにするために、スクリプトは適宜変更する必要があります:
The script must be changed accordingly, so that it gets the password from the file:
 
   
 
{{hc|/etc/NetworkManager/dispatcher.d/vpn-up|<nowiki>
 
{{hc|/etc/NetworkManager/dispatcher.d/vpn-up|<nowiki>
 
#!/bin/sh
 
#!/bin/sh
  +
VPN_NAME="NetworkManager に定義されている VPN 接続の名前"
VPN_NAME="name of VPN connection defined in NetworkManager"
 
ESSID="Wi-Fi network ESSID (not connection name)"
+
ESSID="Wi-Fi ネットワークの ESSID (接続名ではない)"
   
 
interface=$1 status=$2
 
interface=$1 status=$2
551行目: 753行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
2: あるいは、{{ic|password-flags}} を変更して、設定ファイル内に {{ic|vpn-secrets}} セクションを追加してパスワードを直接書き込むという方法もあります:
2: Alternatively, change the {{ic|password-flags}} and put the password directly in the configuration file adding the section {{ic|vpn-secrets}}:
 
   
 
[vpn]
 
[vpn]
558行目: 760行目:
 
 
 
[vpn-secrets]
 
[vpn-secrets]
password=''your_password''
+
password=''パスワード''
   
  +
{{Note|NetworkManager の接続エディタを再び開き、VPN のパスワード/機密情報を保存し直す必要があるかもしれません。}}
{{Note|It may now be necessary to re-open the NetworkManager connection editor and save the VPN passwords/secrets again.}}
 
   
  +
==== ディスパッチャを使って、VPN プロバイダの接続時に IPv6 を無効化する ====
==== Use dispatcher to disable IPv6 on VPN provider connections ====
 
   
  +
多くの[[:カテゴリ:VPN プロバイダー|商用 VPN プロバイダー]]は IPv4 のみをサポートしています。つまり、IPv6 のトラフィックは全て VPN をバイパスし、事実上、使い物にならなくなります。ディスパッチャを使って、VPN に接続されている時は全ての IPv6 トラフィックを無効化することで、この問題を回避できます。
Many [[:Category:VPN providers|commercial VPN providers]] support only IPv4. That means all IPv6 traffic bypasses the VPN and renders it virtually useless. To avoid this, dispatcher can be used to disable all IPv6 traffic for the time a VPN connection is up.
 
   
 
{{hc|/etc/NetworkManager/dispatcher.d/10-vpn-ipv6|<nowiki>
 
{{hc|/etc/NetworkManager/dispatcher.d/10-vpn-ipv6|<nowiki>
581行目: 783行目:
 
==== OpenNTPD ====
 
==== OpenNTPD ====
   
See [[OpenNTPD#Using NetworkManager dispatcher]].
+
[[OpenNTPD#NetworkManager dispatcher を使う]] を参照してください。
   
  +
==== systemd-timesyncd で DHCP 経由で受信した NTP サーバを動的に設定する ====
==== Dynamically set NTP servers received via DHCP with systemd-timesyncd ====
 
   
  +
異なるネットワーク間 (例: 会社の LAN、自宅の Wi-Fi、その他の様々な Wi-Fi) でローミングする場合、timesyncd によって使用されている NTP サーバを DHCP によって提供されているものに設定したい場合があります。ただし、NetworkManager 自体は systemd-timesyncd と通信して NTP サーバを設定することはできません。
When roaming between different networks (e.g. a company's LAN, WiFi at home, various other WiFi now and then) you might want to set the NTP server(s) used by timesyncd to those provided by DHCP. However, NetworkManager itself is not capable to communicate with systemd-timesyncd to set the NTP server(s).
 
   
  +
ディスパッチャを使うことで、この問題を回避できます。
The dispatcher can work around it.
 
   
[[Create]] the overlay directory for your systemd-timesyncd configuration {{ic|/etc/systemd/timesyncd.conf.d}} if it does not already exist. Inside {{ic|/etc/NetworkManager/dispatcher.d}}, put the following:
+
systemd-timesyncd の設定ようのオーバーレイディレクトリ {{ic|/etc/systemd/timesyncd.conf.d}} を[[作成]]してください (まだ存在していない場合)。{{ic|/etc/NetworkManager/dispatcher.d}} 内に以下を追加してください:
   
 
{{hc|/etc/NetworkManager/dispatcher.d/10-update-timesyncd|<nowiki>
 
{{hc|/etc/NetworkManager/dispatcher.d/10-update-timesyncd|<nowiki>
615行目: 817行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
NetworkManager が新しいネットワーク接続を設定する ({{ic|1=ACTION=up}}) か、既存の接続の更新を取得する ({{ic|1=ACTION=dhcp4-change}} または {{ic|1=ACTION=dhcp6-change}}) 度に、接続データに NTP サーバ ({{ic|DHCP4_NTP_SERVERS}}) に関する情報が含まれていると、接続固有のオーバーレイ設定ファイルが {{ic|/etc/systemd/timesyncd.conf.d}} に書き込まれ、このファイルには、提供された NTP サーバ (1台または複数) の情報が記述されます。提供された NTP サーバが含まれます。接続が停止される ({{ic|1=ACTION=down}}) と、接続固有のオーバーレイファイルは削除されます。systemd-timesyncd の設定が変更されるたびに、サービスは再起動され、更新された設定を取得します。NetworkManager で 2つ以上の接続を並行して管理する場合、{{ic|up}}、{{ic|dhcp4-change}}、{{ic|dhcp6-change}}、そして {{ic|down}} アクションが任意の順序で来るかもしれないので、設定内の異なる NTP サーバ名が上書きされないように接続固有の設定ファイルを意図的に使用しています。
Every time NetworkManager sets up a new network connection ({{ic|1=ACTION=up}}) or gets some update for an existing connection ({{ic|1=ACTION=dhcp4-change}} or {{ic|1=ACTION=dhcp6-change}}) and the provided connection data contains information about NTP server(s) ({{ic|DHCP4_NTP_SERVERS}}), a connection specific overlay configuration file is written to {{ic|/etc/systemd/timesyncd.conf.d}}, containing the provided NTP server(s). Whenever a connection is taken down ({{ic|1=ACTION=down}}) the connection specific overlay file is removed. After each change to the configuration of systemd-timesyncd, this service is restarted to pick up the updated configuration. The use of connection specific configuration files is intentional so that when two or more connections are managed by NetworkManager in parallel the different NTP server names in the configuration are not overwritten as {{ic|up}}, {{ic|dhcp4-change}}, {{ic|dhcp6-change}} and {{ic|down}} actions might come in in an arbitrary order.
 
   
 
== テスト ==
 
== テスト ==
   
ログイン時に NetworkManager アプレットロードされるようになっているので、ほとんどの場合さらに設定をする必要はありません既に前のネットワーク設定を無効ネットワークから切断ている場合、NetworkManager が動作するかどうかテストすることができます。まず {{ic|NetworkManager.service}} を[[デーモン|起動]]してください。
+
NetworkManager アプレットはログイン時にロードされるようになっているので、ほとんどのユーザとって追加の設定必要ないずです前のネットワーク設定を無効ネットワークから切断されているならば、NetworkManager が動作するかどうかテストできます。まず始めに、{{ic|NetworkManager.service}} を[[起動]]してください。
   
アプレットは {{ic|.desktop}} ファイルを提供するので、NetworkManager アプレットアプリケーションメニューからロードすることができます。アプレットがない場合、コマンドを探すか、一度ログアウトしてからログインしなおしてアプレットを起動してください。アプレットが起動すれば、DHCP サーバーの自動設定によってネットワーク接続のポーリング開始します
+
一部のアプレットは、NetworkManager アプレットアプリケーションメニューからロードできるようにするために、{{ic|.desktop}} ファイルを提供しています。デスクップファイル提供されていない場合アプレットを使用するためのコマンドを見つけるか、アプレットをロードするために一度ログアウトして再度ログインする必要があります。アプレットが開始されれば、DHCP サーバを使って自動設定によネットワーク接続のポーリング開始されるでょう
   
[[Awesome]] などの xdg 非互換のウィンドウマネージャで GNOME アプレットを起動するには:
+
[[awesome]] などの XDG 非互換のウィンドウマネージャで GNOME アプレットを開始するには:
   
 
nm-applet --sm-disable &
 
nm-applet --sm-disable &
   
固定 IP を使うに NetworkManager を設定する必要がありま。アプレットを右クリックし 'Edit Connections' などを選択してください
+
固定 IP アドレスの場合NetworkManager にそのこと伝えなければなりません手順としては通常、アプレットを右クリックし、'接続を編集する' ('Edit Connections') などのような項目を選択します
   
 
== ヒントとテクニック ==
 
== ヒントとテクニック ==
633行目: 835行目:
 
=== Wi-Fi パスワードの暗号化 ===
 
=== Wi-Fi パスワードの暗号化 ===
   
デフォルトでは NetworkManager は {{ic|/etc/NetworkManager/system-connections/}} に存在する接続ファイルに平文でパスワードを保存します。保存されているパスワードを表示するには、以下のコマンドを実行:
+
デフォルトではNetworkManager はパスワードを平文で {{ic|/etc/NetworkManager/system-connections/}} 内の設定ファイルに保存します。保存されているパスワードを表示するには、以下のコマンドを使ってください:
   
# grep -H '^psk=' /etc/NetworkManager/system-connections/*
+
# grep -r '^psk=' /etc/NetworkManager/system-connections/
   
パスワードにアクセスできるのは root ユーザーだけであり通常ユーザーは GUI の設定からアクセスできます (例: {{ic|nm-applet}})。
+
パスワードは root ユーザからファイルシステムでアクセス可能あり、さらに GUI (例: {{ic|nm-applet}}) を通して設定にアクセスできるユーザからもアクセス可能です
   
平文ではなく暗号化された状態で保存することもできます、ユーザーごとに接続の設定が必要にります。
+
パスワードは、平文ではなく、キーリングの中で暗号化されたで保存するのが望しいで。しかしこれの欠点は、それぞれのユーザ接続をセットアップしけれならないことです。
   
  +
キーリングを読み書きするために、利用可能なシークレットエージェントが存在していなければなりません。いかのどれかを使用できます:
==== Gnome-Keyring を使う ====
 
   
  +
* {{ic|nmcli}} で {{ic|--ask}} オプションを使う。
キーリングデーモンを起動してキーリングを解錠する必要があります。
 
  +
* [[#フロントエンド]] に挙げられているグラフィカルインターフェイス
   
  +
シークレットエージェントが利用できないと、{{ic|no secrets: No agents were available for this request.}} というエラーで認証が失敗します。
さらに、全てのユーザーでパスワードを保存しないように NetworkManager を設定しなければなりません。GNOME の {{ic|nm-applet}} を使う場合、ターミナルから {{ic|nm-connection-editor}} を起動してネットワーク接続を選択し、{{ic|Edit}} をクリックして、{{ic|Wifi-Security}} タブからパスワードの右のアイコンをクリックして {{ic|Store the password only for this user}} にチェックを入れてください。
 
   
==== KDE Wallet を使う ====
+
==== GNOME Keyring を使う ====
   
  +
以下の方法を使うには、GNOME Keyring のキーリングデーモンが開始されていて、キーリングがアンロックされている必要があります。
KDE の {{Pkg|plasma-nm}} を使用して、アプレットをクリックし、右上の ''設定'' アイコンをクリックして、ネットワーク接続をクリックし、''一般設定'' タブで ''すべてのユーザーが許可'' のチェックを外し、このネットワークに接続します。このオプションにチェックを入れると、キーリングデーモンが実行されていても、パスワードはクリアテキストで保存されます。
 
  +
  +
さらに、全ユーザのパスワードを保存しないように NetworkManager を設定する必要があります。GNOME の {{Pkg|network-manager-applet}} を使って、ターミナルから {{ic|nm-connection-editor}} を実行し、ネットワーク接続を選択し、''編集'' (''Edit'') をクリックし、''Wi-Fi セキュリティー'' (''Wi-Fi Security'') タブを選択し、パスワード入力欄の右のアイコンをクリックして、''このユーザーのパスワードのみ保存する'' (''Store the password only for this user'') にチェックを入れてください。
  +
  +
==== KDE Wallet を使う ====
   
  +
KDE の {{Pkg|plasma-nm}} を使う場合、アプレットをクリックし、右上の ''設定'' アイコンをクリックし、ネットワーク接続を選択し、''一般設定'' (''General configuration'') タブを選択し、''すべてのユーザはこのネットワークに接続可能'' (''All users may connect to this network'') のチェックを外してください。このオプションにチェックが入っていると、たとえキーリングデーモンが実行されていたとしても、パスワードが平文で保存されてしまいます。
オプションが以前に選択されていて、チェックを外した場合は、最初に {{ic|reset}} オプションを使用してパスワードをファイルから消去する必要がある場合があります。または、最初に接続を削除してから、再度設定してください。
 
   
  +
以前このオプションにチェックが入っていて、後にチェックを外した場合、ファイルからパスワードを消すために {{ic|reset}} オプションを使用する必要がある場合があります。あるいは、接続を削除し、再度セットアップしてください。
=== wifi でインターネット接続を共有する ===
 
   
  +
=== Wi-Fi でインターネット接続を共有する ===
nm を使って数クリックでインターネット接続 (例: 3G または有線) を共有することができます。サポートされた wifi カードが必要になります (Atheros AR9xx や AR5xx を使っているカードがおそらく最適です。)
 
   
[[ファイアウォール]]インターネット共有を妨害することもあるので注意してください。
+
数クリックでインターネット接続 (例: 3G、有線) を共有することができます。ただし、[[ファイアウォール]]インターネット共有を妨害する場合があることに注意してください。
   
AP モードをサポートする Wi-Fi カードが必要す。詳しくは [[ソフトウェアアクセスポイント#Wi-Fi デバイスが AP モードをサポートしている必要があります]] を参照してください。
+
AP モードをサポートする Wi-Fi カードが必要になります。詳は [[ソフトウェアアクセスポイント#Wi-Fi デバイスが AP モードをサポートしていること]] をてください。
   
{{Pkg|dnsmasq}} パッケージを [[インストール]] して実際に接続を共有できるようにします NetworkManager は{{ic|dnsmasq.service}} とは関係なく、DHCP サーバーとして ''dnsmasq'' の独自のインスタンスを開始することに注意してください。注意事項については [[NetworkManager#dnsmasq]] を参照してください。
+
接続を共有できるようにするために {{Pkg|dnsmasq}} パッケージを[[インストール]]してください。NetworkManager は ({{ic|dnsmasq.service}} とは独立に) 独自の ''dnsmasq'' インスタンスを DHCP サーバとして開始することに注意してください。これに関する注意事項は [[#dnsmasq]] をてください。
   
共有接続を作成します。
+
共有された接続を作成してください:
   
* アプレットをクリックし、"しいワイヤレスネットワークを作成する" を選択します
+
* アプレットをクリックし、''規 Wi-Fi ネットワークを作成'' (''Create new wireless network'') を選んでください
* ウィザードに従ってください (WPA2 以上を選択し、最低も8文字の長いパスワードを使用してください。)
+
* ウィザードに従ってください (WPA2 以上を選くださパスワードは 8 文字以上にしてください。さもないと失敗します)
** Wi-Fiモードとして [[Fedora:Features/RealHotspot|Hotspot]] または Ad-hoc のいずれかを選択します
+
* Wi-Fi モードとして[[Fedora:Features/RealHotspot|ホットスポット]]かアドホックを選択してください
   
接続は保存され、次必要になったときのために保存されたままになります。
+
、次必要になときのために接続は保存されます。
   
{{Note|Android はアドホック ネットワークへの接続をサポートしていません。 Android と接続を共有するには、インフラストラクチャモードを使用します (つまり、Wi-Fi モードを "ホットスポット" に設定します。)}}
+
{{Note|Android はアドホックネットワークへの接続をサポートしていません。Android と接続を共有するには、インフラストラクチャモードを使用してください (つまり、Wi-Fi モードを "ホットスポット" に設定する)。}}
   
=== イーサネット経由でインターネット接続を共有する ===
+
=== イーサネットでインターネット接続を共有する ===
   
シナリオ: お使いのデバイス Wi-Fi 経由でインターネットに接続されておりそのインターネット接続をイーサネット経由で他のデバイスと共有したいと考えています
+
シナリオ: デバイス Wi-Fi 経由でインターネットに接続されていて、イーサネットで他のデバイスとインターネット接続を共有したいと考えている場合
   
 
要件:
 
要件:
   
* 実際に接続を共有できるようにするために{{Pkg|dnsmasq}} と {{Pkg|nm-connection-editor}} パッケージを [[インストール]] してください。NetworkManager は DHCP サーバとして {{ic|dnsmasq.service}} とは独立した ''dnsmasq'' インスタンスを起動することに注意してください。注意点について[[NetworkManager#dnsmasq|dnsmasq]] を参照してください。
+
* 接続を共有できるようにするために {{Pkg|dnsmasq}} パッケージと {{Pkg|nm-connection-editor}} パッケージを[[インストール]]してください。NetworkManager は ({{ic|dnsmasq.service}} とは独立に) 独自の ''dnsmasq'' インスタンスを DHCP サーバとして開始することに注意してください。これに関する注意事項 [[#dnsmasq]] をてください。
* インターネットに接続している機器と他の機器適切なイーサネットケーブルで接続されていること(これは通常、クロスオーバーケーブルや間にスイッチを挟むことを意味します)
+
* インターネットに接続されたデバイスその他のデバイスが適切なイーサネットケーブルで接続されていること (これは通常、間をクロスオーバーケーブルやスイッチで繋ぐことを意味します)
* インターネット共有が [[ファイアウォール]]ブロックされていないこと。
+
* インターネット共有が[[ファイアウォール]]によってブロックされていないこと。
   
 
手順:
 
手順:
   
* ターミナルから {{ic|nm-connection-editor}} を実行します
+
* ターミナルから {{ic|nm-connection-editor}} を実行してください
* 新しい Ethernet 接続を追加します
+
* 新しいイーサネット接続を追加してください
* 何かわかりやすい名前をけてください。例えば"Shared Internet "など
+
* 何かわかりやすい名前をけてください。例えば "Shared Internet"。
* IPv4設定 "に移動します
+
* "IPv4 設定" ("IPv4 Settings") を開いてください
* "方法":で "他のコンピュータ共有" を選択します
+
* "メソッド:" ("Method:") で "他のコンピューターへ共有" ("Shared to other computers") を選択してください
 
* 保存
 
* 保存
   
これで、NetworkManager の有線接続の下に新しいオプション "インターネットを共有" 表示されます。
+
これで、NetworkManager の有線接続に "Shared Internet" という新しいオプションができたはずです。
   
 
=== cron ジョブやスクリプトでネットワークが立ち上がっているか確認する ===
 
=== cron ジョブやスクリプトでネットワークが立ち上がっているか確認する ===
   
  +
{{Out of date|''nm-tool'' は NetworkManager から削除されました [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/commit/bb8c75bd536d4f8fb80a4366025a279078f0ec81]。代わりに ''nmcli'' を使用するべきです。}}
cron ジョブの中にはネットワークが立ち上がっている必要があるジョブもあります。ネットワークが立ち上がっていない場合はジョブを実行しないようにすることができます。そのためには、NetworkManager の {{ic|nm-tool}} を使ってネットワークの状態を確認する '''if''' テストを追加します。インターフェイスが立ち上がっている場合はテストは通りますが、全てのインターフェイスがダウンになっている場合はテストを通過しません。無線でネットワークにつながっていたり、いなかったりするノートパソコンなどで有用です。
 
  +
  +
一部の ''cron'' ジョブではネットワークが立ち上がっている必要があり、ネットワークが落ちている状態でそのようなジョブを実行したくない場合があります。そうするには、NetworkManager の ''nm-tool'' にクエリして、ネットワークの状態をチェックする '''if''' テストを追加してください。このテストは、何らかのインターフェイスが立ち上がっていれば成功し、インターフェイスが全て落ちている場合は失敗します。これは、ある時は有線接続されていて、ある時は無線で、またある時はネットワークから切断されているようなノート PC で便利です。
  +
 
{{bc|<nowiki>
 
{{bc|<nowiki>
 
if [ $(nm-tool|grep State|cut -f2 -d' ') == "connected" ]; then
 
if [ $(nm-tool|grep State|cut -f2 -d' ') == "connected" ]; then
  +
# ネットワークがオンラインの時に実行したいコード
#Whatever you want to do if the network is online
 
 
else
 
else
  +
# ネットワークがオフラインの時に実行したいコード (注記: この部分と上の else は任意です)
#Whatever you want to do if the network is offline - note, this and the else above are optional
 
 
fi
 
fi
 
</nowiki>}}
 
</nowiki>}}
   
  +
これは、例えば F-Prot ウイルススキャナのシグネチャを更新するために ''fpupdate'' を実行する {{ic|cron.hourly}} で便利です。また、''nm-tool'' の出力の様々な部分を使えば、ネットワークを識別することもできます。例えば、アクティブなワイヤレスネットワークにはアスタリスクが付くので、ネットワーク名を grep して、その後でアスタリスクを grep しますs。
上記は {{ic|cron.hourly}} スクリプトを使って {{ic|fpupdate}} を実行し F-Prot ウイルススキャナをアップデートしている場合などに有用です。
 
   
=== ログイン時に自動的に接続する ===
+
=== ブート時にシークレットを使ってネットワークに接続する ===
   
デフォルトでは、パスワ入力しないと使えないネットワークの場合 NetworkManager 起動時に自動的に接続しません。自動的に接続するには以下の設定が必要です:
+
デフォルトでは、NetworkManager はシクレット要求するネットワークブート時に自動的に接続しません。NetworkManager では、そのようなネットワークは、そのネットワークをデフォルトで使用するユーザがログインした後のみ、接続されるからです。この動作を変更するには以下を行ってください:
   
# {{ic|nm-applet}} アイコンを右クリックして Edit Connections を選択し Wireless タブを開いてさい
+
# パネルの {{ic|nm-applet}} アイコンを右クリックし、"接続を編集する" を選択し、Wi-Fi タブを開いてください
# 使用したい接続を選択して Edit ボタンをクリックしてください
+
# 使たい接続を選択し、編集ボタンをクリックしてください
# “Connect Automatically” と “Available to all users” のボックスにチェックを入れてさい
+
# “Connect Automatically” と “Available to all users” のボックスにチェックを入れてください
#さらに、"Wi-Fi Security" の下"Store password for all users (not encrypted)" が選択されていることを確認してください
+
# 加えて、"Wi-Fi Security" タブ "Store password for all users (not encrypted)" が選択されていることを確認してください
   
一度ログアウトしてから再ログインすれ設定は完了です。
+
ログアウトしログインし直せば完了です。
   
=== KWallet パスワードを入力して OpenConnect ===
+
=== OpenConnect で KWallet 内のパスワードを使う ===
   
接続時に両方の値を入力できますが、{{Pkg|plasma-nm}} 0.9.3.2-1 以降では [[KWallet]] から OpenConnect のユーザ名とパスワードを直接取得でき
+
接続時にユーザ名とパスワードを入力することはできますが、{{Pkg|plasma-nm}} 0.9.3.2-1 から、[[KWallet]] から直接 OpenConnect のユーザ名とパスワードを取得することが可能になりした
   
"KDE Wallet Manager" を開き、"Network Management|Maps" で OpenConnect VPN 接続を検索します。"値を表示" をクリックし、
+
"KDE Wallet Manager" を開き、"Network Management|Maps" で対象の OpenConnect VPN 接続を見つけてください。"Show values" をクリックし、認証情報を以下の形式で "VpnSecrets" に入力してください (''ユーザ名'' と ''パスワード'' の部分は適宜置き換えてください):
このフォームのキー "VpnSecrets" に資格情報を入力します (''ユーザー名'' と''パスワード'' は適宜置き換えてください):
 
   
form:main:username%SEP%''username''%SEP%form:main:password%SEP%''password''
+
form:main:username%SEP%''ユーザ名''%SEP%form:main:password%SEP%''パスワード''
   
次回接続すると、ユーザ名とパスワードが "VPN シークレット" ダイアログボックスに表示されす。
+
次回接続時に、ユーザ名とパスワードが "VPN secrets" ダイアログボックスに入力されるはずです。
   
 
=== 特定のデバイスを無視する ===
 
=== 特定のデバイスを無視する ===
   
時々 NetworkManager 特定のデバイスを無視してもらってアドレスルート設定ないが望ましいことがあります。{{ic|/etc/NetworkManager/NetworkManager.conf}} で以下を使うことで MAC インターフェイス名によってデバイスを無視するよう設定できます:
+
NetworkManager 特定のデバイスを無視し、そのデバイスに対してアドレスルート (route) の設定を試みないようにすることが望ましい場合があります。{{ic|/etc/NetworkManager/conf.d/unmanaged.conf}} で以下のオプションを使うことでMAC またはインターフェイス名によって特定のデバイスを無視することができます:
  +
 
[keyfile]
 
[keyfile]
 
unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth0
 
unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth0
これを記述した後、NetworkManager を[[デーモン|再起動]]してください。設定したデバイスに触れないように NetworkManager でインターフェイスを設定できるはずです。
 
   
  +
ファイルを編集したら、{{ic|nmcli general reload}} を root として実行してください。その後、NetworkManager があなたの設定を変更することなく、インターフェイスを構成できるようになっているはずです。
=== MAC アドレスのランダム化の設定 ===
 
   
  +
=== MAC アドレスのランダム化を設定する ===
{{Note|1=(安定した) リンク接続 [https://bbs.archlinux.org/viewtopic.php?id=220101] や、MAC アドレスに基づいてデバイスを制限したり制限ネットワークを持つネットワークを取得するには、MAC アドレスのランダム化を無効にする必要がある場合があります。}
 
   
MAC ダム化は実際の MAC アドレスをネットワークに開示しなことでイバシー化するために使用できます。
+
{{Note|1=(安定した) ク接続[https://bbs.archlinux.org/viewtopic.php?id=220101]や、MAC アドレスに基づいてデバイスを制限したりネットワーク容量制限を設けてるネットワークへの接続にはMAC アドレスのンダム化無効化する必要がある場合があります。}}
   
  +
MAC アドレスのランダム化は、本物の MAC アドレスをネットワークに開示しないことで、プライバシーを向上させることができます。
NetworkManager は2種類の MAC アドレスのランダム化をサポートしています。スキャン中のランダム化とネットワーク接続のランダム化です。どちらのモードも、{{ic|/etc/NetworkManager/NetworkManager.conf}} を変更するか、{{ic|/etc/NetworkManager/conf.d/}} に個別の設定ファイルを作成することで設定できます。設定ファイルは NetworkManager によって上書きされる可能性があります。
 
   
Wi-Fi スキャンのランダム化はデフォルで有効です、{{ic|/etc/NetworkManager/NetworkManager.conf}} または {{ic|/etc/NetworkManager/conf.d}} 専用設定ファイルに以下の行追加することで無効化すること可能です。:
+
NetworkManager は2種類の MAC アドレスランダム化をサポートしています: スキャンのランダム化とネッワーク接続におけるランダム化です。どちらのモードも、{{ic|/etc/NetworkManager/NetworkManager.conf}} を変更するか、{{ic|/etc/NetworkManager/conf.d/}} 内に別の設定ファイルを作成することで設定できま (前者は NetworkManager によって上書きされ場合あるの、後者が推奨されま)
  +
  +
Wi-Fi スキャン中のランダム化はデフォルトで有効化されていますが、以下の行を {{ic|/etc/NetworkManager/NetworkManager.conf}} か {{ic|/etc/NetworkManager/conf.d}} 内の別の設定ファイルに追加することで無効化することができます:
   
 
{{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2=
 
{{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2=
751行目: 962行目:
 
}}
 
}}
   
ネットワーク接続 MAC ランダム化は、ワイヤレスインターフェイスとイーサネットインターフェイスの両方で異なるモード設定できます。 さまざまなモード詳細について[https://blogs.gnome.org/thaller/2016/08/26/mac-address-spoofing-in-networkmanager-1-4-0/ GNOME ブログ投稿] を参照してください。
+
ネットワーク接続における MAC アドレスランダム化は、無線インターフェイスとイーサネットインターフェイスで別々のモード設定することができます。モードに関する詳細は [https://blogs.gnome.org/thaller/2016/08/26/mac-address-spoofing-in-networkmanager-1-4-0/ GNOME ブログ記事]を参照してください。
   
MAC アドレスランダム化という点では、{{ic|stable}} と {{ic|random}} が最も重要なモードです。{ic|stable}} は新しいネットワークに接続する際にランダムな MAC アドレスを生成し、その2つ恒久的に関連付けます。つまり、そのネットワークに接続するたびに同じ MAC アドレスが使用されます。一方、{{ic|random}} は、新しいネットワークに接続するたびに、新しい MAC アドレス生成されます。MAC ランダム化の設定は、{{ic|/etc/NetworkManager/conf.d}} の下希望の設定を追加することで行えます
+
MAC アドレスランダム化に関して最も重要なモードは {{ic|stable}} と {{ic|random}} です。{{ic|stable}} は新しいネットワークに接続した時にランダムな MAC アドレスを生成し、そのネットワークと MAC アドレス永続的に関連付けます。これはつまり、そのネットワークに接続すると毎回同じ MAC アドレスが使用されることを意味します。それとは対照的に、{{ic|random}} は、ネットワークに接続する、そのネットワークが新しかろうが既知であろうが、新しい MAC アドレス生成ます。{{ic|/etc/NetworkManager/conf.d}} に設定ファイルを追加してこの MAC アドレスランダム化を設定することます:
   
 
{{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2=
 
{{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2=
 
[device-mac-randomization]
 
[device-mac-randomization]
# "yes" デフォルトです
+
# "yes" は既にスキャンにおけるデフォルトです
wifi.scan-rand-mac-address=yes とする。
+
wifi.scan-rand-mac-address=yes
  +
 
 
[connection-mac-randomization]
 
[connection-mac-randomization]
# 全てのイーサネット設定の MAC をランダム化する
+
# 全てのイーサネット接続に対して MAC をランダム化する
 
ethernet.cloned-mac-address=random
 
ethernet.cloned-mac-address=random
# 各 WiFi に対してランダムな MAC を生成し、2つ恒久的に関連付ける。
+
# 各 Wi-Fi に対してランダムな MAC を生成し、それらを関連付ける。
 
wifi.cloned-mac-address=stable
 
wifi.cloned-mac-address=stable
 
}}
 
}}
   
詳細について、次の [https://blogs.gnome.org/thaller/2016/08/26/mac-address-spoofing-in-networkmanager-1-4-0/ GNOME ブログ投稿] を参照してください。
+
詳細は [https://blogs.gnome.org/thaller/2016/08/26/mac-address-spoofing-in-networkmanager-1-4-0/ GNOME ブログ記事]を参照してください。
   
 
=== IPv6 プライバシー拡張を有効にする ===
 
=== IPv6 プライバシー拡張を有効にする ===
   
参照 [[IPv6#NetworkManager]]
+
[[IPv6#NetworkManager]] を参照してください。
   
 
=== 接続ごとに一意の DUID を設定する ===
 
=== 接続ごとに一意の DUID を設定する ===
   
DHCPv6 Unique Identifier (DUID) は、DHCPv6 クライアントが DHCPv6 サーバに対して自身を識別するために使用する値です。NetworkManager は3種類の DUID をサポートしています
+
DHCPv6 Unique Identifier (DUID) は、DHCPv6 クライアントが DHCPv6 サーバに対して自身を識別するために使用する値です。NetworkManager は3種類の DUID をサポートしています:
   
 
* DUID-UUID ([[RFC:6355|RFC 6355]]): Universally Unique IDentifier (UUID) から生成されます。
 
* DUID-UUID ([[RFC:6355|RFC 6355]]): Universally Unique IDentifier (UUID) から生成されます。
781行目: 992行目:
 
* DUID-LLT ([[RFC:3315|RFC 3315]]): リンク層アドレスとタイムスタンプから生成されます。
 
* DUID-LLT ([[RFC:3315|RFC 3315]]): リンク層アドレスとタイムスタンプから生成されます。
   
内部 NetworkManager の DHCP クライアントが使用されている場合 (デフォルト)、マシン ID ({{ic|/etc/machine-id}}) から生成されたグローバルで永続的な DUID-UUID で自身を識別します。これは、すべての接続が同じ UUID を共有することを意味し、プライバシーの侵害となる可能性があります。
+
NetworkManager の内部 DHCP クライアントが使用されている場合 (デフォルト)、machine-id ({{ic|/etc/machine-id}}) から生成されたグローバルで永続的な DUID-UUID で自身を識別します。これは、すべての接続が同じ UUID を共有することを意味し、プライバシーの侵害となる可能性があります。
   
幸いなことに、NetworkManager は、接続の安定した ID とホストごとの一意のキーから派生した、接続ごとの一意の DUID を提供できます。{{ic|/etc/NetworkManager/conf.d}} の下に次の設定を追加することで、これを有効にすることができます
+
幸いなことに、NetworkManager は、接続の stable-id とホストごとの一意のキーから派生した、接続ごとの一意の DUID を提供できます。{{ic|/etc/NetworkManager/conf.d}} に次の設定を追加することで、これを有効にすることができます:
   
 
{{hc|/etc/NetworkManager/conf.d/duid.conf|2=
 
{{hc|/etc/NetworkManager/conf.d/duid.conf|2=
790行目: 1,001行目:
 
}}
 
}}
   
{{ic|stable-ll}} および {{ic|stable-llt}} 値もサポートされています。詳細については、{{man|5|nm-settings|ipv6 setting}} の {{ic|dhcp-duid}} の説明を参照してください。
+
{{ic|stable-ll}} および {{ic|stable-llt}} 値もサポートされています。詳細については、{{man|5|nm-settings|ipv6 setting}} の {{ic|dhcp-duid}} の説明を参照してください。
   
 
=== 有線接続の操作 ===
 
=== 有線接続の操作 ===
   
NetworkManager は、デフォルトで、有線イーサネット接続を検出するたびに接続プロファイルを生成します。接続を生成する時点では、利用可能なイーサネットアダプターがさらにあるかどうかはわかりません。そのため、最初の有線接続 "有線接続1" と呼びます。この接続を生成しないようにするには、{{ic|no-auto-default}} を設定します。({{man|5|NetworkManager.conf}} を参照)、またはに削除することで、この接続を生成しないようにすることができます。そうすれば、NetworkManager はこのインターフェイスの接続を二度と生成しないように記憶します。
+
NetworkManager は、デフォルトで、有線イーサネット接続を検出するたびにそれぞれに対して接続プロファイルを生成します。接続を生成する時点では、利用可能なイーサネットアダプターがさらにあるかどうかはわかりません。そのため、最初の有線接続 "有線接続 1" となります。{{ic|no-auto-default}} ({{man|5|NetworkManager.conf}} を参照) を設定するか、単に削除することで、この接続を生成しないようにできます。そうすれば、NetworkManager はこのインターフェイスの接続を二度と生成しないように記憶します。
   
また、接続を編集 (およびディスクに永続化) したり、削除したりすることもできます。NetworkManager は新しい接続を再生成することはありません。それから、名前を好きなものに変更することができます。この作業には {{Pkg|nm-connection-editor}} などを使ってできます。
+
また、接続を編集 (およびディスクに永続化) したり、削除したりすることもできます。NetworkManager は新しい接続を再生成することはありません。それから、名前を好きなものに変更することができます。この作業には {{Pkg|nm-connection-editor}} などを使うことができます。
   
 
=== Wi-Fi バックエンドとして iwd を使用する ===
 
=== Wi-Fi バックエンドとして iwd を使用する ===
   
 
{{Note|1=<nowiki/>
 
{{Note|1=<nowiki/>
* {{ic|iwd.service}} を有効したり、[[iwd]] を手動で構成したりしないでください。 NetworkManager が起動し、それ自体を管理します。
+
* {{ic|iwd.service}} を有効したり、[[iwd]] を手動で構成したりしないでください。NetworkManager は自身で iwd を開始し、管理します。
* ''iwd'' に切り替える前に [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues?scope=all&utf8=%E2%9C%93&state=opened&search=iwd 既の問題] 検討してください。}}
+
* ''iwd'' に切り替える前に[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues?scope=all&utf8=%E2%9C%93&state=opened&search=iwd 既の問題]を考慮してください。}}
   
[https://iwd.wiki.kernel.org/networkmanager 実験的 iwd バックエンド] を有効するには、最初に [[インストール]] {{Pkg|iwd}} してから、の設定ファイルを作成します。
+
[https://iwd.wiki.kernel.org/networkmanager 実験的 iwd バックエンド]を有効するには、{{Pkg|iwd}} [[インストール]]してから、以下の設定ファイルを作成してください:
   
 
{{hc|/etc/NetworkManager/conf.d/wifi_backend.conf|2=
 
{{hc|/etc/NetworkManager/conf.d/wifi_backend.conf|2=
811行目: 1,022行目:
 
}}
 
}}
   
または、{{AUR|networkmanager-iwd}} をインストールすることもできます。これは、''iwd'' のみで動作する ''NetworkManager'' を構築するように設定された修正パッケージです。主な違いは、''iwd'' が必要であり、''wpa_supplicant'' はビルド後にアンインストールできす。
+
または、{{AUR|networkmanager-iwd}} をインストールすることもできます。これは、''iwd'' のみで動作する ''NetworkManager'' をビルドするように設定された修正パッケージです。主な違いは、''iwd'' が必要であり、''wpa_supplicant'' はビルド後にアンインストールできることです。
   
{{Note|1=''iwd''に切り替えた後、[https://iwd.wiki.kernel.org/networkmanager#converting_network_profiles convert existing NetworkManager network profiles] する必要がある場合があります。}}
+
{{Note|1=''iwd'' に切り替えた後、[https://iwd.wiki.kernel.org/networkmanager#converting_network_profiles 既存の NetworkManager ネットワークプロファイルを変換する]必要がある場合があります。}}
   
=== ネットワーク名前空間で実行 ===
+
=== ネットワーク名前空間で実行する ===
   
ネットワーク名前空間内で NetworkManager を実行する場合(たとえば、選択したアプリケーションで使用する必要がある特定のデバイスを管理する場合)、名前空間に移動る前にデバイスを停止ます。
+
ネットワーク名前空間内で NetworkManager を実行する場合 (たとえば、選択したアプリケーションで使用する必要がある特定のデバイスを管理する場合)、その名前空間に移動させる前にデバイスを落とてください:
   
 
$ ip link set dev ''MY_DEVICE'' down
 
$ ip link set dev ''MY_DEVICE'' down
825行目: 1,036行目:
 
$ ip netns exec ''MY_NAMESPACE'' killall NetworkManager
 
$ ip netns exec ''MY_NAMESPACE'' killall NetworkManager
   
そうしないと、NetworkManager は後で {{ic|device is strictly unmanaged}} エラー接続の確立に失敗します。
+
そうしないと、NetworkManager は後で {{ic|device is strictly unmanaged}} エラーにより接続の確立に失敗します。
   
 
=== VPN に自動的に接続する ===
 
=== VPN に自動的に接続する ===
   
NetworkManager は、インターネット接続するときに、ネットワークごとに VPN に自動的に接続するように設定できます。 VPN 接続自体は GNOME の NetworkManager フロントエンド追加できますが、VPN を自動的に使用するには {{ic|nmcli}} を使用する必要がありま。他のフロントエンドにはこの制限ない場合があります。
+
NetworkManager は、インターネットへの接続に VPN に自動的に接続するように (ネットワーク毎に) 設定できます。VPN 接続自体はGNOME の NetworkManager フロントエンド追加できますが、VPN を自動的に使用するようにするには{{ic|nmcli}} を使用しなければなりません。他のフロントエンドにはこの制限ない場合があります。
   
まず、すべてのユーザが VPN 接続を利用できるようにすることを確認します。GNOME では、これは {{ic|details}} タブの下にあるボックスにチェックを入れること完了します。{{ic|Identity}} タブのパスワード欄右側アイコンをクリックし、{{ic|Store the password for all users}} に設定ます
+
まず、対象 VPN が全ユーザ利用可能ることを確認してください。GNOME では、{{ic|details}} タブのあるボックスにチェックを入れれば良いです。{{ic|Identity}} タブのパスワード入力内の右側にあるアイコンをクリックし、{{ic|Store the password for all users}} を選択てください
   
次に、VPN 接続の UUID を見つけ、それをインターネット接続の {{ic|connection.secondaries}} に追加してください
+
そして、VPN 接続の UUID を見つけ、インターネット接続の {{ic|connection.secondaries}} にその UUID を追加してください:
   
# UUID=$(nmcli --get-values connection.uuid connection show ''name-of-VPN-connection'')
+
# UUID=$(nmcli --get-values connection.uuid connection show ''VPN接続の名前'')
# nmcli connection modify ''name-of-Internet-connection'' connection.secondaries "$UUID"
+
# nmcli connection modify ''インターネット接続の名前'' connection.secondaries "$UUID"
   
これで、NetworkManager 再起動され、設定したインターネット接続に接続するとVPN に自動的に接続されるはずです。
+
NetworkManager 再起動して、設定したインターネット接続に接続したら、自動的に VPN に接続されるようになっているはずです。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
   
=== 安全な Wi-Fi ネットワークのパスワードの入力を求めるプロンプトが表示されない ===
+
=== セキュアな Wi-Fi ネットワークのパスワードプロンプトが表示されない ===
   
セキュリティで保護されたWi-Fiネットワークに接続しようとすると、パスワードの入力を求めるプロンプト表示されず、接続確立されません。これは、keyring・パッケージがインストールされていない場合発生します。簡単な解決は、{{Pkg|gnome-keyring}} をインストールすることです。パスワードを暗号化して保存したい場合は、[[GNOME Keyring]] に従っ ''gnome-keyring-daemon'' を設定ます
+
セキュアな Wi-Fi ネットワークに接続しようとすると、パスワードのプロンプト表示されず、接続確立されません。これは、キーリングのパッケージがインストールされていない起こります。簡単な解決は、{{Pkg|gnome-keyring}} をインストールすることです。パスワードを暗号化して保存したい場合は、[[GNOME Keyring]] に書かれある指示に従い、''gnome-keyring-daemon'' をセットアップてください
   
 
=== Network management disabled ===
 
=== Network management disabled ===
   
時々 NetworkManager を終了したときに pid (state) ファイルが削除されずに 'Network management disabled' というメッセージが表示されることがあります。これが発生した場合は、手動でファイルを削除する必要があります:
+
時々NetworkManager を終了したときに pid (state) ファイルが削除されずに {{ic|Network management disabled}} というメッセージが表示されることがあります。これが発生した場合は、そのファイルを手動で削除してください:
   
 
# rm /var/lib/NetworkManager/NetworkManager.state
 
# rm /var/lib/NetworkManager/NetworkManager.state
   
=== dhclient と DHCP に関する問題 ===
+
=== 内蔵 DHCP クライアントに関する問題 ===
  +
  +
内臓の DHCP クライアントを使用すると IP アドレスの取得に問題が発生する場合、他の DHCP クライアントを使用することを検討してください (手順は [[#DHCP クライアント]] を見てください)。この回避策は、eduroam などの巨大なワイヤレスネットワークにおける問題を解決するかもしれません。
  +
  +
=== dhclient における DHCP の問題 ===
  +
  +
DHCP での IP アドレス取得に問題が発生する場合、以下を {{ic|/etc/dhclient.conf}} に追加してみてください:
   
DHCP を使って IP を取得するときに問題が起こるときは、以下を {{ic|/etc/dhclient.conf}} に追加してみてください:
 
 
interface "eth0" {
 
interface "eth0" {
send dhcp-client-identifier 01:aa:bb:cc:dd:ee:ff;
+
send dhcp-client-identifier 01:''aa:bb:cc:dd:ee:ff'';
 
}
 
}
{{ic|aa:bb:cc:dd:ee:ff}} は NIC の MAC アドレスに置き換えてください。MAC アドレスは {{Pkg|iproute2}} パッケージの {{ic|ip link show ''interface''}} コマンドを使うことでわかります。
 
 
=== dhcpcd と DHCP に関する問題 ===
 
   
  +
{{ic|''aa:bb:cc:dd:ee:ff''}} は NIC の MAC アドレスです。この MAC アドレスは {{Pkg|iproute2}} パッケージの {{ic|ip link show ''インターフェイス''}} コマンドを使って確認できます。
ルーターによっては、{{ic|/etc/dhcpcd.conf}} ({{ic|dhcpd.conf}} とは別のファイルです) 内の次の行をコメントアウトしないと正しく接続できないことがあります:
 
require dhcp_server_identifier
 
ネットワーク上で複数の DHCP サーバーを使ってなければこの修正によって問題が起こることはありません。詳細は [https://technet.microsoft.com/en-us/library/cc977442.aspx このページ] を見て下さい。
 
   
 
=== 3G モデムが検知されない ===
 
=== 3G モデムが検知されない ===
   
[[USB 3G モデム#Network_Manager]] を参照してください。
+
[[USB 3G モデム#NetworkManager]] を参照してください。
   
=== ラップップで WLAN をオフに切り替える ===
+
=== ノーパソコンで WLAN をオフにる ===
   
ラップップいているスイッチを使って WiFi アダプタを無効てその後また有効た時に NetworkManager が動作しなことがしばしばあります。これはほとんど {{ic|rfkill}} の問題です。[[公式リポジトリ]]から {{Pkg|rfkill}}{{Broken package link|置換パッケージ: {{Pkg|util-linux}}}} をインストールして、ドライバが {{ic|rfkill}}無線アダプタの状態通知しているかどうか確かめためのコマンドを実行してください:
+
時々、ノーパソコンいているスイッチを使って Wi-Fi アダプタを無効、再び有効ようとすると NetworkManager が機能しなくなることがあります。これは、しばしば ''rfkill'' の問題であることがあります。ドライバが ''rfkill''ワイヤレスアダプタの状態について通知しているかどうか確認するには、以下のコマンドを使ってください:
   
 
$ watch -n1 rfkill list all
 
$ watch -n1 rfkill list all
   
アダプタ切り替えを行った後に identifier がブロックされたまま場合、手動でロックを解除することができます (X は上のコマンドで出力された identifier の番号に置き換えてください):
+
アダプタ切り替えた後にどれかの識別子がブロックされたままになる場合、手動でアンロックしてみることができます (X の部分のコマンドで得られた識別子の番号です):
   
 
# rfkill event unblock X
 
# rfkill event unblock X
   
=== 固定 IP 設定が DHCP に戻る ===
+
=== 固定 IP アドレスの設定が DHCP に戻る ===
   
未解決のバグのため、デフォルトの接続を固定 IP にした、{{ic|nm-applet}} は正しく設定を保存できず、自動 DHCP に戻ます。
+
とある未解決のバグにより、デフォルトの接続を固定 IP アドレス変更すると、{{ic|nm-applet}} 設定の変更適切に保存、自動 DHCP に戻ってしまいます。
   
この問題を解決するにはデフォルトの接続 (例: "Auto eth0") を {{ic|nm-applet}} で編集してから、接続を変更 (例: "my eth0")、"Available to all users" のチェックを外し、固定 IP の設定をしそれから '''Apply''' をクリックする必要があります。これで新しい接続が指定した名前で保存されます。
+
この問題を回避するには、{{ic|nm-applet}} でデフォルトの設定 (例: "Auto eth0") を編集し、接続名を変更 (例: "my eth0")、"Available to all users" チェックボックスのチェックを外し、固定 IP アドレスの設定を好きに変更し、'''Apply''' をクリックしてください。これで指定した名前で新しい接続が保存されます。
   
、デフォルト接続自動接続して欲しくない場合があるかもれません。そうするには、{{ic|nm-connection-editor}} を (root 以外で) 起動してください。接続エディタで、デフォルト接続 (例: "Auto eth0") を編集し"Connect automatically" のチェックを外して '''Apply''' をクリックして終了してください。
+
そうしたら、デフォルト接続自動的に接続しないようにたいと思うでしょう。そうするには、まず {{ic|nm-connection-editor}} を実行してください (root としてでは'''ありません''')。接続エディタで、デフォルト接続 (例: "Auto eth0") を編集し"Connect automatically" のチェックを外してください。'''Apply''' をクリックし、接続エディタを閉じてください。
   
=== ノーマルユーザーで接続を編集できない ===
+
=== 通常ユーザとして接続を編集できない ===
   
[[#PolicyKit パーミッションの設定]] をさい。
+
[[#PolicyKit パーミッションをセットアップする]] を参照しください。
   
=== 隠れた無線ネットワーク削除 ===
+
=== 隠れたワイヤレスネットワーク削除する ===
   
ステルスが有効になっているネットワークは無線のリストに表示されないので、GUI 削除することは出来ません。のコマンドでネットワークを削除することが可能です:
+
隠されたネットワークはワイヤレス選択リストに表示されないので、GUI から削除することができません。以下のコマンドでそのようなネットワークを削除できます:
   
# rm /etc/NetworkManager/system-connections/[SSID]
+
# rm /etc/NetworkManager/system-connections/''SSID''
   
他の接続でもこのコマンドは使えます。
+
これは、他の接続でも使えます。
   
=== VPN が Gnome で動作しない ===
+
=== VPN が GNOME で動作しない ===
   
Gnome で NetworkManager を使openconnect や vpnc 接続を設定すると、ダイアログが表示されず以下のエラーが {{ic|/var/log/errors.log}} に現れることがあります:
+
GNOME を使用しいる時に NetworkManager で OpenConnect や vpnc 接続をセットアップすると、ダイアログボックスが表示されず以下のエラーが {{ic|/var/log/errors.log}} に現れることがあります:
   
 
localhost NetworkManager[399]: <error> [1361719690.10506] [nm-vpn-connection.c:1405] get_secrets_cb(): Failed to request VPN secrets #3: (6) No agents were available for this request.
 
localhost NetworkManager[399]: <error> [1361719690.10506] [nm-vpn-connection.c:1405] get_secrets_cb(): Failed to request VPN secrets #3: (6) No agents were available for this request.
   
これは GNOME NM アプレットが {{ic|/usr/lib/gnome-shell}} にダイアログスクリプトがあると想定しているが原因ですNetworkManager のパッケージは {{ic|/usr/lib/networkmanager}} にます。"一時的な"修正として (このバグしばらく回避できます)、以下のシンボリックリンクを作成してください:
+
これはGNOME NetworkManager Applet が、ダイログスクリプトが {{ic|/usr/lib/gnome-shell}} にあると想定していることが原因です (NetworkManager のパッケージはダイアログスクリプトを {{ic|/usr/lib/networkmanager}} に置ます)。"一時的な" 修正として (このバグしばらく前から存在しています)、以下のシンボリックリンクを作成してください:
   
 
* OpenConnect の場合: {{ic|ln -s /usr/lib/networkmanager/nm-openconnect-auth-dialog /usr/lib/gnome-shell/}}
 
* OpenConnect の場合: {{ic|ln -s /usr/lib/networkmanager/nm-openconnect-auth-dialog /usr/lib/gnome-shell/}}
* VPNC (すなわち Cisco VPN) の場合: {{ic|ln -s /usr/lib/networkmanager/nm-vpnc-auth-dialog /usr/lib/gnome-shell/}}
+
* VPNC (つまり Cisco VPN) の場合: {{ic|ln -s /usr/lib/networkmanager/nm-vpnc-auth-dialog /usr/lib/gnome-shell/}}
   
他の NM VPN プラグインでも同じよに設定してください
+
これは、他の NetworkManager VPN プラグインでも必要がある場合がありますが、上記が最も一般的です
   
=== 可視化されたヨーロッパのワイヤレスネットワークに接続できない ===
+
=== ヨーロッパの可視的なワイヤレスネットワークに接続できない ===
   
WLAN チップはデフォルト [[ワイヤレス設定#規制範囲に従う|規制ドメイン]] で出荷されます。アクセスポイントがこれらの制内で動作しない場合、ネットワークに接続できません。これを修正するのは簡単です:
+
WLAN チップはデフォルト[[ネットワーク設定/ワイヤレス#規制範囲に従う|規制範囲]]が設定されています。アクセスポイントが制内で動作しない場合、そのネットワークに接続することはできません。これは簡単に解決きます:
   
# [[インストール]] {{Pkg|wireless-regdb}} をインストールします
+
# {{Pkg|wireless-regdb}} を[[インストール]]てください
# {{ic|/etc/conf.d/wireless-regdom}} に正しい番号をアンコメントする
+
# {{ic|/etc/conf.d/wireless-regdom}} で適切な名コードをアンコメントしてください
# 設定は起動時にしか読み込まれない、システムを再起動
+
# システムを再起動してください。この設定はブート時にしか読み込まれないからです。
  +
  +
=== ブート時の VPN への自動接続が機能しない ===
  +
  +
この問題は、システム (つまり、root ユーザとして動作している NetworkManager) が VPN 接続を確立しようと試みたが、パスワードが特定のユーザの GNOME Keyring 内に保存されているためにアクセスできなかった場合に発生します。
  +
  +
解決策は、[[#ディスパッチャを使って、ネットワーク接続が確立された後に VPN に接続する]] の手順 2 で説明されている通りに、VPN のパスワードを平文で保存することです。
  +
  +
{{ic|nm-applet}} GUI で新しい "auto-connect VPN" オプションを使用している場合は、自動接続するために 手順 1 で説明されているディスパッチャを使用する必要はありません。
   
 
=== Systemd のボトルネック ===
 
=== Systemd のボトルネック ===
925行目: 1,144行目:
 
時が立つにつれてログファイル ({{ic|/var/log/journal}}) が膨大になってしまうことがあります。そうすると NetworkManager を使う場合にブートパフォーマンスに大きな影響を与えます。参照: [[systemd#少しづつ起動時間が長くなっている]]。
 
時が立つにつれてログファイル ({{ic|/var/log/journal}}) が膨大になってしまうことがあります。そうすると NetworkManager を使う場合にブートパフォーマンスに大きな影響を与えます。参照: [[systemd#少しづつ起動時間が長くなっている]]。
   
=== 定期的ネットワークが切される (WiFi) ===
+
=== 定期的ネットワーク接続、遅延、パケットロス (WiFi) ===
   
  +
NetworkManager は2分ごとにスキャンを行います。
WiFi ドライバーの中にはベースステーションのスキャン時に問題が発生するものがあります。VPN が切断されたりパケットが消失したり、ウェブページがロードされないなどの症状が起こります。
 
   
  +
一部の WiFi ドライバは、接続/アソシエーション中にベースステーションのスキャンを行うと問題が発生します。症状としては、VPN 接続断/再接続、パケットロス、ウェブページのロードに失敗してリフレッシュすると良くなるなどがあります。
{{ic|journalctl -f}} を実行すると、以下のようなメッセージが定期的にログに残っているならこの問題が関わっています:
 
   
  +
{{ic|journalctl -f}} を root として実行すると、スキャンが行われていることがわかります。以下のようなメッセージが定期的にログに現れます:
NetworkManager[410]: <info> (wlp3s0): roamed from BSSID 00:14:48:11:20:CF (my-wifi-name) to (none) ((none))
 
   
  +
NetworkManager[410]: <info> (wlp3s0): roamed from BSSID 00:14:48:11:20:CF (my-wifi-name) to (none) ((none))
パッチが適用された NetworkManager を使うことでこの種のスキャニングを防ぐことができます: {{AUR|networkmanager-noscan}}。
 
   
もしくは、ローミングが重要でない場合、WiFi 接続プロファイルでアクセスポイントの BSSID をロックすること定期的なスキャンを無効化できます。
+
ローミングが重要でないならば、WiFi 接続プロファイルでアクセスポイントの BSSID をロックすることにより、定期的なスキャンの挙動を無効化することができます。
   
 
=== Lenovo ラップトップ (IdeaPad、Legion など) で Wi-Fi をオンにできない ===
 
=== Lenovo ラップトップ (IdeaPad、Legion など) で Wi-Fi をオンにできない ===
   
一部の Lenovo モデルでは、Wi-Fi ドライバがソフトブロックを誤って報告するため、{{ic|ideapad_laptop}} モジュール問題があります。 カードは {{ic|netctl}} で操作できますが、NetworkManager などのマネージャーは機能しません。これが問題であことを確認するには、ハードウェアスイッチを切り替え後に {{ic|rfkill list}} の出力をチェックし、ソフトブロックが持ことを確認します
+
これは、Wi-Fi ドライバがソフトブロックを誤って報告することによる一部の Lenovo モデルにおける {{ic|ideapad_laptop}} モジュール問題す。カードは依然として {{ic|netctl}} で操作できますが、NetworkManager などのマネージャーは機能しません。こ問題が発生していかどうかを確認するには、ハードウェアスイッチをオンオフしあとで {{ic|rfkill list}} の出力を確認し、ソフトブロックされかどうか確認してください
   
{{Accuracy|{{ic|rfkill.default_state}} と {{ic|rfkill.master_switch_mode}} を使用してみてください ([https://docs.kernel.org/admin-guide/kernel-parameters.html kernel-parameters.html] を参照)) rfkill の問題を修正します。}}
+
{{Accuracy|rfkill の問題を解決するには、{{ic|rfkill.default_state}} と {{ic|rfkill.master_switch_mode}} を使用してみてください ([https://docs.kernel.org/admin-guide/kernel-parameters.html kernel-parameters.html] を参照))。}}
   
[[modprobe|Unloading]] {{ic|ideapad_laptop}} モジュールでこれ修正する必要があります。('''警告''': これにより、ラップトップのキーボードとタッチパッドも無効になる可能性があります!)
+
{{ic|ideapad_laptop}} モジュールを[[modprobe|アンロード]]すれば、この問題は解決するはずです。('''警告''': これにより、ラップトップのキーボードとタッチパッドも無効になる可能性があります!)
   
 
=== ホスト名の送信をオフにする ===
 
=== ホスト名の送信をオフにする ===
   
NetworkManager はデフォルトでホスト名を DHCP サーバに送信します。ホスト名の送信は、グローバルなく接続ごとのみ無効できま ([https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/584 Issue#584])
+
NetworkManager はデフォルトでホスト名を DHCP サーバに送信します。ホスト名の送信は、グローバル無効化できず、接続しか無効できません ([https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/584 Issue #584])
   
特定の接続 DHCP サーバへのホスト名の送信を無効するには、ネットワーク接続ファイルに以下を追加します。
+
特定の接続 DHCP サーバへのホスト名の送信を無効するには、以下をネットワークの設定ファイルに追加してください:
   
 
{{hc|/etc/NetworkManager/system-connections/''your_connection_file''|2=
 
{{hc|/etc/NetworkManager/system-connections/''your_connection_file''|2=
963行目: 1,182行目:
 
=== nm-applet が i3wm で消える ===
 
=== nm-applet が i3wm で消える ===
   
通知に {{ic|xfce4-notifyd.service}} を使用する場合は、ユニットを [[編集]] して、以下を追加する必要があります
+
通知に {{ic|xfce4-notifyd.service}} を使用する場合は、そのユニットを[[編集]]して、以下を追加する必要があります:
   
 
{{hc|/etc/systemd/user/xfce4-notifyd.service.d/display_env.conf|2=
 
{{hc|/etc/systemd/user/xfce4-notifyd.service.d/display_env.conf|2=
970行目: 1,189行目:
 
}}
 
}}
   
デーモンをロードした{{ic|xfce4-notifyd.service}} i3 を終了し、再起動すると、アプレットがトレイに表示されす。
+
デーモンをロードし直したら、{{ic|xfce4-notifyd.service}} を[[再起動]]してください。i3 を終了し、再起動すると、アプレットがトレイに表示されているはずです。
 
=== nm-applet トレイアイコンが正しく表示されない ===
 
 
現在、nm-applet のトレイアイコンは互いに重なり合って描かれています。つまり、ワイヤレス強度を表示するアイコンが、有線接続がないことを示すアイコンの上に表示される場合があります。
 
これは明らかに GTK3 のバグ/問題です [https://gitlab.gnome.org/GNOME/gtk/issues/1280]
 
 
GTK3 のパッチが適用されたバージョンが AUR に存在し、トレイアイコンのバグを修正しているようです:{{AUR|gtk3-classic}}
 
   
 
=== Unit dbus-org.freedesktop.resolve1.service not found ===
 
=== Unit dbus-org.freedesktop.resolve1.service not found ===
   
{{ic|systemd-resolved.service}} が開始されていない場合、NetworkManager は D-Bus を使用して開始しようとし、失敗します
+
{{ic|systemd-resolved.service}} が開始されていない場合、NetworkManager は D-Bus を使用して開始しようとし、失敗します:
   
 
dbus-daemon[991]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.23' (uid=0 pid=1012 comm="/usr/bin/NetworkManager --no-daemon ")
 
dbus-daemon[991]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.23' (uid=0 pid=1012 comm="/usr/bin/NetworkManager --no-daemon ")
987行目: 1,199行目:
 
dbus-daemon[991]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.23' (uid=0 pid=1012 comm="/usr/bin/NetworkManager --no-daemon ")
 
dbus-daemon[991]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.23' (uid=0 pid=1012 comm="/usr/bin/NetworkManager --no-daemon ")
   
これは、NetworkManager が {{man|5|NetworkManager.conf}} の {{ic|1=main.dns=}} 設定に関係なく、DNS 情報を [[systemd-resolved]] に送信しようとするためです。[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/commit/d4eb4cb45f41b1751cacf71da558bf8f​​0988f383]
+
これは、NetworkManager が {{man|5|NetworkManager.conf}} の {{ic|1=main.dns=}} 設定に関係なく、DNS 情報を [[systemd-resolved]] に送信しようとするためです。[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/commit/d4eb4cb45f41b1751cacf71da558bf8f0988f383]
   
これは、{{ic|/etc/NetworkManager/conf.d/}} の設定ファイルで無効にできます:
+
これは、{{ic|/etc/NetworkManager/conf.d/}} の設定ファイルで無効にできます:
   
 
{{hc|/etc/NetworkManager/conf.d/no-systemd-resolved.conf|2=
 
{{hc|/etc/NetworkManager/conf.d/no-systemd-resolved.conf|2=
998行目: 1,210行目:
 
{{Bug|62138}} を参照してください。
 
{{Bug|62138}} を参照してください。
   
=== Secrets が要求されましたが、提供されませんでした ===
+
=== Secrets were required, but not provided ===
   
{{ic|nmcli device wifi connect''SSID''password''password''}} を使用してネットワークに接続しようとすると、次のエラーが表示されま
+
ネットワークに接続しようとして以下のエラーが発生る場合:
   
  +
{{hc|$ nmcli device wifi connect ''SSID'' password ''パスワード''|
Error: Connection activation failed: (7) Secrets were required, but not provided
 
  +
Error: Connection activation failed: (7) Secrets were required, but not provided
  +
}}
   
このエラーにはさまざまな原因が考えられるた [[journal]] を読んでください ({{ic|-u NetworkManager}} でフィルタリングしてください) たとえば、NetworkManager が接続確立するのに時間がかかりすぎた場合、パスワードが正しくない可能性があります
+
このエラー原因となりうものはくさんあり、[[journal]] を読む必要があります ({{ic|-u NetworkManager}} で出力をフィルタしてください)。例えば、接続確立に時間がかかりすぎるとNetworkManager はパスワードが正しくなかったと結論づけます:
   
 
{{bc|
 
{{bc|
1,012行目: 1,226行目:
 
}}
 
}}
   
接続プロファイルを削除し、新しいプロファイルを作成してみてください
+
接続プロファイルを削除し、新しいプロファイルを作成してみてください:
   
 
$ nmcli connection delete ''SSID''
 
$ nmcli connection delete ''SSID''
$ nmcli device wifi connect ''SSID'' password ''password''
+
$ nmcli device wifi connect ''SSID'' password ''パスワード''
   
MAC アドレスランダム化を無効にすこともできます。
+
また、MAC アドレスランダム化を無効化してみ良いしょう:
   
 
{{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2=
 
{{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2=
1,024行目: 1,238行目:
 
}}
 
}}
   
=== iwd の WPA エンタープライズ接続 ===
+
=== iwd の WPA Enterprise 接続 ===
   
[https://wiki.archlinux.org/title/NetworkManager#Using_iwd_as_the_Wi-Fi_backend iwd backend] を使用して NetworkManagerで ''eduroam'' のような WPA エンタープライズネットワークに接続しようとすると、NetworkManager から次のエラーが発生します
+
[[#Wi-Fi バックエンドとして iwd を使用する|iwd バックエンド]]と NetworkManager で 'eduroam' などの WPA Enterprise ネットワークに接続しようとした際に、NetworkManager sで以下のエラーが発生します:
   
Connection 'eduroam' is not avialable on device wlan0 because profile is not compatible with device (802.1x connection must have IWD provisioning files).
+
Connection 'eduroam' is not avialable on device wlan0 because profile is not compatible with device (802.1x connections must have IWD provisioning files)
   
これは、NetworkManager WPA Enterprise ネットワークを設定できないためです。ため、[[iwd#WPA Enterprise]] で説明されているようにiwd 設定ファイル {{ic|/var/lib/iwd/''essid''.8021x}} を使用して設定する必要があります。
+
NetworkManager WPA Enterprise ネットワークを設定できないことが原因です。、[[iwd#WPA Enterprise]] で説明されているように iwd 設定ファイル {{ic|/var/lib/iwd/''essid''.8021x}} を使て設定する必要があります。
   
  +
=== Failed to request VPN secrets ===
=== VPN で Secrets のリクエストに失敗する ===
 
  +
  +
以下のエラーが発生する場合:
   
もし、このようなエラーが発生したら
 
 
Failed to request VPN secrets #1: No agents were available for this request.
 
Failed to request VPN secrets #1: No agents were available for this request.
   
パスワードが空であるか、[[NetworkManager#PolicyKit パーミッションの設定|PolicyKit パーミッションの設定]]必要なためです。
+
パスワードが空であるか、[[#PolicyKit パーミッションをセットアップする|PolicyKit パーミッションをセットアップする]]必要があるかのどちらかです。
   
=== OpenVPN 接続が OpenSSL の ''ca md too weak'' エラーで失敗する ===
+
=== OpenSSL の "ca md too weak" エラーで OpenVPN の接続に失敗する ===
   
{{Pkg|openssl}} がバージョン3に更新されたため、従来の暗号化アルゴリズムで生成された証明書はデフォルトで拒否されます。このような設定で {{Pkg|networkmanager-openvpn}} を使用しようとすると、ログに次のエラーが記録される可能性があります
+
{{Pkg|openssl}} がバージョン3に更新されたため、レガシーな暗号化アルゴリズムで生成された証明書はデフォルトで拒否されます。このような設定で {{Pkg|networkmanager-openvpn}} を使用しようとすると、ログに次のエラーが記録される可能性があります:
   
 
{{bc|
 
{{bc|
1,049行目: 1,264行目:
 
}}
 
}}
   
正しいアプローチは、OpenVPN サーバ管理者に、より安全な証明書を生成して再発行してもらうことです。ただし、当面の回避策として、OpenVPN には {{ic|1=tls-cipher "DEFAULT:@SECLEVEL=0"}} が必要です。こはプラグインでは不可能かもしれませんが、''nmcli'' では可能です。これとは別に、OpenSSL で ''レガシー'' プロバイダを有効する必要もあります。
+
正しいアプローチは、OpenVPN サーバ管理者に、より安全な証明書を生成して再発行してもらうことです。ただし、当面の回避策として、OpenVPN には {{ic|1=tls-cipher "DEFAULT:@SECLEVEL=0"}} が必要です。この設定プラグイン GUI からでは無理かもしれませんが、''nmcli'' からなら可能です。これとは別に、OpenSSL で''レガシー''プロバイダを有効する必要もあります。
   
まず、の出力から、問題のある VPN 接続の名前を取得します。
+
まず、以下のコマンドの出力から、問題のある VPN 接続の名前を取得してください:
   
 
$ nmcli connection show
 
$ nmcli connection show
   
接続名 ''vpn.example.com'' であると仮定すると、次のように ''nmcli'' を使用します。
+
接続前は ''vpn.example.com'' であると仮定しま。以下のように ''nmcli'' を使ってください:
   
 
$ nmcli connection modify vpn.example.com +vpn.data tls-cipher=DEFAULT:@SECLEVEL=0
 
$ nmcli connection modify vpn.example.com +vpn.data tls-cipher=DEFAULT:@SECLEVEL=0
   
変更は {{ic|/etc/NetworkManager/system-connections/vpn.example.com.nmconnection}} に即座に反映されす。
+
変更は即座に {{ic|/etc/NetworkManager/system-connections/vpn.example.com.nmconnection}} に反映されるはずです。
   
OpenSSL に関しては、[https://wiki.openssl.org/index.php/OpenSSL_3.0#Providers OpenSSL wiki] 説明に従って {{ic|/etc/ssl/openssl.cnf}} を編集します
+
OpenSSL に関しては、[https://wiki.openssl.org/index.php/OpenSSL_3.0#Providers OpenSSL wiki] 説明されいる通りに {{ic|/etc/ssl/openssl.cnf}} を編集してください
   
具体的には、{{ic|[provider_sect]}} セクションの最後に {{ic|1=legacy = legacy_sect}} を追加します。{{ic|[default_sect]}} の下で {{ic|1=activate = 1}} のコメントを外します。最後に、{{ic|1=activate = 1}} という行も含む新しいセクション {{ic|[legacy_sect]}} を追加します。他のほとんどの既存の構成セクションを除外すると、最終結果は次のようになります
+
具体的には、{{ic|[provider_sect]}} セクションの最後に {{ic|1=legacy = legacy_sect}} を追加してください。{{ic|[default_sect]}} で {{ic|1=activate = 1}} のコメントを外してください。最後に、{{ic|1=activate = 1}} という行も含む新しいセクション {{ic|[legacy_sect]}} を追加してください。他のほとんどの既存の構成セクションを除外すると、最終結果は次のようになります:
   
 
{{hc|/etc/ssl/openssl.cnf|2=
 
{{hc|/etc/ssl/openssl.cnf|2=
1,082行目: 1,297行目:
 
}}
 
}}
   
最後に、{{ic|NetworkManager.service}} を [[再起動]] して、新しい OpenSSL 構成を有効ます
+
最後に、{{ic|NetworkManager.service}} を[[再起動]]して、新しい OpenSSL 設定を有効てください
  +
  +
=== OpenSSL の "unsupported protocol" エラーで WPA Enterprise の接続の認証に失敗する ===
  +
  +
{{Pkg|openssl}} がバージョン 3 に更新されたため、デフォルトで ''SSL 3、TLS 1.0、TLS 1.1、そして DTLS 1.0 はセキュリティレベル 0 でのみ動作する''ようになりました。それよりも低い標準しかサポートしていない Wi-Fi での認証は、ログに以下のエラーを吐いて失敗します:
  +
  +
{{bc|
  +
wpa_supplicant[3320]: SSL: SSL3 alert: write (local SSL3 detected an error):fatal:protocol version
  +
wpa_supplicant[3320]: OpenSSL: openssl_handshake - SSL_connect error:0A000102:SSL routines::unsupported protocol
  +
wpa_supplicant[3320]: wlp3s0: CTRL-EVENT-EAP-FAILURE EAP authentication failed
  +
}}
  +
  +
正しいアプローチは、WiFi の管理者に TLS 1.3 をサポートしてもらい、さらにオプションで TLS 1.0/1.1、DTLS 1.0、SSL 1-3 を含む低いセキュリティ標準のサポートを落としてもらうことです。しかし、当面の回避策として、TLS 1.0 をデフォルトで許可する方法は複数あります。一つは、手動で OpenSSL にパッチを当てるか、破壊的な変更をもとに戻すことです ([https://github.com/openssl/openssl/commit/7bf2e4d7f0c7ae19b7a8c416910886a7171e9820])。これは、OpenSSL レベル 1 を使用する他の全てのプログラムのセキュリティも低下してしまうため、推奨されません。代わりに、([https://bbs.archlinux.org/viewtopic.php?id=286417#p2104492 BBS#286417] で説明されているように) wpa_supplicant によって使用されるレベルを直接設定することができます。問題のある接続の {{ic|1=[802-1x]}} セクションで {{ic|1=phase1-auth-flags=32}} を設定することで、その接続のみを変更できます。これは GUI からは無理かもしれませんが、''nmcli'' でなら可能です。
  +
  +
まず、以下のコマンドの出力から、問題のある Wi-Fi 接続の名前を手に入れてください:
  +
  +
$ nmcli connection show
  +
  +
接続名は ''Example WiFi'' であると仮定します。以下のように ''nmcli'' を使用してください:
  +
  +
$ nmcli connection modify Example\ WiFi 802-1x.phase1-auth-flags 32
  +
  +
変更は即座に {{ic|/etc/NetworkManager/system-connections/Example\ WiFi.nmconnection}} に反映されるはずです。
  +
  +
最後に、{{ic|NetworkManager.service}} を[[再起動]]して、新しい OpenSSL の設定を有効化してください。
   
 
== 参照 ==
 
== 参照 ==
  +
 
* [https://blogs.gnome.org/dcbw/2015/02/16/networkmanager-for-administrators-part-1/ NetworkManager for Administrators Part 1]
 
* [https://blogs.gnome.org/dcbw/2015/02/16/networkmanager-for-administrators-part-1/ NetworkManager for Administrators Part 1]
  +
* [[Wikipedia:ja:NetworkManager]]
  +
* [https://networkmanager.dev/ NetworkManager 公式ウェブサイト]
  +
  +
{{TranslationStatus|NetworkManager|2023-08-18|785663}}

2024年3月28日 (木) 08:01時点における最新版

関連記事

NetworkManager は、システムがネットワークに自動的に接続できるようにするためにネットワークの検出と設定の機能を提供するプログラムです。NetworkManager の機能は無線ネットワークと有線ネットワークの両方で有用です。無線ネットワークでは、NetworkManager は既知の無線ネットワークを優先するようになっており、最も信頼性のあるネットワークに切り替える機能もあります。NetworkManager 対応のアプリケーションはオンラインモードとオフラインモードの切り替えが可能です。また、NetworkManager は無線接続よりも有線接続を優先するようになっており、モデム接続と特定の種類の VPN に対応しています。NetworkManager は元々 Red Hat によって開発されていましたが、現在では GNOME プロジェクトによってホストされています。

警告: デフォルトでは、機密情報 (Wi-Fi のパスワードなど) は root ユーザからファイルシステムでアクセス可能であり、さらに GUI (nm-applet など) を介して設定にアクセスできるユーザからもアクセス可能です。#Wi-Fi パスワードの暗号化 を参照してください。

目次

インストール

NetworkManager は networkmanager パッケージでインストールできます。このパッケージには、デーモン、コマンドラインインターフェイス (nmcli)、そして curses ベースのインターフェイス (nmtui) が含まれています。

NetworkManager を有効化する

インストールしたら、NetworkManager.service起動/有効化する必要があります。NetworkManager デーモンが起動すると、既に構成されている利用可能な "システム接続" に自動的に接続します。"ユーザ接続" や未構成の接続を設定したり接続したりするには、nmcli やアプレットが必要です。

ノート:
  • ネットワークを設定しようとするサービスが他に動いていないことを確認しなければなりません。事実、ネットワーキングサービスが複数動いていると、互いに干渉してしまいます。現在動作中のサービスの完全なリストは systemctl --type=service で見られます。衝突の恐れのあるサービスは停止してください。NetworkManager サービスを有効化する方法は #設定 を見てください。
  • systemd-resolved起動されていない場合、エラーメッセージがログに溢れ始めます。詳細は #Unit dbus-org.freedesktop.resolve1.service not found を見てください。

追加のインターフェイス

モバイルブロードバンドサポート

NetworkManager はモバイルブロードバンド接続のサポートに ModemManager を使用します。

modemmanagerusb_modeswitchインストールしてください。その後、ModemManager.service有効化し、起動してください。

ModemManager を認識させるために NetworkManager.service再起動する必要がある場合があります。サービスを再起動し、モデムを挿し直せば、認識されるはずです。

フロントエンド (例えば nm-connection-editor) から接続を追加し、接続タイプにモバイルブロードバンドを選択してください。ISP と料金プランを選んだら、APN とその他の設定が mobile-broadband-provider-info にある情報で自動的に書き込まれるはずです。

PPPoE / DSL サポート

PPPoE / DSL サポートに関しては rp-pppoeインストールしてください。PPPoE 接続を追加するには、nm-connection-editor を使って新しい DSL/PPPoE 接続を追加してください。

VPN サポート

NetworkManager 1.16 から WireGuard のネイティブなサポートが追加されました。必要なのは wireguard カーネルモジュールだけです。詳細は NetworkManager のブログ記事の WireGuard を見てください。

その他の VPN タイプに対するサポートはプラグインなシステムをベースとしています。以下のパッケージで提供されています:

警告: VPN サポートに関連するバグが大量に存在しています。デーモンプロセスのオプションが GUI から適切に設定されていることを確認し、パッケージのリリースの度にダブルチェックしてください。
ノート:
  • VPN 使用時に DNS 解決を完全に機能させるには、条件付きフォワーディングをセットアップする必要があります。
  • これらのプラグインは、ドキュメント化されたコマンドラインインターフェイスが存在しなかったり、アプレットが実行されていないと全く動作しなかったりする場合があります。通常のデスクトップ環境を使用している場合には問題になりません。通常とは異なるものを使用している場合は、接続を設定したりアクティブ化したりする際に必要なダイアログが表示されるようにするために #nm-applet を実行するべきです。[1]

使い方

NetworkManager には nmcli(1)nmtui(1) が付属しています。

nmcli 例

近くの Wi-Fi ネットワークを一覧表示します:

$ nmcli device wifi list

Wi-Fi ネットワークに接続します:

$ nmcli device wifi connect SSID_または_BSSID password パスワード

非表示の Wi-Fi ネットワークに接続します:

$ nmcli device wifi connect SSID_または_BSSID password パスワード hidden yes

wlan1 インターフェイスで Wi-Fi に接続します:

$ nmcli device wifi connect SSID_または_BSSID password パスワード ifname wlan1 プロファイル名

インターフェイスを切断します:

$ nmcli device disconnect ifname eth0

名前、UUID、タイプ、バッキングデバイスを含む接続のリストを取得します:

$ nmcli connection show

接続を有効にします (つまり、既存のプロファイルでネットワークに接続します):

$ nmcli connection up 名前_または_uuid

接続を削除します:

$ nmcli connection delete 名前_または_uuid

ネットワークデバイスとその状態のリストを表示します:

$ nmcli device

Wi-Fi をオフにします:

$ nmcli radio wifi off

接続を編集する

設定の包括的なリストについては、nm-settings(5) を参照してください。

まず、接続のリストを取得する必要があります:

$ nmcli connection
NAME                UUID                                  TYPE      DEVICE
有線接続 2          e7054040-a421-3bef-965d-bb7d60b7cecf  ethernet  enp5s0
有線接続 1          997f2782-f0fc-301d-bfba-15421a2735d8  ethernet  enp0s25
MY-HOME-WIFI-5G     92a0f7b3-2eba-49ab-a899-24d83978f308  wifi       --

ここでは、後で使用する接続 ID として最初の列を使用できます。この例では、有線接続 2 を接続 ID として選択します。

作成後に接続 有線接続 2 を設定するには、次の3つの方法があります:

nmcli 対話型エディタ
nmcli connection edit '有線接続 2'
使用法はエディタから十分に文書化されています。
nmcli コマンドラインインターフェイス
nmcli connection modify '有線接続 2' 設定.プロパティ 。使用方法については nmcli(1) を参照してください。例えば、nmcli connection modify '有線接続 2' ipv4.route-metric 200 コマンドを使用して、IPv4 ルートメトリックを 200 に変更できます。

設定を削除するには、次のように空のフィールド ("") を渡します:

nmcli connection modify '有線接続 2' 設定.プロパティ ""
接続ファイル
/etc/NetworkManager/system-connections/ で、対応する 有線接続 2.nmconnection ファイルを変更します。
nmcli connection reload で設定ファイルをリロードすることを忘れないでください。

フロントエンド

デスクトップ環境と統合するために、ほとんどのユーザはアプレットをインストールしたいと考えるでしょう。アプレットはネットワークの選択や設定を容易にするだけでなく、機密情報をセキュアに保存するために必要なエージェントも提供します。様々なデスクトップ環境は独自のアプレットを持っています。デスクトップ環境に独自のアプレットが存在しない場合、#nm-applet を使用することもできます。

GNOME

GNOME にはツールが内蔵されており、ネットワーク設定からアクセス可能です。

KDE Plasma

plasma-nm パッケージをインストールしてください。その後、パネルオプション > ウィジェットを追加 > ネットワーク で KDE タスクバーにアプレットを追加してください。

nm-applet

network-manager-applet は、システムトレイのある Xorg 環境で機能する GTK 3 フロントエンドです。

接続に関する機密情報 (Wi-Fi のパスワードなど) を保存するには、Secret Service D-Bus API を実装しているアプリケーション (GNOME/KeyringKDE WalletKeePassXC など) をインストールし設定してください。

接続の設定で Make available to other users チェックボックスオプションを有効化すると、NetworkManager はその接続のパスワードを平文で保存することに注意してください。とはいえ、パスワードが含まれるファイルは root (及び nm-applet を通して他のユーザ) からしかアクセスできません。#Wi-Fi パスワードの暗号化 を見てください。

trayerstalonetray を使うことで、システムトレイ無しで nm-applet を実行することができます。例えば、以下のようなスクリプトをパスに追加することができます:

nmgui
#!/bin/sh
nm-applet    2>&1 > /dev/null &
stalonetray  2>&1 > /dev/null
killall nm-applet

stalonetray のウィンドウを閉じると、nm-applet も閉じます。なので、ネットワークの設定を終えたら余分なメモリが消費されることはありません。

このアプレットは、Wi-Fi ネットワークの接続や切断などのイベントの通知を表示することができます。これらの通知を表示させるには、通知サーバがインストールされている必要があります (デスクトップ通知 を見てください)。アプレットを通知サーバ無しで使うと、標準出力や標準エラー出力にメッセージが表示され、最悪、アプレットがハングするかもしれません。[2] を参照してください。

通知を無効化した状態で nm-applet を実行するには、アプレットを以下のコマンドで起動してください:

$ nm-applet --no-agent
ヒント: nm-applet自動起動デスクトップファイルによって自動的に起動されるかもしれません。そのような場合に --no-agent オプションを追加するには、デスクトップファイルの Exec 行を変更してください。つまり:
Exec=nm-applet --no-agent
警告: i3 では、nm-applet が --no-agent オプションで起動された場合、パスワード入力ダイアログが表示されないため、アイテムリストをクリックして新しい暗号化された Wi-Fi ネットワークに接続することができなくなります。journal には no secrets: No agents were available for this request と出力されます。

Appindicator

バージョン 1.18.0 から、Appindicator のサポートが公式の network-manager-applet パッケージで利用可能になりました。nm-applet を Appindicator の環境で使うには、アプレットを以下のコマンドで起動してください:

$ nm-applet --indicator

networkmanager-dmenu

フロントエンドのもう一つの選択肢は networkmanager-dmenu-gitAUR です。これは、NetworkManager の接続を nm-applet ではなく dmenurofi で管理する小さなスクリプトです。このスクリプトには必須の機能が全て揃っています。例えば: NetworkManager の既存の Wi-Fi 接続や有線接続に接続する、新しい Wi-Fi 接続に接続する、必要に応じてパスフレーズを要求する、既存の VPN 接続に接続する、ネットワークを有効化/無効化する、nm-connection-editor GUI を起動する、Bluetooth ネットワークに接続する。

設定

NetworkManager を適切に実行させるには、いくつか追加の手順が必要です。ネットワーク設定#ホスト名の設定 で説明されているように、/etc/hosts が設定されていることを確認してください。

NetworkManager のグローバルな設定ファイルは /etc/NetworkManager/NetworkManager.conf です。追加の設定ファイルは /etc/NetworkManager/conf.d/ に置くことができます。通常、グローバルなデフォルト値に対して設定を行う必要はありません。

設定ファイルを編集したら、以下のコマンドで変更を適用することができます:

# nmcli general reload

NetworkManager-wait-online

NetworkManager.service を有効化すると、NetworkManager-wait-online.service も有効化されます。NetworkManager-wait-online.service は oneshot なシステムサービスで、ネットワークが構成されるまで待機します。このサービスには WantedBy=network-online.target が含まれているため、このサービスが終了するのは、network-online.target 自体が有効化されている時か、あるいは network-online.target が他のユニットによって実行された時のみです。systemd#ネットワークが稼働した後にサービスを実行する も参照してください。

デフォルトでは、NetworkManager-wait-online.service は、ネットワーク接続が確立されるのを待つ (nm-online(1) を参照) のではなく、NetworkManager の起動が完了するのを待ちます。ネットワークの準備が整う前に NetworkManager-wait-online.service が終了してしまってブート時に一部のサービスが失敗してしまう場合、NetworkManager-wait-online.service ユニットを拡張し、ExecStart 行から -s を削除してください:

[Service]
ExecStart=
ExecStart=/usr/bin/nm-online -q

ただし、これにより他の問題が発生する可能性があることに注意してください。

一部のケースで、タイムアウトの設定が短すぎるために、このサービスの起動が失敗してしまう場合があります。サービスを編集して NM_ONLINE_TIMEOUT60 からより大きい値に変更してください。

PolicyKit のパーミッションをセットアップする

デフォルトでは、アクティブなローカルセッションのユーザは全員パスワード無しでほぼ全てのネットワーク設定を変更することができます。セッションの種類を確認する方法については、一般的なトラブルシューティング#セッションのパーミッション を見てください。ほとんどの場合、特に設定しなくても全て動作するはずです。

一部のアクション (システムのホスト名を変更するなど) においては、管理者のパスワードが必要です。そのような場合、自身のユーザを wheel グループに追加し、パスワードのプロンプトを表示する Polkit の認証エージェントを実行する必要があります。

リモートセッションの場合 (例えば、ヘッドレス VNC)、NetworkManager を使用するために必要な特権を得る方法は複数あります:

  1. 自身を wheel グループに追加する。アクションの度にパスワードを入力する必要があります。注意点として、wheel グループに追加すると他の権限 (root パスワードを入力せずに sudo を実行できるなど) も付与される場合があります。
  2. 自身を network グループに追加し、以下の内容で /etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules を作成する:
    polkit.addRule(function(action, subject) {
      if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("network")) {
        return polkit.Result.YES;
      }
    });
    
    network グループ内の全ユーザがパスワード無しでネットワークの追加と削除を行えるようになります (これは、Polkit 認証エージェントを実行する必要がないことを意味します。なので、この方法は SSH セッションでも使えます。)。

プロクシ設定

NetworkManager は直接プロクシ設定を扱いませんが、GNOMEKDE を使っている場合、NetworkManager の情報を使ってプロクシ設定を管理する proxydriverAUR を使うことができます。

proxydriver でプロクシ設定を変更できるようにするには、GNOME スタートアッププロセスの一部として、次のコマンドを実行する必要があります (GNOME#自動起動 を参照):

$ xhost +si:localuser:ユーザ名

参照: プロキシ設定

接続の確認

NetworkManager は、ネットワークに接続した後にウェブサーバへの接続を試みて、キャプティブポータルなどが存在しないか確認します。デフォルトの接続先ホスト (/usr/lib/NetworkManager/conf.d/20-connectivity.conf で設定されています) は ping.archlinux.org (redirect.archlinux.org の CNAME エイリアス) です。別のウェブサーバを使う、または接続チェックを無効化するには、/etc/NetworkManager/conf.d/20-connectivity.conf を作成してください (NetworkManager.conf(5) § CONNECTIVITY SECTION を参照)。以下は、GNOME のサーバを使用する例です (GNOME を使用する必要はありません):

/etc/NetworkManager/conf.d/20-connectivity.conf
[connectivity]
uri=http://nmcheck.gnome.org/check_network_status.txt

NetworkManager の接続チェックを無効化するには、以下の設定を使用してください。これは、接続チェックを無効化する VPN に接続している場合に便利です。

/etc/NetworkManager/conf.d/20-connectivity.conf
[connectivity]
enabled=false
ノート: 自動的な接続チェックはプライバシーの問題を引き起こす可能性がありますが、Arch Linux のデフォルトの接続先 URL は如何なるアクセスも記録しません。[3] [4] を参照してください。

キャプティブポータル

キャプティブポータルが存在している場合、デスクトップマネージャが、資格情報を求めるウィンドウを自動的に開く場合があります。あなたのデスクトップ環境がこれを行わない場合、capnet-assist パッケージを使用することができます (しかし現在、このパッケージの NetworkManager ディスパッチャスクリプトは壊れています)。あるいは、NetworkManager ディスパッチャスクリプトを以下の内容で作成することもできます:

/etc/NetworkManager/dispatcher.d/90-open_captive_portal
#!/bin/sh -e
# Script to dispatch NetworkManager events
#
# Runs shows a login webpage on walled garden networks.
# See NetworkManager(8) for further documentation of the dispatcher events.

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

if [ -x "/usr/bin/logger" ]; then
    logger="/usr/bin/logger -s -t captive-portal"
else
    logger=":"
fi

wait_for_process() {
    PNAME=$1
    while [ -z "$(/usr/bin/pgrep $PNAME)" ]; do
        sleep 3;
    done
}

#launch the browser, but on boot we need to wait that nm-applet starts
start_browser() {
    local user="$1"
    local display="$2"

    export DISPLAY="$display"
    wait_for_process nm-applet

    export XAUTHORITY="/home/$user/.Xauthority"

    $logger "Running browser as '$user' with display '$display' to login in captive portal"
    sudo -u "$user" --preserve-env=DISPLAY,XAUTHORITY -H xdg-open http://capnet.elementary.io 2>&1 > /dev/null
}

# Run the right scripts
case "$2" in
    connectivity-change)
    $logger -p user.debug "dispatcher script triggered on connectivity change: $CONNECTIVITY_STATE"
    if [ "$CONNECTIVITY_STATE" = "PORTAL" ]; then
        # Match last column of who's output with ' :[at least one digit] '
        who | awk '$NF ~ /\(:[0-9]+\)/ { print $1 " " substr($NF, 2, length($NF)-2) };' | \
        while read user display; do
            start_browser $user $display || $logger -p user.err "Failed for user: '$user' display: '$display'"
        done
    fi
    ;;
    *)
    # In a down phase
    exit 0
    ;;
esac

このスクリプトを実行するには、NetworkManager.service再起動するか、システムを再起動する必要があります。そうしたら、ディスパッチャスクリプトはキャプティブポータルを検知するとログインウィンドウを開くはずです。

別の解決策は Google Chrome ベースの captive-browser-gitAUR です。

DHCP クライアント

デフォルトでは、NetworkManager は自身の内蔵 DHCP クライアントを使用します。内蔵 DHCPv4 プラグインは nettools の n-dhcp4 ライブラリをベースにしていますが、内蔵 DHCPv6 プラグインは systemd-networkd ベースのコードから作られています。

別の DHCP クライアントを使用するには、以下の代替実装のどれかをインストールしてください:

DHCP クライアントのバックエンドを変更するには、/etc/NetworkManager/conf.d/ 内に設定ファイルを作成して、そのファイル内で main.dhcp=DHCP_クライアント名 オプションを設定してください。例えば:

/etc/NetworkManager/conf.d/dhcp-client.conf
[main]
dhcp=dhclient
ノート:
  • NetworkManger は IPv6 に dhcpcd を使用することをサポートしていません。NetworkManager issue #5 を参照してください。dhcpcd が DHCP クライアントとして設定されている場合、NetworkManager は DHCPv6 に対しては内臓の DHCP クライアントを使用します。
  • dhclient パッケージと dhcpcd パッケージに同梱されている systemd ユニットは有効化しないでください。NetworkManager と競合してしまいます。詳細は #インストール セクションに書かれているノートを見てください。

DNS の管理

NetworkManager の DNS 管理については、GNOME プロジェクトの wiki ページ Projects/NetworkManager/DNS で説明されています。

DNS キャッシングと条件付きフォワーディング

NetworkManager には、dnsmasq または systemd-resolved を使用して DNS キャッシングと条件付きフォワーディングを有効化するプラグインが存在します (以前は、"条件付きフォワーディング" は NetworkManager のドキュメントで "split DNS" と呼ばれていました)。このセットアップには、DNS ルックアップがキャッシュされるので名前解決の時間が短縮され、VPN ホストの DNS ルックアップが、関連する VPN の DNS サーバに転送されるという長所があります。これは、複数の VPN に接続する場合に特に便利です。

ノート: /etc/resolv.conf/run/systemd/resolve/stub-resolv.conf/run/systemd/resolve/resolv.conf/lib/systemd/resolv.conf/usr/lib/systemd/resolv.conf へのシンボリックリンクである場合、NetworkManager は systemd-resolved を自動的に選択します。dnsmasq を使用するには、まずシンボリックリンクを削除する必要があります。その後で、NetworkManager を再起動してください。
dnsmasq

dnsmasq がインストールされていることを確認してください。そして、/etc/NetworkManager/conf.d/ 内の設定ファイル (無い場合は作成してください) で main.dns=dnsmasq を設定してください:

/etc/NetworkManager/conf.d/dns.conf
[main]
dns=dnsmasq

次に、nmcli general reload を root として実行してください。NetworkManager は自動的に dnsmasq を起動し、/etc/resolv.conf127.0.0.1 を追加します。元の DNS サーバは /run/NetworkManager/no-stub-resolv.conf を見れば分かります。dnsmasq が使用されているかどうかは、drill example.com で同じ DNS ルックアップを2度行ってサーバとクエリの時間を計測すれば確認できます。

ノート:
  • dnsmasq.service を起動したり、/etc/dnsmasq.conf を編集したりする必要はありません。NetworkManager は、その systemd サービスを使わず、さらに dnsmasq のデフォルトの設定ファイルを読み込まずに dnsmasq を起動します。
  • NetworkManager によって起動された dnsmasq インスタンスは 127.0.0.1:53 にバインドされます。なので、これと同じアドレスとポートで他のソフトウェア (dnsmasq.service も含む) を実行することはできません。
dnsmasq のカスタム設定

/etc/NetworkManager/dnsmasq.d/ 内に設定ファイルを作成することで、dnsmasq のカスタム設定を作成することができます。例えば、DNS キャッシュ (RAM 内に格納されます) のサイズを変更するには:

/etc/NetworkManager/dnsmasq.d/cache.conf
cache-size=1000

設定ファイルの構文は以下のコマンドで確認できます:

$ dnsmasq --test --conf-file=/dev/null --conf-dir=/etc/NetworkManager/dnsmasq.d

利用可能な全てのオプションについては dnsmasq(8) を参照してください。

IPv6
この記事またはセクションの正確性には問題があります。
理由: NetworkManager は ::1/etc/resolv.conf に追加しないため、以下の方法では問題を解決できません。@::1 を手動で drill に渡さない限り、Error: error sending query: No (valid) nameservers defined in the resolver というエラーで失敗します。 (議論: トーク:NetworkManager#)

NetworkManager で dnsmasq を有効化すると、IPv6 のみの DNS ルックアップ (つまり、drill -6 [hostname]) が機能しなくなる場合があります (しかし、それ以外では機能する)。この問題を解決するには、以下のファイルを作成し、IPv6 ループバックもリッスンするように dnsmasq を設定してください:

/etc/NetworkManager/dnsmasq.d/ipv6-listen.conf
listen-address=::1

さらに、dnsmasq は上流の IPv6 DNS を優先しません。残念ながら、NetworkManager も IPv6 DNS を優先しません (Ubuntu Bug)。回避策は、NetworkManager の設定で IPv6 DNS を無効化することです (IPv4 DNS があると仮定します)。

DNSSEC

NetworkManager によってデフォルトで開始される dnsmasq インスタンスは、--proxy-dnssec オプションを渡して開始されるため、DNSSEC を検証しません。なので、上流の DNS サーバからの DNSSEC 情報を何でも信頼します。

dnsmasq に DNSSEC を適切に検証させるには、以下の設定ファイルを作成してください (これにより、DNSSEC をサポートしない名前サーバでの DNS 解決が機能しなくなります):

/etc/NetworkManager/dnsmasq.d/dnssec.conf
conf-file=/usr/share/dnsmasq/trust-anchors.conf
dnssec
systemd-resolved

NetworkManager は systemd-resolved を DNS リゾルバ及び DNS キャッシュとして使用することができます。まず先に、systemd-resolved が適切に設定されていて、systemd-resolved.service開始されていることを確認してください。

/etc/resolv.conf/run/systemd/resolve/stub-resolv.conf/run/systemd/resolve/resolv.conf/usr/lib/systemd/resolv.conf へのシンボリックリンクである場合、systemd-resolved は自動的に使用されます。

/etc/NetworkManager/conf.d/ 内の設定ファイルで main.dns=systemd-resolved を設定することで、これを明示的に有効化することもできます:

/etc/NetworkManager/conf.d/dns.conf
[main]
dns=systemd-resolved
openresolv サブスクライバのある DNS リゾルバ

ローカルの DNS リゾルバへのサブスクライバ (加入者) が openresolv に存在している場合、サブスクライバをセットアップし、openresolv を使用するように NetworkManager を設定してください

NetworkManager は単一の "インターフェイス" を resolvconf に広告するため、2つの NetworkManager 接続間で条件付きフォワーディングを行うのは不可能です。NetworkManager issue 153 を参照してください。

この問題は /etc/resolvconf.confprivate_interfaces="*" を設定すれば、部分的に緩和できます [5]。検索ドメインリストに無いドメインのクエリは、フォワーディングされません。そのようなクエリは、他の DNS サーバにフォワーディングされるか、DNS ルートサーバから回帰的に解決されるなどして、ローカルのリゾルバの設定に従って処理されます。

カスタム DNS サーバ

カスタムグローバル DNS サーバの設定

全ての接続に対して DNS サーバを設定するには、NetworkManager.conf(5) 内で [global-dns-domain-*] というセクション内で servers=serveripaddress1,serveripaddress2,serveripaddress3 という構文を使ってDNS サーバを指定してください。例えば:

/etc/NetworkManager/conf.d/dns-servers.conf
[global-dns-domain-*]
servers=::1,127.0.0.1
ノート:
接続でのカスタム DNS サーバの設定
接続でのカスタム DNS サーバの設定 (GUI)

セットアップ方法は、使用するフロントエンドの種類に依ります。手順としては通常、アプレットを右クリックし、プロファイルを編集 (または作成) し、DHCP タイプに 自動 (アドレスのみ) (Automatic (specify addresses)) を選択するというものです。DNS アドレスを入力する必要があり、通常、127.0.0.1, DNS-server-one, ... という形です。

接続でのカスタム DNS サーバの設定 (nmcli / 設定ファイル)

接続の設定dns フィールド (及び、関連する dns-searchdns-options) を使うことで、接続毎に DNS サーバをセットアップすることができます。

methodauto に設定されている場合 (DHCP を使用する場合)、ignore-auto-dnsyes に設定する必要があります。

/etc/resolv.conf

NetworkManager の /etc/resolv.conf 管理モードは、main.rc-manager で設定されます。networkmanager パッケージはこれを、上流のデフォルトである auto ではなく、symlink に設定します。設定と値は NetworkManager.conf(5) man ページでドキュメント化されています。

ヒント: openresolv を使用すると、NetworkManager は、resolvconf によってサポートされている他のソフトウェアと共存できます。例えば、openresolv が subscriber を持つローカル DNS キャッシングおよび分割 DNS リゾルバを実行できます。openresolv で NetworkManager を使用する場合、条件付きフォワーディングはまだ完全にサポートされていないことに注意してください。

また、NetworkManager は、ネットワークの変更後に /etc/resolv.conf を変更するために使用できる、いわゆるディスパッチャスクリプトを介したフックも提供します。詳細は #ネットワークサービスで NetworkManager dispatcher を使用するNetworkManager(8) を参照してください。

ノート:
  • NetworkManager が dnsmasq または systemd-resolved のいずれかを使用するように設定されている場合、適切なループバックアドレスが /etc/resolv.conf に書き込まれます。
  • NetworkManager が書き込む resolv.conf、または /etc/resolv.conf に書き込む内容は、/run/NetworkManager/resolv.conf で見られます。
  • 取得したネームサーバーと検索ドメインを含む resolv.conf ファイルは、/run/NetworkManager/no-stub-resolv.conf にあります。
管理対象外の /etc/resolv.conf

NetworkManager が /etc/resolv.conf に干渉しないようにするには、/etc/NetworkManager/conf.d/ の設定ファイルで main.dns=none を設定してください:

/etc/NetworkManager/conf.d/dns.conf
[main]
dns=none
ヒント: NetworkManager が DNS 設定を systemd-resolved に送信しないように、main.systemd-resolved=false を設定することもできます。
ノート: main.dns=none を使うのではなく、dnsmasqsystemd-resolved などの他の DNS バックエンドを使用するように NetworkManager を設定する方法については、#DNS キャッシングと条件付きフォワーディング を見てください。

その後、/etc/resolv.conf が壊れたシンボリックリンクになり、削除する必要が生じるかもしれません。その場合、新しい /etc/resolv.conf ファイルを作成してください。

openresolv を使う
ノート: NetworkManager は、systemd-resolvconf によって提供されている systemd-resolved の resolvconf インターフェイスの使用をサポートしていません (resolvectl(1) § COMPATIBILITY WITH RESOLVCONF(8))。

openresolv を使用するように NetworkManager を設定するには、/etc/NetworkManager/conf.d/ 内の設定ファイルで main.rc-manager=resolvconf を設定してください:

/etc/NetworkManager/conf.d/rc-manager.conf
[main]
rc-manager=resolvconf

ファイアウォール

現在の接続に基づいて firewalld ゾーンを割り当てることができます。たとえば、職場では制限の厳しいファイアウォールを使用し、自宅では制限の少ないファイアウォールを使用します。

これは、NetworkManager dispatcher を使用して行うこともできます。

ネットワークサービスで NetworkManager dispatcher を使用する

NetworkManager がインターフェイスを立ち上げるまで実行したくないようなネットワークサービスはたくさんあります。NetworkManager には、(例えば NFSSMBNTPd を使用する時などに) ネットワークに接続したらサービスを開始し、切断したらサービスを停止する機能があります。

この機能を有効化するには、NetworkManager-dispatcher.service有効化し、かつ起動する必要があります。

このサービスを有効化したら、/etc/NetworkManager/dispatcher.d 内にスクリプトを追加することができます。

スクリプトは root によって所有されていなければなりません。ディスパッチャは、root によって所有されていないスクリプトを実行しません。セキュリティを高めるために、スクリプトのグループ所有権も root に設定してください:

# chown root:root /etc/NetworkManager/dispatcher.d/10-script.sh

スクリプトファイルを実行可能にするのを忘れないでください。

スクリプトは、ネットワークへの接続時にはアルファベット順で実行され、切断時には逆アルファベット順で実行されます。実行される順番を保証するために、スクリプトの名前の前に数字を置くのが一般的です (例: 10-portmap30-netfs。こうすることで、NFS がマウントを試みる前に、portmapper が立ち上がります)。

スクリプトは以下の引数を受け取ります:

  • インターフェイス名: 例えば eth0
  • アクション: updownvpn-upvpn-down など (完全なリストは NetworkManager-dispatcher(8) を見てください)
警告: 外部ネットワークや公開ネットワークに接続する場合は、どのサービスを起動するのか、どのサーバにサービスは接続できるのかに注意してください。公開ネットワークに接続する際に間違ったサービスを起動してしまうとセキュリティホールを作ってしまう可能性があります。

ディスパッチャのタイムアウトを防ぐ

上記がうまくいっているのであれば、このセクションは関係しません。しかし、ディスパッチャのスクリプトの実行に時間が掛かってしまうという一般的な問題があります。最初は、3 秒だけの内部タイムアウトが使用されていました。呼ばれたスクリプトが時間内に完了しないと、そのスクリプトは kill されていました。後に、タイムアウトは約 20 秒に延長されました (詳細は Bugtracker を参照)。タイムアウトのせいで依然として問題が発生する場合は、NetworkManager-dispatcher.service に対するドロップインファイルを使って、終了後もアクティブ状態を維持するように設定することで問題を回避できます:

/etc/systemd/system/NetworkManager-dispatcher.service.d/remain_after_exit.conf
[Service]
RemainAfterExit=yes

その後、変更した NetworkManager-dispatcher サービスを開始し、かつ有効化してください。

警告: RemainAfterExit 行を追加すると、ディスパッチャが閉じられなくなります。残念ながら、ディスパッチャは、スクリプトを再び実行する前に閉じなければなりません。先の設定により、ディスパッチャはタイムアウトしませんが、閉じられもしません。これは、スクリプトはブート毎に 1 度しか実行されないことを意味します。なので、タイムアウトが実際に問題を起こしていない限り、この行を追加しないでください。

ディスパッチャの例

sshfs でリモートディレクトリをマウントする

このスクリプトは非常に制限された環境内で実行されるため、SSH エージェントに接続するためには SSH_AUTH_SOCK 変数をエクスポートする必要があります。これを行う方法はいくつかあります (詳細はこのメッセージを見てください)。以下の例は GNOME Keyring を使って動作し、キーリングがまだアンロックされていない場合はパスワードを要求します。NetworkManager がログイン時に自動的にネットワークに接続するような状況では、gnome-keyring がまだ開始されておらず、変数のエクスポートが失敗する可能性が高いです (そのために sleep コマンドがあります)。接続とマッチする UUID は、nmcli connection statusnmcli connection list を実行すれば確認できます。

#!/bin/sh
USER='username'
REMOTE='user@host:/remote/path'
LOCAL='/local/path'

interface=$1 status=$2
if [ "$CONNECTION_UUID" = "uuid" ]; then
  case $status in
    up)
      # sleep 10
      SSH_AUTH_SOCK=$(find /tmp -maxdepth 1 -type s -user "$USER" -name 'ssh')
      export SSH_AUTH_SOCK
      su "$USER" -c "sshfs $REMOTE $LOCAL"
      ;;
    down)
      fusermount -u "$LOCAL"
      ;;
  esac
fi

SMB 共有をマウントする

SMB 共有は特定のネットワークや場所 (例えば自宅) でしか利用できないことがあります。ディスパッチャを使えば、現在の場所で利用可能な SMB 共有のみをマウントすることができます。

以下のスクリプトは、特定のネットワークに接続していることを確認し、それに応じて共有をマウントします:

/etc/NetworkManager/dispatcher.d/30-mount-smb.sh
#!/bin/sh

# 接続 UUID はターミナルで "nmcli connection show" を実行して確認してください。
# 全種類の NetworkManager 接続がサポートされています: 無線、VPN、有線など。
if [ "$2" = "up" ]; then
  if [ "$CONNECTION_UUID" = "uuid" ]; then
    mount /your/mount/point & 
    # add more shares as needed
  fi
fi

以下のスクリプトは、ソフトウェアが特定のネットワークからの切断を開始する前に、全ての SMB 共有をアンマウントします:

/etc/NetworkManager/dispatcher.d/pre-down.d/30-umount-smb.sh
#!/bin/sh

if [ "$CONNECTION_UUID" = "uuid" ]; then
  umount -a -l -t cifs
fi
ノート: このスクリプトは上記の通り pre-down.d サブディレクトリに配置してください。さもないと、接続状態が変わる度に毎回、全ての共有がアンマウントされてしまいます。

以下のスクリプトは、特定のネットワークから予期せずに切断されてしまった時に、全ての SMB 共有のアンマウントを試みます:

/etc/NetworkManager/dispatcher.d/40-umount-smb.sh
#!/bin/sh

if [ "$CONNECTION_UUID" = "uuid" ]; then
  if [ "$2" = "down" ]; then
    umount -a -l -t cifs
  fi
fi
ノート:
  • NetworkManager 0.9.8 から、pre-downdown のイベントはシャットダウン時や再起動時に実行されなくなりました。詳細はこのバグレポートを見てください。
  • 上記 2 つの umount スクリプトでは、マウントに実際にアクセスしているアプリケーションが 'ハング' してしまう傾向が依然としてあります。

代替案は、NFS#NetworkManager dispatcher を使う にあるスクリプトを使うことです:

/etc/NetworkManager/dispatcher.d/30-smb.sh
#!/bin/sh

# 接続 UUID はターミナルで "nmcli connection show" を実行して確認してください。
# 全種類の NetworkManager 接続がサポートされています: 無線、VPN、有線など。
WANTED_CON_UUID="CHANGE-ME-NOW-9c7eff15-010a-4b1c-a786-9b4efa218ba9"

if [ "$CONNECTION_UUID" = "$WANTED_CON_UUID" ]; then
    
    # スクリプトパラメータ $1: ネットワークインターフェイス名 (未使用)
    # スクリプトパラメータ $2: ディスパッチされたイベント
    
    case "$2" in
        "up")
            mount -a -t cifs
            ;;
        "down"|"pre-down"|"vpn-pre-down")
            umount -l -a -t cifs >/dev/null
            ;;
    esac
fi
ノート: このスクリプトは noauto オプションのマウントは無視します。これらのマウントをディスパッチャが管理できるようにするには、このオプションを取り除くか、auto を使ってください。

pre-down イベントをキャッチできるようにするために /etc/NetworkManager/dispatcher.d/pre-down/ 内にシンボリックリンクを作成してください:

# ln -s ../30-smb.sh /etc/NetworkManager/dispatcher.d/pre-down.d/30-smb.sh

NFS 共有をマウントする

NFS#NetworkManager dispatcher を使う を見てください。

ディスパッチャを使って、LAN ケーブルが挿入されているかに応じて Wi-Fi を自動的にオンオフする

アイディアとしては、LAN ケーブルが抜かれた時にのみ Wi-Fi をオンにし (例えば、ラップトップのドックから取り外された時など)、LAN ケーブルが挿入されたら Wi-Fi を自動的に無効化します。

以下のディスパッチャスクリプト[6]を作成してください。LAN_interface の部分はあなたの LAN インターフェイスに置き換えてください。

コンピュータがオンの時に LAN インターフェイスが接続され、コンピュータがオフの時に切断された場合のフェイルセーフがあることに注意してください。このフェイルセーフがないと、コンピュータがオンに戻っても Wi-Fi は依然としてオフであり、LAN インターフェイスが切断されていれば、ネットワーク接続が利用できなくなってしまいます。

/etc/NetworkManager/dispatcher.d/wlan_auto_toggle.sh
#!/bin/sh

if [ "$1" = "LAN_interface" ]; then
    case "$2" in
        up)
            nmcli radio wifi off
            ;;
        down)
            nmcli radio wifi on
            ;;
    esac
elif [ "$(nmcli -g GENERAL.STATE device show LAN_interface)" = "20 (unavailable)" ]; then
    nmcli radio wifi on
fi
ノート: nmcli を使えばインターフェイスの一覧を得られます。イーサネット (LAN) インターフェイスの名前は en で始まります (例: enp0s5)。

ディスパッチャを使って、ネットワーク接続が確立された後に VPN に接続する

この例では、特定の Wi-Fi ネットワークに接続した後に、以前定義された VPN 接続に自動的に接続したいと思います。最初にすべきことは、そのネットワークに接続した後にすることを定義するディスパッチャスクリプトを作成することです。

ノート: このスクリプトでは iwgetid を使うために wireless_tools を必要とします。
/etc/NetworkManager/dispatcher.d/vpn-up
#!/bin/sh
VPN_NAME="NetworkManager に定義されている VPN 接続の名前"
ESSID="Wi-Fi ネットワークの ESSID (接続名ではない)"

interface=$1 status=$2
case $status in
  up|vpn-down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      nmcli connection up id "$VPN_NAME"
    fi
    ;;
  down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      if nmcli connection show --active | grep "$VPN_NAME"; then
        nmcli connection down id "$VPN_NAME"
      fi
    fi
    ;;
esac

全ての Wi-Fi ネットワークで VPN への接続を試みたい場合は、次の ESSID 定義を使用できます: ESSID=$(iwgetid -r)。スクリプトのパーミッションを適宜設定することを忘れないでください。

VPN の機密情報が保管される方法により、上記のスクリプトで VPN への接続しようとしても、NetworkManager-dispatcher.service が 'no valid VPN secrets' というエラーで失敗する場合があります。幸運なことに、スクリプトから VPN のパスワードにアクセスする方法は他にもあります。

1: それらの方法の1つでは、VPN 接続の設定ファイルを編集して、root からはアクセスできないキーリングではなく自身で機密情報を保存させるように NetworkManager を設定する必要があります: /etc/NetworkManager/system-connections/VPN接続の名前 を開き、password-flagssecret-flags1 から 0 に変更してください。

それだけではうまく行かない場合は、以下の内容で passwd-file を安全な場所にディスパッチャスクリプトと同じパーミッションと所有権で作成する必要があるかもしれません:

/path/to/passwd-file
vpn.secrets.password:パスワード

ファイルからパスワードを得られるようにするために、スクリプトは適宜変更する必要があります:

/etc/NetworkManager/dispatcher.d/vpn-up
#!/bin/sh
VPN_NAME="NetworkManager に定義されている VPN 接続の名前"
ESSID="Wi-Fi ネットワークの ESSID (接続名ではない)"

interface=$1 status=$2
case $status in
  up|vpn-down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      nmcli connection up id "$VPN_NAME" passwd-file /path/to/passwd-file
    fi
    ;;
  down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      if nmcli connection show --active | grep "$VPN_NAME"; then
        nmcli connection down id "$VPN_NAME"
      fi
    fi
    ;;
esac

2: あるいは、password-flags を変更して、設定ファイル内に vpn-secrets セクションを追加してパスワードを直接書き込むという方法もあります:

 [vpn]
 ....
 password-flags=0
 
 [vpn-secrets]
 password=パスワード
ノート: NetworkManager の接続エディタを再び開き、VPN のパスワード/機密情報を保存し直す必要があるかもしれません。

ディスパッチャを使って、VPN プロバイダの接続時に IPv6 を無効化する

多くの商用 VPN プロバイダーは IPv4 のみをサポートしています。つまり、IPv6 のトラフィックは全て VPN をバイパスし、事実上、使い物にならなくなります。ディスパッチャを使って、VPN に接続されている時は全ての IPv6 トラフィックを無効化することで、この問題を回避できます。

/etc/NetworkManager/dispatcher.d/10-vpn-ipv6
#!/bin/sh

case "$2" in
	vpn-up)
		echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
		;;
	vpn-down)
		echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6
		;;
esac

OpenNTPD

OpenNTPD#NetworkManager dispatcher を使う を参照してください。

systemd-timesyncd で DHCP 経由で受信した NTP サーバを動的に設定する

異なるネットワーク間 (例: 会社の LAN、自宅の Wi-Fi、その他の様々な Wi-Fi) でローミングする場合、timesyncd によって使用されている NTP サーバを DHCP によって提供されているものに設定したい場合があります。ただし、NetworkManager 自体は systemd-timesyncd と通信して NTP サーバを設定することはできません。

ディスパッチャを使うことで、この問題を回避できます。

systemd-timesyncd の設定ようのオーバーレイディレクトリ /etc/systemd/timesyncd.conf.d作成してください (まだ存在していない場合)。/etc/NetworkManager/dispatcher.d 内に以下を追加してください:

/etc/NetworkManager/dispatcher.d/10-update-timesyncd
#!/bin/sh

[ -z "$CONNECTION_UUID" ] && exit 0
INTERFACE="$1"
ACTION="$2"

case $ACTION in
up | dhcp4-change | dhcp6-change)
    [ -n "$DHCP4_NTP_SERVERS" ] || exit
    mkdir -p /etc/systemd/timesyncd.conf.d
    cat <<-THE_END >"/etc/systemd/timesyncd.conf.d/${CONNECTION_UUID}.conf"
        [Time]
        NTP=$DHCP4_NTP_SERVERS
    THE_END
    systemctl restart systemd-timesyncd.service
    ;;
down)
    rm -f "/etc/systemd/timesyncd.conf.d/${CONNECTION_UUID}.conf"
    systemctl restart systemd-timesyncd.service
    ;;
esac

NetworkManager が新しいネットワーク接続を設定する (ACTION=up) か、既存の接続の更新を取得する (ACTION=dhcp4-change または ACTION=dhcp6-change) 度に、接続データに NTP サーバ (DHCP4_NTP_SERVERS) に関する情報が含まれていると、接続固有のオーバーレイ設定ファイルが /etc/systemd/timesyncd.conf.d に書き込まれ、このファイルには、提供された NTP サーバ (1台または複数) の情報が記述されます。提供された NTP サーバが含まれます。接続が停止される (ACTION=down) と、接続固有のオーバーレイファイルは削除されます。systemd-timesyncd の設定が変更されるたびに、サービスは再起動され、更新された設定を取得します。NetworkManager で 2つ以上の接続を並行して管理する場合、updhcp4-changedhcp6-change、そして down アクションが任意の順序で来るかもしれないので、設定内の異なる NTP サーバ名が上書きされないように接続固有の設定ファイルを意図的に使用しています。

テスト

NetworkManager アプレットはログイン時にロードされるようになっているので、ほとんどのユーザにとって追加の設定は必要ないはずです。以前のネットワーク設定を無効化し、ネットワークから切断されているならば、NetworkManager が動作するかどうかをテストできます。まず始めに、NetworkManager.service起動してください。

一部のアプレットは、NetworkManager アプレットをアプリケーションメニューからロードできるようにするために、.desktop ファイルを提供しています。デスクトップファイルが提供されていない場合は、アプレットを使用するためのコマンドを見つけるか、アプレットをロードするために一度ログアウトして再度ログインする必要があります。アプレットが開始されれば、DHCP サーバを使って自動設定によるネットワーク接続のポーリングが開始されるでしょう。

awesome などの XDG 非互換のウィンドウマネージャで GNOME のアプレットを開始するには:

nm-applet --sm-disable &

固定 IP アドレスの場合は、NetworkManager にそのことを伝えなければなりません。手順としては通常、アプレットを右クリックし、'接続を編集する' ('Edit Connections') などのような項目を選択します。

ヒントとテクニック

Wi-Fi パスワードの暗号化

デフォルトでは、NetworkManager はパスワードを平文で /etc/NetworkManager/system-connections/ 内の設定ファイルに保存します。保存されているパスワードを表示するには、以下のコマンドを使ってください:

# grep -r '^psk=' /etc/NetworkManager/system-connections/

パスワードは root ユーザからファイルシステムでアクセス可能であり、さらに GUI (例: nm-applet) を通して設定にアクセスできるユーザからもアクセス可能です。

パスワードは、平文ではなく、キーリングの中で暗号化された形で保存するのが望ましいです。しかし、これの欠点は、それぞれのユーザで接続をセットアップしなけれならないことです。

キーリングを読み書きするために、利用可能なシークレットエージェントが存在していなければなりません。いかのどれかを使用できます:

  • nmcli--ask オプションを使う。
  • #フロントエンド に挙げられているグラフィカルインターフェイス

シークレットエージェントが利用できないと、no secrets: No agents were available for this request. というエラーで認証が失敗します。

GNOME Keyring を使う

以下の方法を使うには、GNOME Keyring のキーリングデーモンが開始されていて、キーリングがアンロックされている必要があります。

さらに、全ユーザのパスワードを保存しないように NetworkManager を設定する必要があります。GNOME の network-manager-applet を使って、ターミナルから nm-connection-editor を実行し、ネットワーク接続を選択し、編集 (Edit) をクリックし、Wi-Fi セキュリティー (Wi-Fi Security) タブを選択し、パスワード入力欄の右のアイコンをクリックして、このユーザーのパスワードのみ保存する (Store the password only for this user) にチェックを入れてください。

KDE Wallet を使う

KDE の plasma-nm を使う場合、アプレットをクリックし、右上の 設定 アイコンをクリックし、ネットワーク接続を選択し、一般設定 (General configuration) タブを選択し、すべてのユーザはこのネットワークに接続可能 (All users may connect to this network) のチェックを外してください。このオプションにチェックが入っていると、たとえキーリングデーモンが実行されていたとしても、パスワードが平文で保存されてしまいます。

以前このオプションにチェックが入っていて、後にチェックを外した場合、ファイルからパスワードを消すために reset オプションを使用する必要がある場合があります。あるいは、接続を削除し、再度セットアップしてください。

Wi-Fi でインターネット接続を共有する

数クリックでインターネット接続 (例: 3G、有線) を共有することができます。ただし、ファイアウォールはインターネット共有を妨害する場合があることに注意してください。

AP モードをサポートする Wi-Fi カードが必要になります。詳細は ソフトウェアアクセスポイント#Wi-Fi デバイスが AP モードをサポートしていること を見てください。

接続を共有できるようにするために dnsmasq パッケージをインストールしてください。NetworkManager は (dnsmasq.service とは独立に) 独自の dnsmasq インスタンスを DHCP サーバとして開始することに注意してください。これに関する注意事項は #dnsmasq を見てください。

共有された接続を作成してください:

  • アプレットをクリックし、新規 Wi-Fi ネットワークを作成 (Create new wireless network) を選んでください。
  • ウィザードに従ってください (WPA2 以上を選んでください。パスワードは 8 文字以上にしてください。さもないと失敗します)。
  • Wi-Fi モードとしてホットスポットかアドホックを選択してください。

これで、次回必要になるときのために接続は保存されます。

ノート: Android はアドホックネットワークへの接続をサポートしていません。Android と接続を共有するには、インフラストラクチャモードを使用してください (つまり、Wi-Fi モードを "ホットスポット" に設定する)。

イーサネットでインターネット接続を共有する

シナリオ: デバイスが Wi-Fi 経由でインターネットに接続されていて、イーサネットで他のデバイスとインターネット接続を共有したいと考えている場合。

要件:

  • 接続を共有できるようにするために dnsmasq パッケージと nm-connection-editor パッケージをインストールしてください。NetworkManager は (dnsmasq.service とは独立に) 独自の dnsmasq インスタンスを DHCP サーバとして開始することに注意してください。これに関する注意事項は #dnsmasq を見てください。
  • インターネットに接続されたデバイスとその他のデバイスが適切なイーサネットケーブルで接続されていること (これは通常、間をクロスオーバーケーブルやスイッチで繋ぐことを意味します)。
  • インターネット共有がファイアウォールによってブロックされていないこと。

手順:

  • ターミナルから nm-connection-editor を実行してください。
  • 新しいイーサネット接続を追加してください。
  • 何かわかりやすい名前を付けてください。例えば "Shared Internet"。
  • "IPv4 設定" ("IPv4 Settings") を開いてください。
  • "メソッド:" ("Method:") で "他のコンピューターへ共有" ("Shared to other computers") を選択してください。
  • 保存

これで、NetworkManager の有線接続に "Shared Internet" という新しいオプションができたはずです。

cron ジョブやスクリプトでネットワークが立ち上がっているか確認する

この記事またはセクションは情報が古くなっています。
理由: nm-tool は NetworkManager から削除されました [7]。代わりに nmcli を使用するべきです。 (Discuss)

一部の cron ジョブではネットワークが立ち上がっている必要があり、ネットワークが落ちている状態でそのようなジョブを実行したくない場合があります。そうするには、NetworkManager の nm-tool にクエリして、ネットワークの状態をチェックする if テストを追加してください。このテストは、何らかのインターフェイスが立ち上がっていれば成功し、インターフェイスが全て落ちている場合は失敗します。これは、ある時は有線接続されていて、ある時は無線で、またある時はネットワークから切断されているようなノート PC で便利です。

if [ $(nm-tool|grep State|cut -f2 -d' ') == "connected" ]; then
    # ネットワークがオンラインの時に実行したいコード
else
    # ネットワークがオフラインの時に実行したいコード (注記: この部分と上の else は任意です)
fi

これは、例えば F-Prot ウイルススキャナのシグネチャを更新するために fpupdate を実行する cron.hourly で便利です。また、nm-tool の出力の様々な部分を使えば、ネットワークを識別することもできます。例えば、アクティブなワイヤレスネットワークにはアスタリスクが付くので、ネットワーク名を grep して、その後でアスタリスクを grep しますs。

ブート時にシークレットを使ってネットワークに接続する

デフォルトでは、NetworkManager はシークレットを要求するネットワークにはブート時に自動的に接続しません。NetworkManager では、そのようなネットワークは、そのネットワークをデフォルトで使用するユーザがログインした後にのみ、接続されるからです。この動作を変更するには、以下を行ってください:

  1. パネルの nm-applet のアイコンを右クリックし、"接続を編集する" を選択し、Wi-Fi タブを開いてください。
  2. 使いたい接続を選択し、編集ボタンをクリックしてください。
  3. “Connect Automatically” と “Available to all users” のボックスにチェックを入れてください。
  4. 加えて、"Wi-Fi Security" タブで "Store password for all users (not encrypted)" が選択されていることを確認してください。

ログアウトし、ログインし直せば完了です。

OpenConnect で KWallet 内のパスワードを使う

接続時にユーザ名とパスワードを入力することはできますが、plasma-nm 0.9.3.2-1 から、KWallet から直接 OpenConnect のユーザ名とパスワードを取得することが可能になりました。

"KDE Wallet Manager" を開き、"Network Management|Maps" で対象の OpenConnect VPN 接続を見つけてください。"Show values" をクリックし、認証情報を以下の形式で "VpnSecrets" に入力してください (ユーザ名パスワード の部分は適宜置き換えてください):

form:main:username%SEP%ユーザ名%SEP%form:main:password%SEP%パスワード

次回の接続時に、ユーザ名とパスワードが "VPN secrets" ダイアログボックスに入力されるはずです。

特定のデバイスを無視する

NetworkManager で特定のデバイスを無視し、そのデバイスに対してはアドレスとルート (route) の設定を試みないようにすることが望ましい場合があります。/etc/NetworkManager/conf.d/unmanaged.conf で以下のオプションを使うことで、MAC またはインターフェイス名によって特定のデバイスを無視することができます:

[keyfile]
unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth0

ファイルを編集したら、nmcli general reload を root として実行してください。その後、NetworkManager があなたの設定を変更することなく、インターフェイスを構成できるようになっているはずです。

MAC アドレスのランダム化を設定する

ノート: (安定した) リンク接続[8]や、MAC アドレスに基づいてデバイスを制限したりネットワーク容量に制限を設けているネットワークへの接続には、MAC アドレスのランダム化を無効化する必要がある場合があります。

MAC アドレスのランダム化は、本物の MAC アドレスをネットワークに開示しないことで、プライバシーを向上させることができます。

NetworkManager は2種類の MAC アドレスランダム化をサポートしています: スキャン中のランダム化とネットワーク接続におけるランダム化です。どちらのモードも、/etc/NetworkManager/NetworkManager.conf を変更するか、/etc/NetworkManager/conf.d/ 内に別の設定ファイルを作成することで設定できます (前者は NetworkManager によって上書きされる場合があるので、後者が推奨されます)。

Wi-Fi スキャン中のランダム化はデフォルトで有効化されていますが、以下の行を /etc/NetworkManager/NetworkManager.conf/etc/NetworkManager/conf.d 内の別の設定ファイルに追加することで無効化することができます:

/etc/NetworkManager/conf.d/wifi_rand_mac.conf
[device]
wifi.scan-rand-mac-address=no

ネットワーク接続における MAC アドレスランダム化は、無線インターフェイスとイーサネットインターフェイスで別々のモードを設定することができます。モードに関する詳細は GNOME のブログ記事を参照してください。

MAC アドレスランダム化に関して、最も重要なモードは stablerandom です。stable は、新しいネットワークに接続した時にランダムな MAC アドレスを生成し、そのネットワークと MAC アドレスを永続的に関連付けます。これはつまり、そのネットワークに接続すると毎回同じ MAC アドレスが使用されることを意味します。それとは対照的に、random は、ネットワークに接続する度に、そのネットワークが新しかろうが既知であろうが、新しい MAC アドレスを生成します。/etc/NetworkManager/conf.d 内に設定ファイルを追加してこの MAC アドレスランダム化を設定することができます:

/etc/NetworkManager/conf.d/wifi_rand_mac.conf
[device-mac-randomization]
# "yes" は既にスキャンにおけるデフォルトです。
wifi.scan-rand-mac-address=yes
 
[connection-mac-randomization]
# 全てのイーサネット接続に対して MAC をランダム化する
ethernet.cloned-mac-address=random
# 各 Wi-Fi に対してランダムな MAC を生成し、それらを関連付ける。
wifi.cloned-mac-address=stable

詳細は GNOME ブログ記事を参照してください。

IPv6 プライバシー拡張を有効にする

IPv6#NetworkManager を参照してください。

接続ごとに一意の DUID を設定する

DHCPv6 Unique Identifier (DUID) は、DHCPv6 クライアントが DHCPv6 サーバに対して自身を識別するために使用する値です。NetworkManager は3種類の DUID をサポートしています:

  • DUID-UUID (RFC 6355): Universally Unique IDentifier (UUID) から生成されます。
  • DUID-LL (RFC 3315): リンク層アドレス (別名 MAC アドレス) から生成されます。
  • DUID-LLT (RFC 3315): リンク層アドレスとタイムスタンプから生成されます。

NetworkManager の内部 DHCP クライアントが使用されている場合 (デフォルト)、machine-id (/etc/machine-id) から生成されたグローバルで永続的な DUID-UUID で自身を識別します。これは、すべての接続が同じ UUID を共有することを意味し、プライバシーの侵害となる可能性があります。

幸いなことに、NetworkManager は、接続の stable-id とホストごとの一意のキーから派生した、接続ごとの一意の DUID を提供できます。/etc/NetworkManager/conf.d 内に次の設定を追加することで、これを有効にすることができます:

/etc/NetworkManager/conf.d/duid.conf
[connection]
ipv6.dhcp-duid=stable-uuid

stable-ll および stable-llt の値もサポートされています。詳細については、nm-settings(5) § ipv6 settingdhcp-duid の説明を参照してください。

有線接続の操作

NetworkManager は、デフォルトで、有線イーサネット接続を検出するたびにそれぞれに対して接続プロファイルを生成します。接続を生成する時点では、利用可能なイーサネットアダプターがさらにあるかどうかはわかりません。そのため、最初の有線接続は "有線接続 1" となります。no-auto-default (NetworkManager.conf(5) を参照) を設定するか、単に削除することで、この接続を生成しないようにできます。そうすれば、NetworkManager はこのインターフェイスの接続を二度と生成しないように記憶します。

また、接続を編集 (およびディスクに永続化) したり、削除したりすることもできます。NetworkManager は新しい接続を再生成することはありません。それから、名前を好きなものに変更することができます。この作業には nm-connection-editor などを使うことができます。

Wi-Fi バックエンドとして iwd を使用する

ノート:
  • iwd.service を有効化したり、iwd を手動で構成したりしないでください。NetworkManager は自身で iwd を開始し、管理します。
  • iwd に切り替える前に、既知の問題を考慮してください。

実験的な iwd バックエンドを有効化するには、iwdインストールしてから、以下の設定ファイルを作成してください:

/etc/NetworkManager/conf.d/wifi_backend.conf
[device]
wifi.backend=iwd

または、networkmanager-iwdAUR をインストールすることもできます。これは、iwd のみで動作する NetworkManager をビルドするように設定された修正パッケージです。主な違いは、iwd が必要であり、wpa_supplicant はビルド後にアンインストールできることです。

ノート: iwd に切り替えた後、既存の NetworkManager ネットワークプロファイルを変換する必要がある場合があります。

ネットワーク名前空間内で実行する

ネットワーク名前空間内で NetworkManager を実行する場合 (たとえば、選択したアプリケーションで使用する必要がある特定のデバイスを管理する場合)、その名前空間に移動させる前にデバイスを落としてください:

$ ip link set dev MY_DEVICE down
$ ip link set dev MY_DEVICE netns MY_NAMESPACE
$ ip netns exec MY_NAMESPACE NetworkManager
...
$ ip netns exec MY_NAMESPACE killall NetworkManager

そうしないと、NetworkManager は後で device is strictly unmanaged エラーにより接続の確立に失敗します。

VPN に自動的に接続する

NetworkManager は、インターネットへの接続時に VPN に自動的に接続するように (ネットワーク毎に) 設定できます。VPN 接続自体は、GNOME の NetworkManager フロントエンドで追加できますが、VPN を自動的に使用するようにするには、nmcli を使用しなければなりません。他のフロントエンドにはこの制限はない場合があります。

まず、対象の VPN が全ユーザで利用可能であることを確認してください。GNOME では、details タブ内のあるボックスにチェックを入れれば良いです。Identity タブのパスワード入力欄内の右側にあるアイコンをクリックし、Store the password for all users を選択してください。

そして、VPN 接続の UUID を見つけ、インターネット接続の connection.secondaries にその UUID を追加してください:

# UUID=$(nmcli --get-values connection.uuid connection show VPN接続の名前)
# nmcli connection modify インターネット接続の名前 connection.secondaries "$UUID"

NetworkManager を再起動して、設定したインターネット接続に接続したら、自動的に VPN に接続されるようになっているはずです。

トラブルシューティング

セキュアな Wi-Fi ネットワークのパスワードプロンプトが表示されない

セキュアな Wi-Fi ネットワークに接続しようとすると、パスワードのプロンプトが表示されず、接続が確立されません。これは、キーリングのパッケージがインストールされていない時に起こります。簡単な解決法は、gnome-keyring をインストールすることです。パスワードを暗号化して保存したい場合は、GNOME Keyring に書かれてある指示に従い、gnome-keyring-daemon をセットアップしてください。

Network management disabled

時々、NetworkManager を終了したときに pid (state) ファイルが削除されずに Network management disabled というメッセージが表示されることがあります。これが発生した場合は、そのファイルを手動で削除してください:

# rm /var/lib/NetworkManager/NetworkManager.state

内蔵 DHCP クライアントに関する問題

内臓の DHCP クライアントを使用すると IP アドレスの取得に問題が発生する場合、他の DHCP クライアントを使用することを検討してください (手順は #DHCP クライアント を見てください)。この回避策は、eduroam などの巨大なワイヤレスネットワークにおける問題を解決するかもしれません。

dhclient における DHCP の問題

DHCP での IP アドレス取得に問題が発生する場合、以下を /etc/dhclient.conf に追加してみてください:

 interface "eth0" {
   send dhcp-client-identifier 01:aa:bb:cc:dd:ee:ff;
 }

aa:bb:cc:dd:ee:ff は NIC の MAC アドレスです。この MAC アドレスは iproute2 パッケージの ip link show インターフェイス コマンドを使って確認できます。

3G モデムが検知されない

USB 3G モデム#NetworkManager を参照してください。

ノートパソコンで WLAN をオフにする

時々、ノートパソコンに付いているスイッチを使って Wi-Fi アダプタを無効化し、再び有効化しようとすると NetworkManager が機能しなくなることがあります。これは、しばしば rfkill の問題であることがあります。ドライバが rfkill にワイヤレスアダプタの状態について通知しているかどうか確認するには、以下のコマンドを使ってください:

$ watch -n1 rfkill list all

アダプタを切り替えた後にどれかの識別子がブロックされたままになる場合、手動でアンロックしてみることができます (X の部分は、上記のコマンドで得られた識別子の番号です):

# rfkill event unblock X

固定 IP アドレスの設定が DHCP に戻る

とある未解決のバグにより、デフォルトの接続を固定 IP アドレスに変更すると、nm-applet が設定の変更を適切に保存せずに、自動 DHCP に戻ってしまいます。

この問題を回避するには、nm-applet でデフォルトの設定 (例: "Auto eth0") を編集し、接続名を変更 (例: "my eth0") し、"Available to all users" チェックボックスのチェックを外し、固定 IP アドレスの設定を好きに変更し、Apply をクリックしてください。これで、指定した名前で新しい接続が保存されます。

そうしたら、デフォルトの接続に自動的に接続しないようにしたいと思うでしょう。そうするには、まず nm-connection-editor を実行してください (root としてではありません)。接続エディタで、デフォルトの接続 (例: "Auto eth0") を編集し、"Connect automatically" のチェックを外してください。Apply をクリックし、接続エディタを閉じてください。

通常ユーザとして接続を編集できない

#PolicyKit のパーミッションをセットアップする を参照してください。

隠されたワイヤレスネットワークを削除する

隠されたネットワークはワイヤレスの選択リストに表示されないので、GUI から削除することができません。以下のコマンドでそのようなネットワークを削除できます:

# rm /etc/NetworkManager/system-connections/SSID

これは、他の接続でも使えます。

VPN が GNOME で動作しない

GNOME を使用している時に NetworkManager で OpenConnect や vpnc の接続をセットアップすると、ダイアログボックスが表示されず、以下のエラーが /var/log/errors.log に現れることがあります:

localhost NetworkManager[399]: <error> [1361719690.10506] [nm-vpn-connection.c:1405] get_secrets_cb(): Failed to request VPN secrets #3: (6) No agents were available for this request.

これは、GNOME NetworkManager Applet が、ダイアログスクリプトが /usr/lib/gnome-shell にあると想定していることが原因です (NetworkManager のパッケージはダイアログスクリプトを /usr/lib/networkmanager 内に置きます)。"一時的な" 修正として (このバグはしばらく前から存在しています)、以下のシンボリックリンクを作成してください:

  • OpenConnect の場合: ln -s /usr/lib/networkmanager/nm-openconnect-auth-dialog /usr/lib/gnome-shell/
  • VPNC (つまり Cisco VPN) の場合: ln -s /usr/lib/networkmanager/nm-vpnc-auth-dialog /usr/lib/gnome-shell/

これは、他の NetworkManager VPN プラグインでも行う必要がある場合がありますが、上記が最も一般的です。

ヨーロッパの可視的なワイヤレスネットワークに接続できない

WLAN チップにはデフォルトの規制範囲が設定されています。アクセスポイントがその規制内で動作しない場合、そのネットワークに接続することはできません。これは簡単に解決できます:

  1. wireless-regdbインストールしてください。
  2. /etc/conf.d/wireless-regdom で適切な国名コードをアンコメントしてください。
  3. システムを再起動してください。この設定はブート時にしか読み込まれないからです。

ブート時の VPN への自動接続が機能しない

この問題は、システム (つまり、root ユーザとして動作している NetworkManager) が VPN 接続を確立しようと試みたが、パスワードが特定のユーザの GNOME Keyring 内に保存されているためにアクセスできなかった場合に発生します。

解決策は、#ディスパッチャを使って、ネットワーク接続が確立された後に VPN に接続する の手順 2 で説明されている通りに、VPN のパスワードを平文で保存することです。

nm-applet GUI で新しい "auto-connect VPN" オプションを使用している場合は、自動接続するために 手順 1 で説明されているディスパッチャを使用する必要はありません。

Systemd のボトルネック

時が立つにつれてログファイル (/var/log/journal) が膨大になってしまうことがあります。そうすると NetworkManager を使う場合にブートパフォーマンスに大きな影響を与えます。参照: systemd#少しづつ起動時間が長くなっている

定期的なネットワーク接続断、遅延、パケットロス (WiFi)

NetworkManager は2分ごとにスキャンを行います。

一部の WiFi ドライバは、接続/アソシエーション中にベースステーションのスキャンを行うと問題が発生します。症状としては、VPN 接続断/再接続、パケットロス、ウェブページのロードに失敗してリフレッシュすると良くなるなどがあります。

journalctl -f を root として実行すると、スキャンが行われていることがわかります。以下のようなメッセージが定期的にログに現れます:

NetworkManager[410]: <info>  (wlp3s0): roamed from BSSID 00:14:48:11:20:CF (my-wifi-name) to (none) ((none))

ローミングが重要でないならば、WiFi 接続プロファイルでアクセスポイントの BSSID をロックすることにより、定期的なスキャンの挙動を無効化することができます。

Lenovo ラップトップ (IdeaPad、Legion など) で Wi-Fi をオンにできない

これは、Wi-Fi ドライバがソフトブロックを誤って報告することによる、一部の Lenovo モデルにおける ideapad_laptop モジュールの問題です。カードは依然として netctl で操作できますが、NetworkManager などのマネージャーは機能しません。この問題が発生しているかどうかを確認するには、ハードウェアのスイッチをオンオフしたあとで rfkill list の出力を確認し、ソフトブロックされ続けるかどうか確認してください。

この記事またはセクションの正確性には問題があります。
理由: rfkill の問題を解決するには、rfkill.default_staterfkill.master_switch_mode を使用してみてください (kernel-parameters.html を参照))。 (議論: トーク:NetworkManager#)

ideapad_laptop モジュールをアンロードすれば、この問題は解決するはずです。(警告: これにより、ラップトップのキーボードとタッチパッドも無効になる可能性があります!)

ホスト名の送信をオフにする

NetworkManager はデフォルトでホスト名を DHCP サーバに送信します。ホスト名の送信は、グローバルには無効化できず、接続毎にしか無効化できません (Issue #584)。

特定の接続で DHCP サーバへのホスト名の送信を無効化するには、以下をネットワークの設定ファイルに追加してください:

/etc/NetworkManager/system-connections/your_connection_file
...
[ipv4]
dhcp-send-hostname=false
...
[ipv6]
dhcp-send-hostname=false
...

nm-applet が i3wm で消える

通知に xfce4-notifyd.service を使用する場合は、そのユニットを編集して、以下を追加する必要があります:

/etc/systemd/user/xfce4-notifyd.service.d/display_env.conf
[Service]
Environment="DISPLAY=:0.0"

デーモンをロードし直したら、xfce4-notifyd.service再起動してください。i3 を終了し、再び起動すると、アプレットがトレイに表示されているはずです。

Unit dbus-org.freedesktop.resolve1.service not found

systemd-resolved.service が開始されていない場合、NetworkManager は D-Bus を使用して開始しようとし、失敗します:

dbus-daemon[991]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.23' (uid=0 pid=1012 comm="/usr/bin/NetworkManager --no-daemon ")
dbus-daemon[991]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.resolve1.service': Unit dbus-org.freedesktop.resolve1.service not found.
dbus-daemon[991]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.23' (uid=0 pid=1012 comm="/usr/bin/NetworkManager --no-daemon ")

これは、NetworkManager が NetworkManager.conf(5)main.dns= 設定に関係なく、DNS 情報を systemd-resolved に送信しようとするためです。[9]

これは、/etc/NetworkManager/conf.d/ 内の設定ファイルで無効にできます:

/etc/NetworkManager/conf.d/no-systemd-resolved.conf
[main]
systemd-resolved=false

FS#62138 を参照してください。

Secrets were required, but not provided

ネットワークに接続しようとして以下のエラーが発生する場合:

$ nmcli device wifi connect SSID password パスワード
Error: Connection activation failed: (7) Secrets were required, but not provided

このエラーの原因となりうるものはたくさんあり、journal を読む必要があります (-u NetworkManager で出力をフィルタしてください)。例えば、接続の確立に時間がかかりすぎると、NetworkManager はパスワードが正しくなかったと結論づけます:

NetworkManager[1372]: <warn>  [1643991888.3808] device (wlan0): Activation: (wifi) association took too long
NetworkManager[1372]: <info>  [1643991888.3809] device (wlan0): state change: config -> need-auth (reason 'none', sys-iface-state: 'managed')
NetworkManager[1372]: <warn>  [1643991888.3838] device (wlan0): Activation: (wifi) asking for new secrets

接続プロファイルを削除し、新しいプロファイルを作成してみてください:

$ nmcli connection delete SSID
$ nmcli device wifi connect SSID password パスワード

また、MAC アドレスランダム化を無効化してみるのも良いでしょう:

/etc/NetworkManager/conf.d/wifi_rand_mac.conf
[device]
wifi.scan-rand-mac-address=no

iwd での WPA Enterprise 接続

iwd バックエンドと NetworkManager で 'eduroam' などの WPA Enterprise ネットワークに接続しようとした際に、NetworkManager sで以下のエラーが発生します:

 Connection 'eduroam' is not avialable on device wlan0 because profile is not compatible with device (802.1x connections must have IWD provisioning files)

NetworkManager は WPA Enterprise ネットワークを設定できないことが原因です。なので、iwd#WPA Enterprise で説明されているように iwd の設定ファイル /var/lib/iwd/essid.8021x を使って設定する必要があります。

Failed to request VPN secrets

以下のエラーが発生する場合:

Failed to request VPN secrets #1: No agents were available for this request.

パスワードが空であるか、PolicyKit のパーミッションをセットアップする必要があるかのどちらかです。

OpenSSL の "ca md too weak" エラーで OpenVPN の接続に失敗する

openssl がバージョン3に更新されたため、レガシーな暗号化アルゴリズムで生成された証明書はデフォルトで拒否されます。このような設定で networkmanager-openvpn を使用しようとすると、ログに次のエラーが記録される可能性があります:

nm-openvpn[14359]: OpenSSL: error:0A00018E:SSL routines::ca md too weak
nm-openvpn[14359]: Cannot load certificate file /home/archie/.local/share/networkmanagement/certificates/my_issued_cert.crt
nm-openvpn[14359]: Exiting due to fatal error

正しいアプローチは、OpenVPN サーバの管理者に、より安全な証明書を生成して再発行してもらうことです。ただし、当面の回避策として、OpenVPN には tls-cipher "DEFAULT:@SECLEVEL=0" が必要です。この設定は、プラグイン GUI からでは無理かもしれませんが、nmcli からなら可能です。これとは別に、OpenSSL でレガシーなプロバイダを有効化する必要もあります。

まず、以下のコマンドの出力から、問題のある VPN 接続の名前を取得してください:

$ nmcli connection show

接続の名前は vpn.example.com であると仮定します。以下のように nmcli を使ってください:

$ nmcli connection modify vpn.example.com +vpn.data tls-cipher=DEFAULT:@SECLEVEL=0

変更は即座に /etc/NetworkManager/system-connections/vpn.example.com.nmconnection に反映されるはずです。

OpenSSL に関しては、OpenSSL wiki で説明されている通りに /etc/ssl/openssl.cnf を編集してください。

具体的には、[provider_sect] セクションの最後に legacy = legacy_sect を追加してください。[default_sect]activate = 1 のコメントを外してください。最後に、activate = 1 という行も含む新しいセクション [legacy_sect] を追加してください。他のほとんどの既存の構成セクションを除外すると、最終結果は次のようになります:

/etc/ssl/openssl.cnf
openssl_conf = openssl_init

[openssl_init]
providers = provider_sect

[provider_sect]
default = default_sect
legacy = legacy_sect

[default_sect]
activate = 1

[legacy_sect]
activate = 1

最後に、NetworkManager.service再起動して、新しい OpenSSL 設定を有効化してください。

OpenSSL の "unsupported protocol" エラーで WPA Enterprise の接続の認証に失敗する

openssl がバージョン 3 に更新されたため、デフォルトで SSL 3、TLS 1.0、TLS 1.1、そして DTLS 1.0 はセキュリティレベル 0 でのみ動作するようになりました。それよりも低い標準しかサポートしていない Wi-Fi での認証は、ログに以下のエラーを吐いて失敗します:

wpa_supplicant[3320]: SSL: SSL3 alert: write (local SSL3 detected an error):fatal:protocol version
wpa_supplicant[3320]: OpenSSL: openssl_handshake - SSL_connect error:0A000102:SSL routines::unsupported protocol
wpa_supplicant[3320]: wlp3s0: CTRL-EVENT-EAP-FAILURE EAP authentication failed

正しいアプローチは、WiFi の管理者に TLS 1.3 をサポートしてもらい、さらにオプションで TLS 1.0/1.1、DTLS 1.0、SSL 1-3 を含む低いセキュリティ標準のサポートを落としてもらうことです。しかし、当面の回避策として、TLS 1.0 をデフォルトで許可する方法は複数あります。一つは、手動で OpenSSL にパッチを当てるか、破壊的な変更をもとに戻すことです ([10])。これは、OpenSSL レベル 1 を使用する他の全てのプログラムのセキュリティも低下してしまうため、推奨されません。代わりに、(BBS#286417 で説明されているように) wpa_supplicant によって使用されるレベルを直接設定することができます。問題のある接続の [802-1x] セクションで phase1-auth-flags=32 を設定することで、その接続のみを変更できます。これは GUI からは無理かもしれませんが、nmcli でなら可能です。

まず、以下のコマンドの出力から、問題のある Wi-Fi 接続の名前を手に入れてください:

$ nmcli connection show

接続名は Example WiFi であると仮定します。以下のように nmcli を使用してください:

$ nmcli connection modify Example\ WiFi 802-1x.phase1-auth-flags 32

変更は即座に /etc/NetworkManager/system-connections/Example\ WiFi.nmconnection に反映されるはずです。

最後に、NetworkManager.service再起動して、新しい OpenSSL の設定を有効化してください。

参照

翻訳ステータス: このページは en:NetworkManager の翻訳バージョンです。最後の翻訳日は 2023-08-18 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。