「Iwd」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(起動後の iwd.service の再起動でsleepを使わない方法を追加)
 
(他の1人の利用者による、間の1版が非表示)
151行目: 151行目:
 
== ネットワーク設定 ==
 
== ネットワーク設定 ==
   
デフォルトでは、''iwd'' はネットワーク設定を {{ic|/var/lib/iwd}} ディレクトリに保存します。設定ファイルの名前は、{{ic|''network''.''type''}} となります。''network'' はネットワーク SSID で ''.type'' はネットワークタイプ(''.open''、''.wep''、''.psk'' または ''.8021x'')です。このファイルは暗号化された{{ic|事前共有鍵}}と、オプションでクリアテキストの{{ic|パスフレーズ}}を保存するために使用され、ユーザー iwctl を呼び出さずに作成することもできます。このファイルは、そのネットワーク SSID に関連する他の設定にも使用できます。詳細な設定については、{{man|5|iwd.network}} を参照してください。
+
デフォルトでは、''iwd'' はネットワーク設定を {{ic|/var/lib/iwd}} ディレクトリに保存します。設定ファイルの名前は、{{ic|''network''.''type''}} となります。''network'' はネットワーク SSID で ''.type'' はネットワークタイプ(''.open''、''.wep''、''.psk'' または ''.8021x'')です。このファイルは暗号化された{{ic|事前共有鍵}}と、オプションでクリアテキストの{{ic|パスフレーズ}}を保存するために使用され、ユーザー {{ic|iwctl}} を呼び出さずに作成することもできます。このファイルは、そのネットワーク SSID に関連する他の設定にも使用できます。詳細な設定については、{{man|5|iwd.network}} を参照してください。
  +
  +
{{Note|文字列の値(ID やパスワードを含む)では、特定の文字がバックスラッシュでエスケープされる場合があります。先頭のスペース、\n、\r、およびバックスラッシュそのものはエスケープする必要があります。詳細は {{man|5|iwd.network}} を参照してください。}}
   
 
=== WPA-PSK ===
 
=== WPA-PSK ===
170行目: 172行目:
 
[Security]
 
[Security]
 
Passphrase=test1234}}
 
Passphrase=test1234}}
  +
 
事前共有鍵は、最初の接続時にファイルに追加されます。
 
事前共有鍵は、最初の接続時にファイルに追加されます。
  +
 
{{hc|/var/lib/iwd/spaceship.psk|2=
 
{{hc|/var/lib/iwd/spaceship.psk|2=
 
[Security]
 
[Security]
195行目: 199行目:
   
 
アクセスポイントに自動接続したくない場合、AutoConnect オプションを false に設定して {{ic|iwctl}} で手動でアクセスポイントに接続してください。パスワードを平文で保存したくない場合は、ファイルからパスワードの設定を外してください。
 
アクセスポイントに自動接続したくない場合、AutoConnect オプションを false に設定して {{ic|iwctl}} で手動でアクセスポイントに接続してください。パスワードを平文で保存したくない場合は、ファイルからパスワードの設定を外してください。
  +
  +
{{Note|異なる SSID の優先順位を変更する方法はありませんが、代替策として {{ic|1=AutoConnect=false}} を設定することを検討してください。}}
   
 
==== EAP-PEAP ====
 
==== EAP-PEAP ====
235行目: 241行目:
 
EAP-TTLS-Phase2-Identity=user
 
EAP-TTLS-Phase2-Identity=user
 
EAP-TTLS-Phase2-Password=password
 
EAP-TTLS-Phase2-Password=password
  +
  +
[Settings]
  +
AutoConnect=true
  +
}}
  +
  +
==== EAP-TLS ====
  +
  +
EAP-TLS は x509 ''クライアント証明書'' を使用して認証を行います。SSH キーと同様に、これらは公開鍵暗号方式を利用するため、Wi-Fi 認証サーバーに秘密情報を送る必要がありません。また、デバイス間でパスワードをコピーして再利用する必要もありません。通常、各デバイスには個別の証明書が割り当てられ、理論上はパスワードの変更や他のデバイスへの影響なしに失効させることも可能です。
  +
  +
他のエンタープライズ認証方法と同様に、接続先が正しいことを証明するため、組織が使用する CA 証明書({{ic|cacert.pem}})を知る必要があります。また、自分自身を表すクライアント証明書({{ic|client-cert.pem}})と、それに対応するプライベートキー({{ic|client-key.pem}})も必要です。このプライベートキーはクライアント証明書の所有を証明するために使用します。
  +
  +
必要な証明書のパスを指定する方法もありますし、[[#Embedded certificates|設定ファイル内に証明書を埋め込む]] ことも可能です。
  +
  +
認証情報をすべて揃えたら、次の設定を {{ic|/var/lib/iwd/''essid''.8021x}} ファイルに記述します:
  +
  +
{{hc|/var/lib/iwd/''essid''.8021x|2=
  +
[Security]
  +
  +
EAP-Method=TLS
  +
EAP-TLS-CACert=/path/to/cacert.pem
  +
EAP-Identity=''your_enterprise_email''
  +
EAP-TLS-ClientCert=/path/to/client-cert.pem
  +
EAP-TLS-ClientKey=/path/to/client-key.pem
  +
#EAP-TLS-ClientKeyPassphrase=key-passphrase # if client-key.pem is encrypted, provide its passphrase
   
 
[Settings]
 
[Settings]
242行目: 272行目:
 
==== Eduroam ====
 
==== Eduroam ====
   
Eduroam は [https://cat.eduroam.org/ 設定アシスタントツール(CAT)] を提供していますが残念ながら iwd に対応していません。しかし、ダウンードボタンをクリックし、大学選択してダウンロードできるインストーラは単なる Python スクリプトです。証明書やサーバのドメインマスク必要な設定オプション簡単に抽出することできます
+
eduroam は [https://cat.eduroam.org/ 設定アシスタントツール (CAT)] を提供しており[https://github.com/GEANT/CAT/pull/207 iwd]対応していまあなたの組織が CAT 内にプファイル持っている場合、Linux スクリプトをダウンロードして [[python]] を使って実行すること、eduroamに接続できます。もし組織が CAT をトしていい場合管理者から提供されたパラメータを使用して手動で設定ファイル作成する必要あります(以下の表が役立ちます)
  +
  +
もしスクリプトが何らかの理由で動作しない場合でも、必要な設定オプション(証明書やサーバードメインマスクを含む)を手動で抽出するのは簡単です。さらに、いくつかの機関は EAP-TLS にアップグレードしており、{{ic|client-cert.pem}} の生成を [https://www.securew2.com/ SecureW2] に外部委託している場合、そのツールを使用してクライアント証明書を生成する必要があります。
   
 
以下の表は、iwd の設定オプションと eduroam CAT のインストールスクリプトの変数の対応を示します。
 
以下の表は、iwd の設定オプションと eduroam CAT のインストールスクリプトの変数の対応を示します。
255行目: 287行目:
 
| {{ic|EAP-Identity}} || {{ic|Config.anonymous_identity}}
 
| {{ic|EAP-Identity}} || {{ic|Config.anonymous_identity}}
 
|-
 
|-
  +
| {{ic|EAP-PEAP-CACert}} || {{ic|Config.CA}} の内容、{{ic|Config.CA}} を含む ''.pem''ファイルへの絶対パス、または [[#埋め込み証明書|埋め込み証明書]] のいずれかを指定します。
| {{ic|EAP-PEAP-CACert}} || {{ic|Config.CA}}
 
 
|-
 
|-
 
| {{ic|EAP-PEAP-ServerDomainMask}} || {{ic|Config.servers}} の一つ
 
| {{ic|EAP-PEAP-ServerDomainMask}} || {{ic|Config.servers}} の一つ
 
|-
 
|-
| {{ic|EAP-PEAP-Phase2-Method}} || {{ic|Config.eap_inner}}
+
| {{ic|EAP-PEAP-Phase2-Method}} || {{ic|Config.eap_inner}} を指定します。ただし、{{ic|PAP}} の場合は代わりに {{ic|Tunneled-PAP}} を使用します。
 
|-
 
|-
 
| {{ic|EAP-PEAP-Phase2-Identity}} || ユーザー名@{{ic|Config.user_realm}}
 
| {{ic|EAP-PEAP-Phase2-Identity}} || ユーザー名@{{ic|Config.user_realm}}
 
|}
 
|}
  +
  +
ここで、{{ic|''method''}} は {{ic|EAP-Method}} の内容であり、{{ic|TLS}}、{{ic|TTLS}}、または {{ic|PEAP}} のいずれかである必要があります。必要な情報をすべて抽出し、それらを iwd 設定形式に変換したら、前述の方法で説明したように {{ic|''essid''.8021x}} という設定ファイルに記述できます。
   
 
{{Note|
 
{{Note|
272行目: 306行目:
   
 
その他のテスト例は、上流リポジトリの [https://git.kernel.org/pub/scm/network/wireless/iwd.git/tree/autotests テストケース]にあります。
 
その他のテスト例は、上流リポジトリの [https://git.kernel.org/pub/scm/network/wireless/iwd.git/tree/autotests テストケース]にあります。
  +
  +
==== 埋め込み証明書 ====
  +
  +
証明書やキーの PEM ファイルへの絶対パスを指定する代わりに、PEM 自体をネットワーク設定ファイル内に埋め込むことができます。
  +
  +
埋め込まれた PEM は、次の形式で設定ファイル内の任意の場所に記述できます:
  +
  +
[@pem@''my_ca_cert'']
  +
----- BEGIN CERTIFICATE -----
  +
''PEM data''
  +
----- END CERTIFICATE -----
  +
  +
ここで ''my_ca_cert'' は、設定ファイル内で証明書を識別するために使用できる任意の名前です。
  +
  +
埋め込まれた証明書は、設定ファイル内で証明書パスが必要な場所で、値の先頭に {{ic|embed:}} を付けることで使用できます。
  +
  +
EAP-TTLS-CACert=embed:''my_ca_cert''
  +
  +
これは CA 証明書に限定されません。クライアント証明書、クライアントキー(暗号化されている場合も含む)および証明書チェーンも埋め込むことができます。
   
 
== 任意設定 ==
 
== 任意設定 ==
422行目: 475行目:
 
=== 起動後の iwd.service の再起動 ===
 
=== 起動後の iwd.service の再起動 ===
   
一部のマシンでは、起動後に動作するために {{ic|iwd.service}} を再起動する必要があると報告されています。{{Bug|63912}} と [https://bbs.archlinux.org/viewtopic.php?id=251432 thread 251432] を参照してください。これはおそらく、Linux カーネルとサービスの起動が早すぎて、ワイヤレスネットワークカードの電源がオンになる前に、''iwd'' が起動するために発生します。回避策として、[[ユニットを拡張]]して、遅延時間追加します。
+
一部のマシンでは、起動後に動作するために {{ic|iwd.service}} を再起動する必要があると報告されています。{{Bug|63912}} と [https://bbs.archlinux.org/viewtopic.php?id=251432 thread 251432] を参照してください。これはおそらく、ワイヤレスネットワークカードの電源がオンになる前に、''iwd'' が起動するために発生します。回避策として、{{ic|1=systemctl list-units --type=device{{!}}grep wlan0}}コマンドでカードを待つために必要なサービスを見つけ、[[ユニットを拡張]]して、カード待つようにします。
   
  +
{{hc|/etc/systemd/system/iwd.service.d/override.conf|2=
[Service]
 
  +
[Unit]
ExecStartPre=/usr/bin/sleep 2
 
  +
After1=sys-XXXX-net-wlan0.device
  +
Wants1=sys-XXXX-net-wlan0.device
  +
}}
   
 
次に ''systemd'' マネージャーの設定を[[リロード]]します。
 
次に ''systemd'' マネージャーの設定を[[リロード]]します。
  +
それでも動かない場合は、以下の設定も試して下さい。
  +
[Service]
  +
ExecStartPre=ip link set wlan0 up
  +
又は
  +
[Service]
  +
ExecStartPre=/usr/bin/sleep 2
   
 
=== 再起動後の接続の問題 ===
 
=== 再起動後の接続の問題 ===

2025年3月9日 (日) 01:27時点における最新版

関連記事

iwd (iNet wireless daemon) は Intel によって書かれた Linux 用の無線デーモンです。プロジェクトの中心的な目標は、外部ライブラリに依存せず、Linux カーネルが提供する機能を最大限に活用することにより、リソース使用率を最適化することです。

iwd はスタンドアロンでも動作しますが ConnMansystemd-networkdNetworkManager のような包括的なネットワークマネージャーとの組み合わせて使うこともできます。

ノート: ネットワークマネージャ 経由で iwd を使用する場合は、そのネットワークマネージャの記事に明示的に記載されていない限り、このページの指示には従わないでください。

インストール

iwd パッケージをインストールしてください。

使用方法

iwd パッケージにはクライアントプログラムの iwctl とデーモンの iwd、そして Wi-Fi 監視ツールの iwmon が含まれています。

iwd.service起動有効化)したら、iwctl コマンドを使って制御することができます。

iwctl

対話型プロンプトを表示するには、次のようにします:

$ iwctl

対話型プロンプトは、プレフィックスが、[iwd]# と表示されます。

ヒント:
  • iwctl プロンプトで、Tab キーを押すとコマンドとデバイス名を補完できます。
  • 対話型プロンプトを終了するには、Ctrl+d を押して、 EOF を送信します。
  • 対話型プロンプトを使用せずに、すべてのコマンドをコマンドライン引数として使用できます。例:iwctl device wlan0 show

使用可能なすべてのコマンドの一覧を表示するには:

[iwd]# help

ネットワークに接続する

先ず、ワイヤレスデバイス名がわからない場合は、すべての Wi-Fiデバイスを一覧表示します:

[iwd]# device list

次に、ネットワークをスキャンします:

[iwd]# station device scan

利用可能なすべてのネットワークを一覧表示できます:

[iwd]# station device get-networks

最後に、ネットワークに接続するには:

[iwd]# station device connect SSID

非公開のネットワークに接続するには:

[iwd]# station device connect-hidden SSID
ヒント: ユーザーインターフェイスはオートコンプリートをサポートしています。station と入力し、Tab Tab を押すと、使用可能なデバイスが表示され、デバイスの最初の文字を入力し、Tab を押して補完します。 同じように、connect を入力し Tab Tab と押すと、利用可能なネットワークのリストを表示します。次に、使用するネットワークの最初の文字を入力して、Tab キーを押して補完を完了します。

パスフレーズが必要な場合は、入力を求められます。コマンドライン引数として指定することもできます:

$ iwctl --passphrase passphrase station device connect SSID
ノート:
  • iwd はネットワークパスフレーズを /var/lib/iwd ディレクトリに自動的に保存し、将来的にそれらを使用して自動接続します。 #Network configuration を参照してください。
  • SSID にスペースが含まれるネットワークに接続するには、接続時にネットワーク名をダブルクオートで囲む必要があります。
  • iwd は、8〜63 文字の ASCII エンコード文字の PSK パスフレーズのみをサポートします。要件が満たされていない場合は次のエラーメッセージが表示されます: PMK generation failed. Ensure Crypto Engine is properly configured

WPS/WSC を使用してネットワークに接続する

ボタンを押してネットワークに接続できるように設定されている場合 (Wikipedia:ja:Wi-Fi Protected Setup) は、まず、ネットワークデバイスがこのセットアップ手順を使用できることを確認してください。

[iwd]# wsc list

次に、デバイスが上記のリストに表示されている場合、

[iwd]# wsc device push-button

それから、ルーターのボタンを押します。この手順は、2分以内にボタンを事前に押した場合にも機能します。

ネットワークがその方法で接続するために、PIN 番号を検証する必要がある場合は、help コマンド出力をチェックして、wsc コマンドに適切なオプションを提供する方法を確認してください。

ネットワークから切断する

ネットワークから切断するには:

[iwd]# station device disconnect

デバイスと接続情報を表示する

MAC アドレスなどの WiFi デバイスの詳細を表示するには:

[iwd]# device device show

WiFi デバイスの接続ネットワークを含む接続状態を表示するには:

[iwd]# station device show

既知のネットワークの管理

以前に接続したネットワークを一覧表示するには:

[iwd]# known-networks list

既知のネットワークを忘れるには:

[iwd]# known-networks SSID forget

iwgtk

iwgtkAUR は、iwd を制御できる GUI フロントエンドを提供します。

引数を指定せずに iwgtk を実行すると、アプリケーションウィンドウが起動します。このウィンドウを使用して、アダプターとデバイスのオン/オフの切り替え、動作モードの変更、利用可能なネットワークの表示、利用可能なネットワークへの接続、既知のネットワークの管理を行うことができます。

インジケーターアイコン

iwgtk のインジケーター (トレイ) アイコンデーモンを起動するには、次のコマンドを実行します:

$ iwgtk -i

インジケーターアイコンが表示されない場合は、システムトレイで StatusNotifierItem API がサポートされていない可能性が高く、その場合は、snixembed-gitAUR などの互換性レイヤーを実行する必要があります。

次のシステムトレイは StatusNotifierItem をサポートしているため、そのまま使用できます:

  • KDE Plasma
  • swaybar
  • xfce4-panel

次のトレイは XEmbed のみをサポートしているため、snixembed-gitAUR が必要です:

  • AwesomeWM
  • i3bar

自動起動

iwgtk の最も一般的な使用例は、デスクトップにログインするたびにインジケーターデーモンを起動することです。デスクトップ環境が XDG Autostart 標準をサポートしている場合、AUR パッケージによって /etc/xdg/autostart/ に配置されている iwgtk-indicator.desktop ファイルにより自動的に行われます。

あるいは、インジケーターデーモンを起動するための systemd ユニットファイルが AUR パッケージによって提供されます。デスクトップ環境が systemd の graphical-session.target ユニットをサポートしている場合、iwgtk.service ユーザーユニット有効化 することで、systemd 経由で iwgtk を自動起動できます。

ネットワーク設定

デフォルトでは、iwd はネットワーク設定を /var/lib/iwd ディレクトリに保存します。設定ファイルの名前は、network.type となります。network はネットワーク SSID で .type はネットワークタイプ(.open.wep.psk または .8021x)です。このファイルは暗号化された事前共有鍵と、オプションでクリアテキストのパスフレーズを保存するために使用され、ユーザー iwctl を呼び出さずに作成することもできます。このファイルは、そのネットワーク SSID に関連する他の設定にも使用できます。詳細な設定については、iwd.network(5) を参照してください。

ノート: 文字列の値(ID やパスワードを含む)では、特定の文字がバックスラッシュでエスケープされる場合があります。先頭のスペース、\n、\r、およびバックスラッシュそのものはエスケープする必要があります。詳細は iwd.network(5) を参照してください。

WPA-PSK

SSID "spaceship" とパスフレーズ "test1234" を使用して WPA-PSK または WPA2-PSK で保護されたネットワークに接続するための最小限のサンプルファイル:

/var/lib/iwd/spaceship.psk
[Security]
PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295
ノート: ネットワークの SSID は英数字のみまたは - _ のいずれかを含む場合のみファイル名として使用されます。他の文字が含まれている場合、名前は = 文字の後に16進数でエンコードされた SSID が代わりに使用されます。

パスフレーズから事前共有鍵を計算するには、次の二つの方法のいずれかを使用できます:

  • 設定ファイルにクリアテキストでパスフレーズを入力します:
/var/lib/iwd/spaceship.psk
[Security]
Passphrase=test1234

事前共有鍵は、最初の接続時にファイルに追加されます。

/var/lib/iwd/spaceship.psk
[Security]
Passphrase=test1234
PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295

WPA Enterprise

EAP-PWD

EAP-PWD で保護されたエンタープライズアクセスポイントに接続するには /var/lib/iwd フォルダに以下の内容で essid.8021x という名前のファイルを作成する必要があります:

/var/lib/iwd/essid.8021x
[Security]
EAP-Method=PWD
EAP-Identity=your_enterprise_email
EAP-Password=your_password

[Settings]
AutoConnect=true

アクセスポイントに自動接続したくない場合、AutoConnect オプションを false に設定して iwctl で手動でアクセスポイントに接続してください。パスワードを平文で保存したくない場合は、ファイルからパスワードの設定を外してください。

ノート: 異なる SSID の優先順位を変更する方法はありませんが、代替策として AutoConnect=false を設定することを検討してください。

EAP-PEAP

EAP-PWD と同様に、フォルダー内に essid.8021x を作成する必要があります。設定ファイルの作成に進む前に、組織が使用している CA 証明証を確認する良い機会でもあります。これは MSCHAPv2 パスワード認証を使用する設定ファイルの例です:

/var/lib/iwd/essid.8021x
[Security]
EAP-Method=PEAP
EAP-Identity=anonymous@realm.edu
EAP-PEAP-CACert=/path/to/root.crt
EAP-PEAP-ServerDomainMask=radius.realm.edu
EAP-PEAP-Phase2-Method=MSCHAPV2
EAP-PEAP-Phase2-Identity=johndoe@realm.edu
EAP-PEAP-Phase2-Password=hunter2

[Settings]
AutoConnect=true

MsCHAPv2 パスワードは、暗号化されたハッシュとして保存することもできます。正しい md4 ハッシュは次のように計算できます: (パスワードの後に EOF を挿入し、Enter キーを押さないでください)

$ iconv -t utf16le | openssl md4 -provider legacy

結果のハッシュは、EAP-PEAP-Phase2-Password-Hash キー内に保存する必要があります。

ヒント: eduroam の使用を計画している場合は、#Eduroam も参照してください。

TTLS-PAP

EAP-PWD と同様に、フォルダー中に essid.8021x を作成する必要があります。設定ファイルの作成に進む前に、組織が使用している CA 証明書を確認する良い機会でもあります。これは、PAP パスワード認証を使用する設定ファイルの例です:

/var/lib/iwd/essid.8021x
[Security]
EAP-Method=TTLS
EAP-Identity=anonymous@uni-test.de
EAP-TTLS-CACert=cert.pem
EAP-TTLS-ServerDomainMask=*.uni-test.de
EAP-TTLS-Phase2-Method=Tunneled-PAP
EAP-TTLS-Phase2-Identity=user
EAP-TTLS-Phase2-Password=password

[Settings]
AutoConnect=true

EAP-TLS

EAP-TLS は x509 クライアント証明書 を使用して認証を行います。SSH キーと同様に、これらは公開鍵暗号方式を利用するため、Wi-Fi 認証サーバーに秘密情報を送る必要がありません。また、デバイス間でパスワードをコピーして再利用する必要もありません。通常、各デバイスには個別の証明書が割り当てられ、理論上はパスワードの変更や他のデバイスへの影響なしに失効させることも可能です。

他のエンタープライズ認証方法と同様に、接続先が正しいことを証明するため、組織が使用する CA 証明書(cacert.pem)を知る必要があります。また、自分自身を表すクライアント証明書(client-cert.pem)と、それに対応するプライベートキー(client-key.pem)も必要です。このプライベートキーはクライアント証明書の所有を証明するために使用します。

必要な証明書のパスを指定する方法もありますし、設定ファイル内に証明書を埋め込む ことも可能です。

認証情報をすべて揃えたら、次の設定を /var/lib/iwd/essid.8021x ファイルに記述します:

/var/lib/iwd/essid.8021x
[Security]

EAP-Method=TLS
EAP-TLS-CACert=/path/to/cacert.pem
EAP-Identity=your_enterprise_email
EAP-TLS-ClientCert=/path/to/client-cert.pem
EAP-TLS-ClientKey=/path/to/client-key.pem
#EAP-TLS-ClientKeyPassphrase=key-passphrase  # if client-key.pem is encrypted, provide its passphrase

[Settings]
AutoConnect=true

Eduroam

eduroam は 設定アシスタントツール (CAT) を提供しており、iwd にも対応しています。もしあなたの組織が CAT 内にプロファイルを持っている場合、Linux スクリプトをダウンロードして python を使って実行することで、eduroamに接続できます。もし組織が CAT をサポートしていない場合、管理者から提供されたパラメータを使用して手動で設定ファイルを作成する必要があります(以下の表が役立ちます)

もしスクリプトが何らかの理由で動作しない場合でも、必要な設定オプション(証明書やサーバードメインマスクを含む)を手動で抽出するのは簡単です。さらに、いくつかの機関は EAP-TLS にアップグレードしており、client-cert.pem の生成を SecureW2 に外部委託している場合、そのツールを使用してクライアント証明書を生成する必要があります。

以下の表は、iwd の設定オプションと eduroam CAT のインストールスクリプトの変数の対応を示します。

Iwd 設定オプション CAT スクリプト変数
file name Config.ssids の一つ
EAP-Method Config.eap_outer
EAP-Identity Config.anonymous_identity
EAP-PEAP-CACert Config.CA の内容、Config.CA を含む .pemファイルへの絶対パス、または 埋め込み証明書 のいずれかを指定します。
EAP-PEAP-ServerDomainMask Config.servers の一つ
EAP-PEAP-Phase2-Method Config.eap_inner を指定します。ただし、PAP の場合は代わりに Tunneled-PAP を使用します。
EAP-PEAP-Phase2-Identity ユーザー名@Config.user_realm

ここで、methodEAP-Method の内容であり、TLSTTLS、または PEAP のいずれかである必要があります。必要な情報をすべて抽出し、それらを iwd 設定形式に変換したら、前述の方法で説明したように essid.8021x という設定ファイルに記述できます。

ノート:
  • EAP-Identity は Eduroam プロバイダによって要求されていない場合があります。その場合は、このフィールドに anonymous@Config.user_realm を使用する必要があります。
  • EAP-PEAP-ServerDomainMaskDNS: で始まる場合は、DNS: 以降の部分のみを使用してください。

その他のケース

その他のテスト例は、上流リポジトリの テストケースにあります。

埋め込み証明書

証明書やキーの PEM ファイルへの絶対パスを指定する代わりに、PEM 自体をネットワーク設定ファイル内に埋め込むことができます。

埋め込まれた PEM は、次の形式で設定ファイル内の任意の場所に記述できます:

[@pem@my_ca_cert]
----- BEGIN CERTIFICATE -----
PEM data
----- END CERTIFICATE -----

ここで my_ca_cert は、設定ファイル内で証明書を識別するために使用できる任意の名前です。

埋め込まれた証明書は、設定ファイル内で証明書パスが必要な場所で、値の先頭に embed: を付けることで使用できます。

EAP-TTLS-CACert=embed:my_ca_cert

これは CA 証明書に限定されません。クライアント証明書、クライアントキー(暗号化されている場合も含む)および証明書チェーンも埋め込むことができます。

任意設定

メインの設定は /etc/iwd/main.conf ファイルで行います。 iwd.config(5) を参照してください。

特定のネットワークに対する自動接続を無効化

/var/lib/iwd/network.type ファイルを作成・編集してください (network はネットワークの SSID に、type は "open", "wep", "psk", "8021x" のどれかのネットワークタイプに置き換えてください)。そしてファイルに以下のセクションを追加してください:

/var/lib/iwd/spaceship.psk
[Settings]
AutoConnect=false

利用可能なネットワークの定期スキャンを無効にする

デフォルトでは、 iwd は切断状態の場合、利用可能なネットワークを定期的にスキャンします。定期スキャンを無効にする(常に手動でスキャンする)には、/etc/iwd/main.conf ファイルを作成/編集し、以下のセクションを追加します:

/etc/iwd/main.conf
[Scan]
DisablePeriodicScan=true

内蔵ネットワーク設定の有効化

バージョン 0.19 以降、iwd は内蔵の DHCP クライアントまたは静的な設定を使用して、IPアドレスの割り当てとルートの設定を行うことができます。これは、スタンドアロン DHCP クライアントの良い代替手段です。

iwd のネットワーク設定機能を有効にするには、//etc/iwd/main.conf を作成・編集し、以下のセクションを追加します:

/etc/iwd/main.conf
[General]
EnableNetworkConfiguration=true

また、RoutePriorityOffset でルートメトリックを設定する機能もあります:

/etc/iwd/main.conf
[Network]
RoutePriorityOffset=300

IPv6 support

バージョン 1.10 以降、iwd は IPv6 をサポートしていますが、デフォルトでは無効になっています。IPv6 を有効にするには、設定ファイルに以下を追加します:

/etc/iwd/main.conf
[Network]
EnableIPv6=true

この設定は、DHCPv6 または 静的 IPv6 設定のどちらを使用する場合でも必要です。ネットワーク毎に設定することもできます。

ネットワーク構成での静的 IP アドレスの設定

次のセクションを /var/lib/iwd/network.type ファイルに追加します。例えば:

/var/lib/iwd/spaceship.psk
[IPv4]
Address=192.168.1.10
Netmask=255.255.255.0
Gateway=192.168.1.1
Broadcast=192.168.1.255
DNS=192.168.1.1

DNS マネージャーの選択

現在、iwd は systemd-resolvedresolvconf の二つの DNS マネージャーをサポートしています。

systemd-resolved の場合、次のセクションを /etc/iwd/main.conf に追加します:

/etc/iwd/main.conf
[Network]
NameResolvingService=systemd

resolvconf の場合:

/etc/iwd/main.conf
[Network]
NameResolvingService=resolvconf

すべてのユーザーにステータス情報の読み取りを許可する

すべてのユーザーにステータス情報の読み取りを許可するが、設定の変更は許可しない場合は、次の D-Bus 設定ファイルを作成できます。

/etc/dbus-1/system.d/iwd-allow-read.conf
<!-- Allow any user to read iwd status information. Overrides some part
     of /usr/share/dbus-1/system.d/iwd-dbus.conf. -->

<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>

  <policy context="default">
    <deny send_destination="net.connman.iwd"/>
    <allow send_destination="net.connman.iwd" send_interface="org.freedesktop.DBus.Properties" send_member="GetAll" />
    <allow send_destination="net.connman.iwd" send_interface="org.freedesktop.DBus.Properties" send_member="Get" />
    <allow send_destination="net.connman.iwd" send_interface="org.freedesktop.DBus.ObjectManager" send_member="GetManagedObjects" />
    <allow send_destination="net.connman.iwd" send_interface="net.connman.iwd.Device" send_member="RegisterSignalLevelAgent" />
    <allow send_destination="net.connman.iwd" send_interface="net.connman.iwd.Device" send_member="UnregisterSignalLevelAgent" />
  </policy>

</busconfig>

暗号化されたネットワークプロファイル

デフォルトでは、iwd はネットワーク資格情報を暗号化せずにシステムに保存します。iwd バージョン 1.25 以降、iwd は、systemd を使用するシステム向けに 暗号化プロファイル を作成するための実験的なサポートを提供します。

まず、暗号化された認証情報を作成します。次の例では、systemd-creds を使用し、暗号化されたプロファイルの作成に使用されるシステムの Trusted Platform Module にバインドされる iwd-secret という暗号化された資格情報を作成します:

# systemd-ask-password -n | systemd-creds --tpm2-device=auto -T --name=iwd-secret encrypt - /etc/credstore.encrypted/iwd-secret.cred

次に、iwd サービスの ドロップインファイル を作成して、LoadEncryptedCredential オプションを追加します。

/etc/systemd/system/iwd.service.d/use-creds.conf
[Service]
LoadEncryptedCredential=iwd-secret:/etc/credstore.encrypted/iwd-secret.cred

最後に、名前付き資格情報を値として持つ SystemdEncrypt オプションを iwd 設定ファイルに追加し、systemd マネージャーを リロード して、iwd サービスを 再起動 します。

/etc/iwd/main.conf
[General]
...
SystemdEncrypt=iwd-secret
ノート:
  • 現在システム上にあるプロファイルはすべて自動的に暗号化されます。この時点では他に何も必要ありません。今後のプロファイルは自動的に暗号化されます。
  • 上の例では、暗号化された資格情報は TPM PCR 7 に暗黙的にバインドされています。したがって、セキュアブートの状態が変化すると、そのブートセッションではネットワークに接続できなくなります。

トラブルシューティング

詳細な TLS デバッグ

これは、MSCHAPv2 または TTLS の設定に問題がある場合に役立ちます。 ドロップインスニペット を使用して、次の環境変数を設定できます。

/etc/systemd/system/iwd.service.d/tls-debug.conf
[Service]
Environment=IWD_TLS_DEBUG=TRUE

その後、root で journalctbl -u iwd.service を実行して、iwd ログを確認します。

起動後の iwd.service の再起動

一部のマシンでは、起動後に動作するために iwd.service を再起動する必要があると報告されています。FS#63912thread 251432 を参照してください。これはおそらく、ワイヤレスネットワークカードの電源がオンになる前に、iwd が起動するために発生します。回避策として、systemctl list-units --type=device|grep wlan0コマンドでカードを待つために必要なサービスを見つけ、ユニットを拡張して、カードを待つようにします。

/etc/systemd/system/iwd.service.d/override.conf
[Unit]
After1=sys-XXXX-net-wlan0.device
Wants1=sys-XXXX-net-wlan0.device

次に systemd マネージャーの設定をリロードします。 それでも動かない場合は、以下の設定も試して下さい。

[Service]
ExecStartPre=ip link set wlan0 up

又は

[Service]
ExecStartPre=/usr/bin/sleep 2

再起動後の接続の問題

エントロピープールが低いと、特に再起動後に顕著な接続の問題が発生する可能性があります。エントロピープールを増やすための提案については、乱数生成 を参照してください。

ワイヤレスデバイスが udev によって名前が変更されない

バージョン 1.0 以降、iwd は無線デバイスの予測可能な名前変更を無効にします。これは以下の systemd ネットワークリンク設定ファイルをインストールすることで、 udev がインターフェースの名前を wlp#s# に変更するのを防ぎます。

/usr/lib/systemd/network/80-iwd.link
[Match]
Type=wlan

[Link]
NamePolicy=keep kernel

その結果、ワイヤレスリンク名 wlan# は起動後も保持されます。これにより、iwd udev インターフェイス名前変更で説明されているように、インターフェイスの名前変更に関する iwdudev 間の競合状態を解決しました。

もし、これが問題になるなら、次のコマンドでマスクしてみてください。

# ln -s /dev/null /etc/systemd/network/80-iwd.link

AP モードで DHCP が使えない

AP モードで iwd に接続する場合、クライアントは DHCP で IP アドレスを受け取れない場合があります。そのため、管理対象のインターフェイス上で、 iwd によるネットワーク設定を有効にする必要があります。

/etc/iwd/main.conf
[General]
EnableNetworkConfiguration=True

上記のファイルが存在しない場合は、作成する必要があります。

iwd のクラッシュにより WiFi が切断され続ける

ジャーナルiwd.service のクラッシュ ([1]) を報告しています。

中心的な問題は、ネットワーク接続を管理するために複数の競合するサービスがあることです。この問題を解決するには、それらを同時に 有効 にしていないことを確認してください。

Error loading client private key

キーファイルをロードするには、iwd には pkcs8_key_parser カーネルモジュール が必要です。起動時に /usr/lib/modules-load.d/pkcs8.conf を使用して systemd-modules-load.service(8) によってロードされますが、iwd がインストールされたばかりの場合は当てはまりません。

WPA エンタープライズネットワークに接続しようとしたときに、Error loading client private key /path/to/key などのメッセージが ジャーナル に表示される場合は、モジュールを手動でロードします:

# modprobe pkcs8_key_parser

iwd がローミングを続ける

接続が悪すぎる場合、iwd は他の既知の AP にローミングします。

これはシステムログに wlan0: deauthenticating from xx:xx:xx:xx:xx:xx by local Choice (Reason: 3=DEAUTH_LEAVING) として表示されます。

接続信号の強度を確認するには、

iwctl station wlan0 show | grep RSSI

しきい値を大きくして、接続を悪化させることができます。デフォルトの RoamThreshold は -70、RoamThreshold5G は -76 です。

/etc/iwd/main.conf
[General]
RoamThreshold=-75
RoamThreshold5G=-80

参照

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