ネットワーク設定/ワイヤレス

提供: ArchWiki
2022年6月10日 (金) 16:56時点におけるAshMyzk (トーク | 投稿記録)による版 (→‎認証: 翻訳)
ナビゲーションに移動 検索に移動
この記事あるいはセクションは翻訳の途中です。
ノート: 翻訳が古くなっています (議論: トーク:ネットワーク設定/ワイヤレス#)

関連記事

ネットワーク設定に関するメインの記事は ネットワーク設定 です。

ワイヤレスネットワークの設定は2段階で行います; まずワイヤレスデバイスを使うために正しいドライバがインストールされているか確認し(インストールメディア上では利用できても、明示的にインストールする必要があります)、インターフェースを設定します。次に、ワイヤレス接続を管理する方法を選びます。この記事では両方をカバーしています。また、ワイヤレス管理ツールへの追加リンクもあります。

#iw セクションでは iw を使ってワイヤレスネットワークインターフェイス/ワイヤレス LAN を手動で管理する方法を説明しています。ネットワーク設定#ネットワークマネージャ セクションでは、ワイヤレスインターフェイスを自動的に管理する際に使用できるいくつかのプログラムについて説明しています。それらはすべてネットワークプロファイルのサポートを含んでおり(ノート PC のようにワイヤレスネットワークを頻繁に切り替える際に便利です)、それらのうち一部は GUI を含んでいます。

目次

デバイスドライバ

デフォルトの Arch Linux カーネルはモジュール式です、つまりマシンに必要なドライバの多くはハードドライブに置かれ、モジュールとして利用されます。起動時に、udev がハードウェアの棚卸を実施します。Udev はハードウェアに必要である適切なモジュール(ドライバ)をロードし、次に、ドライバをロードしてカーネルインターフェースを作成します。

ワイヤレスチップセットによっては、適切なドライバーに加えて、ファームウェアも必要になります。ほとんどのファームウェアイメージはデフォルトでインストールされる linux-firmware パッケージに含まれていますが、プロプライエタリなファームウェアイメージは含まれていないため別にインストールする必要があります。#ドライバー・ファームウェアのインストールで説明されています。

ノート:
  • Udev は完全ではありません。起動時に udev が正しいモジュールをロードしない場合、手動でモジュールをロードしてください。また、場合によっては udev が1つのデバイスに複数のドライバをロードし、それが衝突を生んで設定が完了できなくなることがあります。不要なモジュールをブラックリスト化するようにしてください。
  • インターフェースの名前はドライバやチップセットによって変わります。例: wlan0, eth1, ath0ネットワーク設定#デバイス名を参照してください。

ドライバーの状態を確認する

あなたのカードに合ったドライバーがロードされているか確認するには、カードを PCI(e) を接続している場合は lspci -k、USB で接続している場合は lsusb -v コマンドの出力をチェックしてください。カーネルドライバーが使われているなら、例えば以下のように表示されるはずです:

$ lspci -k
06:00.0 Network controller: Intel Corporation WiFi Link 5100
	Subsystem: Intel Corporation WiFi Link 5100 AGN
	Kernel driver in use: iwlwifi
	Kernel modules: iwlwifi
ノート: カードが USB デバイスの場合、dmesg | grep usbcore を実行すると usbcore: registered new interface driver rtl8187 のように表示されるはずです。

また、ip link コマンドの出力をチェックして無線インターフェイス (例: wlan0, wlp2s1, ath0) が作成されているか確認してください。そして、ip link set <interface> up を実行してインターフェイスを立ち上げて下さい。例えば、インターフェイスが wlan0 の場合:

# ip link set wlan0 up

次のエラーメッセージが表示される場合: SIOCSIFFLAGS: No such file or directory、おそらくチップセットを機能させるためにファームウェアが必要です。

ファームウェアがロードされているかカーネルメッセージを確認してください:

$ dmesg | grep firmware
[   7.148259] iwlwifi 0000:02:00.0: loaded firmware version 39.30.4.1 build 35138 op_mode iwldvm

出力がない場合は、先に確かめたモジュール (この例では iwlwifi) の完全な出力のメッセージをチェックして関連するメッセージや問題を確認してください:

$ dmesg | grep iwlwifi
[   12.342694] iwlwifi 0000:02:00.0: irq 44 for MSI/MSI-X
[   12.353466] iwlwifi 0000:02:00.0: loaded firmware version 39.31.5.1 build 35138 op_mode iwldvm
[   12.430317] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUG disabled
...
[   12.430341] iwlwifi 0000:02:00.0: Detected Intel(R) Corporation WiFi Link 5100 AGN, REV=0x6B

カーネルモジュールが正しくロードされ、インターフェイスが立ち上がっている場合は、次のセクションを飛ばしてかまいません。

ドライバー・ファームウェアをインストールする

あなたのカードがサポートされているかどうか調べるために以下のリストを確認してください:

あなたのワイヤレスカードが上記のリストにあった場合、このページの #ドライバとファームウェアのトラブルシューティング サブセクションを見て下さい、特定のワイヤレスカードのドライバーやファームウェアのインストール情報が載っています。インストールした後、またドライバーの状態を確認してください。

ワイヤレスハードウェアが上記のリストになかった場合、おそらくサポートしているのが Windows のみだと思われます (Broadcom, 3com, etc)。そういったカードについては、ndiswrapper を使う必要があります。詳しくは #ndiswrapper を見て下さい。

ユーティリティ

他のネットワークインターフェイスと同じように、ワイヤレスインターフェイスも iproute2 パッケージの ip でコントロールします。

ワイヤレス接続の管理には基本的なツール一式が必要です。ネットワークマネージャ を使うか、以下のうち1つを直接使ってください:

ソフトウェア パッケージ WEXT nl80211 WEP WPA/WPA2 Archiso [1]
wireless_tools1 wireless_tools Yes No Yes No Yes
iw iw No Yes Yes No Yes
wpa_supplicant wpa_supplicant Yes Yes No Yes Yes
iwd iwd No Yes No Yes Yes
  1. 非推奨

一部のカードは WEXT のみをサポートすることに注意してください。

iw と wireless_tools の比較

以下の表は iwwireless_tools の比較可能なコマンドの概要です。さらなる例は iw replaces iwconfig を見てください。

iw コマンド wireless_tools コマンド 説明
iw dev wlan0 link iwconfig wlan0 リンクの状態を取得。
iw dev wlan0 scan iwlist wlan0 scan 利用可能なアクセスポイントをスキャン。
iw dev wlan0 set type ibss iwconfig wlan0 mode ad-hoc 動作モードを ad-hoc に設定。
iw dev wlan0 connect your_essid iwconfig wlan0 essid your_essid 接続してネットワークを開く。
iw dev wlan0 connect your_essid 2432 iwconfig wlan0 essid your_essid freq 2432M 接続して指定したチャンネルのネットワークを開く。
iw dev wlan0 connect your_essid key 0:your_key iwconfig wlan0 essid your_essid key your_key 16進数のキーを使って WEP で暗号化されたネットワークに接続。
iwconfig wlan0 essid your_essid key s:your_key ASCII 文字のキーを使って WEP で暗号化されたネットワークに接続。
iw dev wlan0 set power_save on iwconfig wlan0 power on 省電力機能を有効にする。

iw

ノート:
  • ほとんどのコマンドは root 権限で実行する必要があることに注意してください。通常ユーザーで実行すると、コマンドによっては (例: iwlist) エラーを出さずに終了して正しい出力をしないため、混乱をきたすおそれが有ります。
  • ハードウェアや暗号化方式によっては、手順のいくつかは必要ありません。カードによってはアクセスポイントに関連付けをして IP アドレスを取得する前に、インターフェースの有効化やアクセスポイントのスキャニングが必要なことがあります。実験が必要かもしれません。例えば、WPA/WPA2 ユーザーは #関連付け の手順から直接ワイヤレスネットワークを有効化できます。

このセクションに出てくる例ではあなたのワイヤレスデバイスを interface、wifi のアクセスポイントを your_essid と仮定しています。それぞれ適切な文字列に置き換えて下さい。

インターフェイス名の取得

ヒント: iw ツールの 公式ドキュメント により多くのサンプルがあります。

ワイヤレスインターフェイスの名前を取得するには:

$ iw dev

インターフェイス名は "Interface" という単語のあとに出力されます。例えば、インターフェイス名は wlan0 が一般的です。

インターフェイスの状態の取得

リンクの状態を確認するには、次のコマンドを使ってください。

$ iw dev interface link

次のコマンドで tx/rx バイトの総量やシグナルの強さといった統計値をを取得することができます:

$ iw dev interface station dump

インターフェイスの有効化

ヒント: 通常、この手順は不要です。

カードによっては iwwireless_tools を使う前にカーネルインターフェースをアクティブ化する必要があります:

# ip link set interface up
ノート: RTNETLINK answers: Operation not possible due to RF-killのようなエラーが表示される場合、ハードウェアのスイッチがオンになっているか確認してください。詳細は #Rfkill の注意点 を見てください。

インターフェイスが立ち上がっているか確認するには、次のコマンドの出力を見て下さい:

$ ip link show interface
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
    link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff

<BROADCAST,MULTICAST,UP,LOWER_UP> にある UP がインターフェイスが立ち上がっていることを示しています。後ろにある state DOWN は関係ありません。

アクセスポイント検索

利用できるアクセスポイントを見るには:

# iw dev interface scan | less
ノート: Interface does not support scanning と表示される場合、おそらくファームウェアのインストールを忘れているはずです。iw が root 権限で実行されていない時にもこのメッセージが表示されることがあります。
ヒント: 住んでいる地域によっては、利用できるネットワークを全て表示するために規制範囲を正しく設定する必要があります。

チェックするべきポイント:

  • SSID: ネットワークの名前。
  • Signal: は dBm 単位でワイヤレスの信号強度を報告します(例: -100 から 0)。負の数が 0 に近づくほど、信号の品質が良いことを表します。良質なリンクや低品質なリンクで報告された強度を観察することで、それぞれの範囲を知ることができます。
  • Security: 直接は報告されません、capability から始まる行を見て下さい。capability: ESS Privacy ShortSlotTime (0x0411) のように Privacy が含まれている場合、そのネットワークは保護されています。
    • RSN 情報ブロックがある場合、そのネットワークは Robust Security Network プロトコル、別名 WPA2 によって保護されています。
    • WPA 情報ブロックがある場合、そのネットワークは Wi-Fi Protected Access プロトコルによって保護されています。
    • RSNWPA ブロックには以下の情報が含まれていることがあります:
      • Group cipher: 値は TKIP, CCMP, その両方, もしくはその他。
      • Pairwise ciphers: 値は TKIP, CCMP その両方, もしくはその他。Group cipher と同じ値である必要はありません。
      • Authentication Suites: 値は PSK, 802.1x, もしくはその他。家庭用ルーターでは、一般的に PSK になるでしょう (つまりパスフレーズ)。大学などでは、ログインとパスワードが必要な 802.1x スイートになると思われます。利用するためにはどのキーマネージメント (例: EAP) とカプセル化 (例: PEAP) が使われているか知る必要があります。詳しくは Wikipedia:Authentication protocol と関連記事を見て下さい。
    • Privacy があるのに RSNWPA ブロックがない場合、WEP が使われています。

動作モードの設定

ワイヤレスカードの正しい動作モードを設定する必要があるかもしれません。具体的に言うと、アドホックネットワークに接続したい場合、動作モードを ibss に設定する必要があります:

# iw dev interface set type ibss
ノート: カードによっては、動作モードを変更するためにワイヤレスインターフェースを down させておく必要があるかもしれません (ip link set interface down)。

アクセスポイントへの接続

暗号化方式によっては、使用するワイヤレスデバイスをアクセスポイントと関連付けて、暗号化キーを渡す必要があります:

  • 暗号化なし
    # iw dev interface connect "your_essid"
  • WEP
    • 16進数、または ASCII キーを使用する(WEP のキーは固定長なので、キーの形式は自動的に判別されます):
      # iw dev interface connect "your_essid" key 0:your_key
    • 16進数、または ASCII キーを使用し、3番目に設定したキーをデフォルトとして指定する(キーは 0 からカウントされます。4 つまで可能です):
      # iw dev interface connect "your_essid" key d:2:your_key
  • その他
    • iw は WEP のみを扱えます。他の暗号化スキームを使用して接続する場合、下記の #認証 を見てください。

どの方法を使用しても、正しく関連付けできたかどうかは以下で確認できます:

# iw dev interface link

認証

この記事またはセクションは加筆を必要としています。

WPA2 Personal

WPA2 Personal(別名: WPA2-PSK)は Wi-Fi Protected Access のモードの1つです。

wpa_supplicantiwd を用いて WPA2 Personal ネットワークに認証したり、ネットワークマネージャを用いて接続したりできます。ネットワークに認証しただけの場合、接続はまだ完全には機能せず、手動またはDHCPクライアントを用いて IP アドレスとルートを割り当てる必要があります。

WPA2 Enterprise

WPA2 EnterpriseWi-Fi Protected Access のモードの1つです。WPA2 Personal よりも良いセキュリティとキー管理を提供し、VLAN や NAP といった他のエンタープライズタイプの機能を提供します。しかし、これは、ユーザの認証を処理するために RADIUS サーバと呼ばれる外部の認証サーバを必要とします。これは、ワイヤレスルータとアクセスポイント(AP)の他に何も必要とせず、すべてのユーザに対して1つのパスフレーズかパスワードを使用する Personal モードとは対照的です。

Enterprise モードでは、ユーザはユーザ名とパスワード、もしくはデジタル証明書、もしくはその両方を用いて Wi-Fi ネットワークにログインできます。それぞれのユーザは動的でユニークな暗号鍵を持っているため、ワイヤレスネットワーク上のユーザからユーザへの盗聴防止や暗号強度の向上に役立ちます。

このセクションでは、WPA2 Enterprise モードを用いてワイヤレスアクセスポイントに接続するためのネットワーククライアントの設定について説明します。アクセスポイントそのもののセットアップに関する情報は ソフトウェアアクセスポイント#RADIUS を見てください。

ノート: Personal モードでは要求された時に単にパスフレーズを入力する必要があるだけですが、Enterprise モードではより複雑なクライアントの設定が必要です。クライアントはおそらくサーバの CA 証明書を(EAP-TLS を使用する場合はユーザごとの証明書も)インストールし、手動でワイヤレスセキュリティと 802.1X 認証を設定する必要があるでしょう。

プロトコル間の比較はこの表を見てください。

警告: クライアントがサーバの CA 証明書を確認せずに WPA2 Enterprise を使用することは可能ですが、常に確認すべきです。なぜなら、アクセスポイントの認証なしでは、接続が中間者攻撃の対象となる可能性があるからです。このようなことが起こりうる理由は、接続のハンドシェイク自体を暗号化することはできる一方、広く使用されているセットアップでは平文または簡単に破れる #MS-CHAPv2 を使用してパスワード自体を送信するからです。ゆえに、クライアントはパスワードを悪意のあるアクセスポイントに送信するかもしれません。その結果、そのアクセスポイントは接続をプロキシすることができてしまいます。

MS-CHAPv2

PEAP の MSCHAPv2 type-2 認証を要求する WPA2-Enterprise ワイヤレスネットワークは時々、ppp パッケージに加えて pptpclient パッケージを必要とします。しかし、netctl は ppp-mppe 無しでも動作するようです。いずれの場合でも、MSCHAPv2 は非常に脆弱であるため、使用は推奨されません。しかし、他の手段は通常選択肢になりません。

eduroam

eduroam は研究、高等教育、継続教育のユーザー向けの、WPA2 Enterprise ベースの国際ローミングサービスです。

ノート:
  • このセクションにある如何なるプロファイルを適用する前に始めに機関の接続の詳細を確認してください。プロファイル例は機能することもセキュリティ要件を満たすことも保証されません。
  • 接続プロファイルを暗号化せずに保存する場合、root として chmod 600 profile を実行して、ファイルへの読み込みアクセスを root アカウントに制限することを推奨します。
ヒント: NetworkManager 向けの設定は eduroam Configuration Assistant Tool で生成できます。

手動/自動 セットアップ

  • wpa_supplicant は、設定ファイルを直接編集するか CLI/GUI フロントエンドを使用することで設定できます。また、DHCP クライアントと組み合わせて使うことができます。接続の詳細を設定するには /usr/share/doc/wpa_supplicant/wpa_supplicant.conf の例を見てください。
  • iwd#WPA Enterprise
  • NetworkManager は、nmcliグラフィカルなフロントエンドを使用して WPA2 Enterprise プロファイルを作成できます。nmtui はこれをサポートしていません(NetworkManager issue 376)。しかし、既存のプロファイルを使用することはできます。
  • ConnMan は、ネットワークに接続する前に、別の設定ファイルを必要とします。詳細は connman-service.config(5)ConnMan#eduroam に接続 を見てください。
  • netctl は、WPAConfigSection= に含まれるブロックを通して wpa_supplicant の設定をサポートします。詳細は netctl.profile(5) を見てください。
ノート: 特殊な引用符の規則が適用されます。netctl.profile(5) § SPECIAL QUOTING RULES を見てください。
ヒント: WPAConfigSection'ca_cert="/path/to/special/certificate.cer"' の行を追加することでカスタムの証明書を指定できます。

WPA3 Personal

WPA3 Personal(別名: WPA3-SAE) は Wi-Fi Protected Access のモードの1つです。

wpa_supplicant は WPA3 Personal をサポートします(バージョン 2:2.9-4 より、CONFIG_SAEwpa_supplicant で有効化されています)。

iwdバージョン 0.7 から WPA3 をサポートしています。

ヒントとテクニック

規制範囲に従う

規制範囲(regdomein) は、ワイヤレスハードウェアの動作が FCC や ETSI、他の組織により定められた地域の法律に準拠するようにワイヤレスドライバを設定する際に用いられます。規制範囲では ISO 3166-1 alpha-2 国名コードを使用します。例えば、米国は "US"、中国は "CN"、日本は "JP" となります。

規制範囲は、どのワイヤレスチャネルが利用できるかに関与します。2.4GHz 帯で許可されているチャネルは、米国では 1~11、日本では 1~14、他の殆どの国では 1~13 です。5Ghz 帯では、許可されるチャネルの規則は非常に複雑です。どちらの場合でも、より詳細な情報はこの WLAN チャネルのリストを見てください。

規制範囲はまた、ワイヤレスデバイスから放射される電波の実効輻射電力(EIRP)の制限にも関与します。これは送信パワー(Tx Power)から算出され、dBm/mBm (1dBm=100mBm) または mW (対数スケール)により測られます。2.4Ghz 帯では、米国とカナダでは最大が 30dBm、ヨーロッパのほとんどの地域では 20dBm、その他の地域では 20dBm~30dBm です。通常、5Ghz 帯では、最大値はより低く規定されます。より詳細な情報は wireless-regdb を見てください(EIRP の dBm 値はそれぞれの行の2番めのカッコの中にあります)。

規制範囲の設定を誤ると便利である場合があります(例えば、チャネルが混雑している時に未使用のチャネルを利用できたり、送信パワーを増やして送信範囲を広げたり)。しかし、地域の法律に違反したり、他の無線機器と鑑賞する可能性があるので、推奨されません

wireless-regdbインストールされていれば、カーネルは規制範囲のデータベースを直接読み込みます。直接読み込むため、セキュリティ上の理由により、カーネルは CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS を yes に設定して、データベースの暗号検証を有効化してあるべきです。これは Arch のカーネルには有効化されていますが、他のカーネルを使用していたり自分でコンパイルしている場合、これを確認するべきです。さらなる情報はこのガイドで見られます。

規制範囲を設定するには wireless-regdb をインストールして再起動してください)cfg80211 モジュールや関連するすべてのドライバを再ロードするためです)。ブートログを見て、データベースが読み込まれていることや cfg80211 によってキーが検証されていることを確認してください:

# dmesg | grep cfg80211

現在の規制範囲を日本に設定するには:

# iw reg set JP

情報を見るには:

$ iw reg get
ノート: デバイスが国名コード "00" に設定されている場合があります(これは "world regulatory domain" で、一般的な設定が含まれています)。この設定を解除できない場合、以下で説明されているように設定を確認してください。

しかし、規制範囲を設定しても設定が変わらない場合があります。一部のデバイスは、デバイスの制限を規定する firmware/EEPROM で規制範囲が設定されています。これは、ソフトウェアでは制限を増やすことしかできず、制限を減らすことができないことを意味します。例えば、中国のデバイスはソフトウェアで米国の規制範囲に設定できるでしょうが、中国では EIRP の最大値が 20dBm と規定されているので、デバイスは米国の最大 EIRP である 30dBm で送信を行うことはできません。

例えば、Atheros デバイスのファームウェアで規制範囲が設定されているかどうか確認するには:

# dmesg | grep ath:

他のチップセットの場合、"EEPROM" や "regdomain"、デバイスドライバの名前で検索すると良いかもしれません。

規制範囲が正しく変更されたかどうかを確認し、利用可能なチャネル数や許可されている送信パワーを確認するには:

$ iw list | grep -A 15 Frequencies:

規制範囲の設定を永続化するには、/etc/conf.d/wireless-regdom を編集して、適切なドメインをアンコメントしてください。

wpa_supplicant でも、/etc/wpa_supplicant/wpa_supplicant.confcountry= 行で規制範囲を設定できます。

cfg80211 カーネルモジュールでもモジュールオプションを追加することで特定の規制範囲を使用するように設定できます(例: options cfg80211 ieee80211_regdom=JP)。このモジュールオプションは 古い規制範囲の実装から継承されたもので、最近のカーネルでは iwwpa_supplicant のようなユーティリティから nl80211 を通して来たようなユーザスペースの規制ヒントとして振る舞います。

Rfkill の注意点

多くのノート PC にはワイヤレスカードの電源を切るハードウェアボタン/スイッチがあります。しかし、カードがカーネルによってブロックされている場合があります。これは rfkill によって操作できます。現在の状態を確認するには以下のコマンドを使用してください:

# rfkill list
0: phy0: Wireless LAN
	Soft blocked: yes
	Hard blocked: yes

カードが hard-blocked である場合、ハードウェアボタン/スイッチを使ってカードをアンロックできます。カードが hard-blocked でなく、soft-blocked である場合、以下のコマンドを使用してください:

# rfkill unblock wifi
ノート: ハードウェアボタンを押すと、カードが hard-blockedsoft-unblocked の状態から hard-unblockedsoft-blocked の状態になることがあります(つまり、soft-blocked のビットがなんであっても切り替わるということです)。これは rfkill カーネルモジュールのいくつかのオプションを切り替えることで調整できます。

ワイヤレスカードを切り替えるハードウェアボタンはベンダー固有のカーネルモジュールによって操作されます。これらは WMI モジュールであることが多いです。非常に新しいハードウェアモデルでは特に、最新の安定版カーネルでモデルが完全にサポートされていないことがあります。この場合、カーネルのバグトラッカーで情報を探し、まだ報告されていない場合は各ベンダーのカーネルモジュールのメンテナにモデルを報告することが役に立ちます。

[2] も参照してください。

省電力

電源管理#ネットワークインターフェイス を見てください。

トラブルシューティング

一時的にネットワークにアクセス

ハードウェアに問題があるときに、インターネットに接続してソフトウェアをダウンロードしたりフォーラムでヘルプを得たい場合、Android に内蔵されている機能を使って USB ケーブルでインターネット共有をすることができます。詳しくは Android テザリング#USB テザリングを見て下さい。

ログの取得

トラブルシューティングで一番初めにするべきなのはシステムのログファイルを解析することです。全部を手でパースしないために、新しいターミナル(コンソール)を開いて、接続を試行している間のカーネルメッセージを次のコマンドで見ると良いでしょう:

$ dmesg -w

ネットワーク管理にツールを使っている場合、systemd でも同じことができます:

# journalctl -f 

この記事にあるそれぞれのツールは詳細なデバッグ出力をするオプションを用意しているので、必要ならば、解析の第二段階としてそれを使うことができます。

IP アドレスの取得に失敗する

  • デフォルトの dhcpcd クライアントでは IP アドレスの取得に何度も失敗する場合、代わりに dhclient をインストールして使用してみて下さい。あなたの使っている接続マネージャで DHCP クライアントとして dhclient を忘れずに選択してください。
  • 有線インターフェイスでは IP アドレスを取得できるのに、無線インターフェイスでは出来ない場合、ワイヤレスカードの省電力機能を無効にしてみてください:
# iwconfig wlan0 power off
  • waiting for carrier の問題でタイムアウトエラーになる場合、特定のデバイスのチャンネルモードを auto に設定する必要があるかもしれません:
# iwconfig wlan0 channel auto

チャンネルを auto に変える前に、あなたのワイヤレスインターフェースが止まっていることを確認してください。変更が成功したら、インターフェースを立ち上げなおして次の手順に進んで下さい。

IP アドレスは取得できるのにホスト解決ができない

公共の無線ネットワークを使っている場合 Captive Portal が存在することがあります。その場合、resolv.conf からカスタム DNS サーバーを削除する必要があります。

RTS や fragmentation のしきい値を設定する

無線ハードウェアはデフォルトでは RTS と fragmentation を無効化しています。帯域幅を犠牲にスループットを高める方法は2つ存在します。近隣にアクセスポイントが多く存在する環境で、干渉によってタイムアウトが発生したり接続が途切れる場合、設定によって改善する可能性があります。

パケットの断片化は fragmentation の閾値を越えたパケットを分割してスループットを改善します。最大値 (2346) にするとパケットが超過することはなくなるため断片化を無効化にするのと同義です。最低値 (256) にするとスループットは最大になりますが、かなり帯域幅を消費します。設定するには:

# iw phy0 set frag 512

RTS は RTS の閾値を越えるパケットを送信する前にアクセスポイントとハンドシェイクを実行することでスループットを改善します。最大値 (2347) にするとパケットが超過しなくなり RTS を無効化するのと同じになります。最低値 (0) では全てのパケットで RTS が有効になりますが、大抵の場合は無駄になります。

# iw phy0 set rts 500
ノート: phy0$ iw phy で確認できるワイヤレスデバイスの名前に置き換えてください。

ランダムに切断する

原因 #1

dmesg に wlan0: deauthenticating from MAC by local choice (reason=3) と表示され Wi-Fi 接続が失われる場合は、おそらく Wi-Fi カードの省電力機能がアグレッシブすぎるのが原因です [3]。無線カードの省電力機能を無効化してみてください:

# iwconfig wlan0 power off

この設定を永続化する方法は省電力設定を見て下さい (on の代わりに off を指定)。

あなたのカードが iwconfig wlan0 power off をサポートしていない場合は、BIOS の電源管理のオプションを確認してください。Lenovo W520 では BIOS にある PCI-Express の電源管理を無効化すると問題が解決します。

原因 #2

頻繁に切断が発生し、dmesg で以下のようなメッセージが表示される場合:

ieee80211 phy0: wlan0: No probe response from AP xx:xx:xx:xx:xx:xx after 500ms, disconnecting

ルーターの設定でチャンネルの帯域を 20MHz に変更してみてください。

原因 #3

ノートパソコン (例: Thinkpad X200 シリーズ) に rfkill のハードウェアスイッチが付いている場合、スイッチの経年劣化や設計不良により、スイッチ (またはメインボードへの接続) がゆるくなってしまっている可能性があります。結果として、スイッチに触れたり、ノートパソコンをちょっと動かすだけで、ハードウェアによる無線のブロックが発生して、インターネットから切断されているのかもしれません。このような問題に対するソフトウェアによる解決方法は存在しません。電気仕掛けのスイッチなら、BIOS にスイッチを無効化するオプションが存在することがあります。機械式のスイッチの場合 (ほとんどのスイッチはそうです)、スイッチを壊してしまうというのが解決法になります: メインボードや wifi カードとの接触点をハンダ付けする、スイッチを糊で固める、塞ぐ、またはスクリューナットを使ってスイッチを固く締める、取り除いてしまう。

原因 #4

頻繁に切断したり接続が成功しない他の原因として、ルーターが仕様に合わない挙動をする、ルーターの設定が誤っている、他の無線デバイスによる干渉、などが考えられます。

トラブルシューティングするには、まず認証なしでルーターに接続できないか試して下さい。

それで動作する場合、WPA/WPA2 を再度有効にして、ルーターの設定を変更してみてください。例えば:

  • ルーターが(クライアントで使っている)無線デバイスと比べて相当に旧式である場合、ルーターを別のワイヤレスモードに設定して動作するかテストする
  • mixed-mode 認証を無効化 (例: WPA2 と AES、またはルーターが古い場合 TKIP)
  • "auto" チャンネル以外のチャンネルを使ってみる (隣家のルーターが古くて干渉している可能性があります)
  • WPS を無効化
  • 40Mhz 周波数帯を無効化 (スループットは悪くなりますが衝突は起きにくくなります)
  • ルーターにサービス品質に関する設定がある場合、設定が完全であることを確認 (例: Wi-Fi Multimedia (WMM) は任意の QoS フロー制御の一部です。問題のあるルーターファームウェアは設定が有効になっていない場合も有効であるかのように見せかけてくることがあります)

規制範囲が間違っているために Wi-Fi ネットワークが認識されない

コンピュータの Wi-Fi チャンネルがユーザーの居住国の規制範囲に一致していない場合、Wi-Fi ネットワークが認識されないことがあります。#規制範囲に従うを参照して設定を行ってください。

ドライバとファームウェアのトラブルシューティング

このセクションでは、一般的な方法とは異なる、特定のチップセットのカーネルモジュールとファームウェアをインストールする方法を説明します。

モジュールの動作についての一般的な情報はカーネルモジュールを見て下さい。

Ralink/Mediatek

rt2x00

Ralink のチップセット用の統合ドライバー (rt2500, rt61, rt73 などを置き換えます)。このドライバーは Linux カーネル 2.6.24 から含まれており、チップに合わせて適切なモジュールをロードするだけで問題なく使うことができます: rt2400pci, rt2500pci, rt2500usb, rt61pci, rt73usbrt2x00 モジュールもそれぞれ自動でロードします。

このモジュールでサポートされているデバイスの一覧はプロジェクトの ホームページ で見ることができます。

追加情報
  • カーネル 3.0 から、rt2x00 は次のドライバーを含んでいます: rt2800pci, rt2870usb
  • カーネル 3.0 から、staging ドライバー rt2860start2870sta は mainline ドライバー rt2800pcirt2800usb によって置き換えられました[4]
  • デバイスによっては iwpriv を使って様々なオプションを設定することができます。これらのオプションについては Ralink から入手できる source tarballs にまとめられています。

rt3090

rt3090 を使っているデバイスには rt2800pci ドライバを使うことができますが、うまく動作しないことがあります (例えば、時々 2Mb/s 以上の速度が出なくなります)。

rt3290

rt3290 チップセットはカーネルの rt2800pci モジュールによって認識されます。ただし、問題が起こることもあり、そのような場合はパッチがあてられた Ralink ドライバーに戻すと良いようです。

rt3573

2012年時点で新しいチップセットです。Ralink が提供している新しいプロプライエタリドライバが必要かもしれません。様々な製造会社がそれを使っています、Belkin N750 無線 USB アダプタのスレッドを見て下さい。

rt5572

5 Ghz 帯をサポートした2012年時点で新しいチップセットです。Ralink が提供している新しいプロプライエタリドライバをコンパイルする必要があるかもしれません。DLINK DWA-160 rev のためのコンパイル方法が書かれています。B2 here

mt7612u

新しい商号 Mediatek でリリースされている最新のチップセットです。AC1200 または AC1300 チップセットになります。サポートページ で Linux 用のドライバーがメーカーから公開されています。

Realtek

rtl8192cu

このドライバーはカーネルに含まれていますが、多くのユーザーがネットワークのスキャンはできても接続が出来ないと報告しています。

問題が起こる場合は 8192cu-dkmsAUR パッケージで改善するかもしれません。

rtl8192e

このドライバはカーネルパッケージの一部になっています。以下のエラーメッセージを表示してモジュールの初期化が失敗する場合があるかもしれません:

rtl819xE:ERR in CPUcheck_firmware_ready()
rtl819xE:ERR in init_firmware() step 2
rtl819xE:ERR!!! _rtl8192_up(): initialization is failed!
r8169 0000:03:00.0: eth0: link down

回避方法は単純にモジュールをアンロードするだけです:

# modprobe -r r8192e_pci

そして (一定時間後) モジュールをリロードします:

# modprobe r8192e_pci

rtl8188eu

TP-Link TL-WN725N v2 (rtl8179 チップセットを使用) などのドングルには、このドライバーと互換性のあるチップセットを使っているものがあります。ドングルを使うには AUR の 8188eu-dkmsAUR パッケージをインストールしてください。

rtl8723ae/rtl8723be

Linux カーネルのバージョン 3.6 から新しい rtl8723ae モジュールが含まれるようになりました。同 3.15 から rtl8723be モジュールが追加されています。

このカードの省電力機能についてエラーが発生することがあります。症状としては、ときどき上位のネットワークマネージャ (netctl, NetworkManager) で認識されなくなり切断されます。このエラーは dmesg -wjournalctl -f を実行して省電力機能や rtl8723ae/rtl8723be モジュールに関連するメッセージを探すことで確認できます。この問題を解決するには、fwlps=0 カーネルオプションを使って、WiFi カードが自動的にスリープ状態にならないようにしてください:

/etc/modprobe.d/rtl8723ae.conf
options rtl8723ae fwlps=0

または:

/etc/modprobe.d/rtl8723be.conf
options rtl8723be fwlps=0

信号が弱い場合、デバイスにアンテナがひとつしか接続されておらず自動モードが機能していない可能性があります。ant_sel=1ant_sel=2 カーネルオプションでアンテナを強制的に設定することができます [5]

rtl88xxau

Realtek の rtl8811au/rtl8812au/rtl8814au/rtl8821au チップセットは AC600 から AC1900 までの様々な USB アダプタ用に設計されています。

以下のパッケージでカーネルドライバーをインストールできます:

チップセット ドライバーのバージョン AUR パッケージ ノート
rtl8812au 5.2.9.3 rtl8812au-dkms-gitAUR rtl8812au 専用の最新版のドライバー
rtl8811au, rtl8812au, rtl8821au 5.1.5 rtl8821au-dkms-gitAUR rtl8812au については最新版を使うことを推奨します。
rtl8814au 4.3.21 rtl8814au-dkms-gitAUR rtl8813au でも動作する可能性があります。

上記のパッケージを使うには DKMS が必要です。適切なカーネルヘッダーをインストールしてください。

rtl8822bu

rtl8822bu-dkms-gitAUR には Edimax EW7822ULC USB3 や Asus AC53 Nano USB 802.11ac アダプタに搭載されている Realtek 8822bu チップセットを使うためのカーネルモジュールが入っています。

パッケージをインストールするには DKMS が必要です。適当なカーネルヘッダーをインストールしてください。

rtl8xxxu

サードパーティ製のモジュールをコンパイルすることでメインラインカーネルの rtl8xxxu モジュールの問題を解決できる場合があります。ソースコードは GitHub リポジトリ に存在します。

一部のドライバーは AUR の rtl8723bu-gitAUR[リンク切れ: パッケージが存在しません]rtl8723bu-git-dkmsAUR パッケージなどでインストールできます。

Atheros

MadWifi チーム によって、Atheros チップセットを使っているデバイス用に3つのモジュールがメンテナンスされています:

  • madwifi は古い、旧式のドライバーです。2.6.39.1 から Arch のカーネルには含まれていません[6]
  • ath5k は新しいドライバーで madwifi ドライバーを置き換えます。現在、チップセットによってはベターな選択肢ですが、全てのチップセットがサポートされているわけではありません(下を見て下さい)。
  • ath9k は3つのドライバーの中で最新のドライバーで、新しい Atheros チップセットに対応しています。802.11n 対応のチップは全てサポートしています。

Atheros デバイス向けに他にも複数のドライバーが存在します。詳しくは Linux Wireless ドキュメント を見て下さい。

ath5k

参照:

ウェブページのロードがランダムで極端に遅くなったり、デバイスが IP アドレスを取得できなくなったら、ath5k モジュールに nohwcrypt=1 オプションを付けてロードして暗号化をハードウェアからソフトウェアに切り替えてください。詳しくはカーネルモジュール#設定を見て下さい。

ラップトップによっては無線 LED インディケータが赤と青に点滅する問題が発生することがあります。この問題を解決するには、以下を実行して下さい:

# echo none > /sys/class/leds/ath5k-phy0::tx/trigger
# echo none > /sys/class/leds/ath5k-phy0::rx/trigger

もしくは このバグレポート を見て下さい。

ath9k

参照:

Linux 3.15.1 現在、一部のユーザーが帯域幅が減少することを報告しています。/etc/modprobe.d/ath9k.conf を編集して以下の行を追加することで問題が解決することがあります:

options ath9k nohwcrypt=1
ノート: lsmod コマンドを使って使用しているモジュールの名前を確認して必要に応じて上記のコマンドを置き換えてください (例: ath9k_htc)。

安定性に問題が起こる場合、backports-patchedAUR パッケージを試してみることもできます。サポートと開発のための ath9k メーリングリスト が存在します。

省電力機能

Linux Wireless には AR9280 よりも新しい Atheros 製の ath9k シングルチップでは動的な省電力機能が有効になると書かれていますが、一部のデバイス (例: AR9285) では powertop を使って確認すると省電力機能が無効になっていることがわかります。そのような場合、手動で有効にしてください。

ただし一部のデバイス (例: AR9285) では省電力機能を有効にすると以下のようなエラーが発生します:

# iw dev wlan0 set power_save on
command failed: Operation not supported (-95)

ath9k モジュールの ps_enable=1 オプションを設定することでエラーは解決できます:

/etc/modprobe.d/ath9k.conf
options ath9k ps_enable=1
ASUS

ASUS のノートパソコンでは (ASUS U32U シリーズでテスト)、/etc/modprobe.d/asus_nb_wmi.confoptions asus_nb_wmi wapf=1 を追加すると rfkill に関連する問題が解決するかもしれません。

Intel

ipw2100 と ipw2200

モジュールはカーネルによって完全にサポートされていますが、追加のファームウェアが必要になります。使うチップセットによって、ipw2100-fwipw2200-fwインストールしてください。そして適切なモジュールを再ロードしてください。

ヒント: 以下のモジュールオプションを使用できます:
  • rtap_iface=1 オプションを使うと radiotap インターフェイスが有効になります
  • led=1 オプションを使うと無線が接続・切断した時にフロントの LED が光るようになります

iwlegacy

iwlegacy は Intel の 3945, 4965 ワイヤレスチップのワイヤレスドライバーです。このファームウェアは linux-firmware パッケージに含まれています。

udev が自動でドライバーをロードするはずですが、ロードされないときは手動で iwl3945iwl4965 をロードしてください。詳しくはカーネルモジュール#ロードを見てください。

信号品質が極端に悪い場合やネットワークに接続できない場合、802.11n を無効化してみてください:

/etc/modprobe.d/iwl4965.conf
options iwl4965 11n_disable=1

iwlwifi

iwlwifi は 5100AGN, 5300AGN, 5350AGN などの Intel の最新のワイヤレスチップのワイヤレスドライバーです。full list of supported devices を見て下さい。このファームウェアは linux-firmware パッケージに含まれています。linux-firmware-iwlwifi-gitAUR パッケージをインストールすることで新しいバージョンを使用することができます。

接続品質が悪いといった一般的なネットワーク接続の問題が起こる場合は、802.11n を無効にしてソフトウェア暗号を有効にしてみて下さい:

/etc/modprobe.d/iwlwifi.conf
options iwlwifi 11n_disable=1 swcrypto=1

802.11n モードでアップリンクの速度が遅い (例: 20Mbps) 場合は、アンテナのアグリゲーションを有効化してみてください:

/etc/modprobe.d/iwlwifi.conf
options iwlwifi 11n_disable=8

オプションの名前に惑わされてはいけません。値が 8 に設定されている場合、無効化ではなくアンテナのアグリゲーションが再有効化されます [7] [8]

これで上手くいかない場合、無線アダプターの省電力モードを切ってみて下さい。永続的に設定するには、新しい udev ルールを追加します:

/etc/udev/rules.d/80-iwlwifi.rules
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="your_mac_address", RUN+="/usr/bin/iw dev %k set power_save off"
Bluetooth の共存

Bluetooth ヘッドセットを接続できない場合やダウンロード速度があまり出ない場合、Bluetooth の共存を無効化してみてください [9]:

/etc/modprobe.d/iwlwifi.conf
options iwlwifi bt_coex_active=0

LED の点滅を無効化する

ノート: iwlegacyiwlwifi ドライバーで動作します。

デフォルト設定ではモジュールの動作中 LED が点滅するようになっています。人によってはこれが鬱陶しく感じるかもしれません。Wi-Fi を使っている時に LED を固定するには、systemd-tmpfiles を使って下さい:

/etc/tmpfiles.d/phy0-led.conf
w /sys/class/leds/phy0-led/trigger - - - - phy0radio

変更を適用するには、systemd-tmpfiles --create phy0-led.conf を実行するか再起動してください。

LED のトリガの全ての設定値を見るには:

# cat /sys/class/leds/phy0-led/trigger
ヒント: /sys/class/leds/phy0-led がない場合、led_mode="1" モジュールオプションを使ってみて下さい。

Broadcom

Broadcom ワイヤレスを見て下さい。

他のドライバー・デバイス

Tenda w322u

この Tenda カードは rt2870sta デバイスとして扱って下さい。#rt2x00 を参照。

orinoco

カーネルパッケージの一部となっているので、別個インストールする必要はありません。

いくつかの Orinoco チップセットは Hermes I/II です。orinoco_cs の代わりに wlags49_h1_cs を使うことで WPA サポートを得ることができます。このドライバーを使うには orinoco_csブラックリスト化して下さい。

prism54

このドライバー p54 はカーネルに含まれていますが、このサイト からあなたのカードに対応するファームウェアをダウンロードして /usr/lib/firmware ディレクトリにインストールする必要があります。

ノート: 古いドライバー prism54 が新しいドライバー (p54pcip54usb) と衝突することがあります。prism54ブラックリスト化して下さい。

ACX100/111

警告: これらのデバイスのドライバーは壊れており新しいバージョンのカーネルでは動作しません。

パッケージ: tiacx tiacx-firmware (公式リポジトリや AUR からは削除されました)

詳しくは 公式 wiki を見て下さい。

zd1211rw

zd1211rw は ZyDAS ZD1211 802.11b/g USB WLAN チップセット用のドライバで、最近の Linux カーネルに含まれています。サポートされているドライバの一覧は [10] を見て下さい。zd1211-firmwareAUR パッケージとして提供されているファームウェアをインストールすることだけが必要です。

hostap_cs

Host AP は Intersil の Prism2/2.5/3 チップセットを使ったワイヤレス LAN カードの Linux ドライバです。hostap_cslinux パッケージに含まれています。

ノート: orinico_cs と問題を発生することがあるので、ブラックリスト化してください。

ndiswrapper

Ndiswrapper は Linux で Windows のドライバーを使うためのラッパースクリプトです。互換リストは ここ を見て下さい。Windows のドライバーに含まれる *.inf.sys ファイルが必要です。ドライバがあなたのアーキテクチャ (例: 32/64 ビット) に適合しているかも確認してください。

ヒント: *.exe ファイルからこれらのファイルを展開する必要がある場合は、cabextract を使って下さい。

ndiswrapper を設定するには ndiswrapper-dkms をインストールしてから以下の手順に従って下さい。

1. ドライバを /etc/ndiswrapper/* にインストールします

# ndiswrapper -i ファイル名.inf

2. ndiswrapper にインストールされたドライバを全て一覧します

$ ndiswrapper -l

3. 以下の設定ファイルを書き出します

/etc/modprobe.d/ndiswrapper.conf
ndiswrapper -m
depmod -a

これで ndiswrapper のインストールはほぼ完了です; あとはカーネルモジュール#ロードの指示に従って起動時に自動でモジュールをロードするようにしてください。

重要なことは ndiswrapper が他のモジュールと一緒にロードされることです。ndiswrapper がロードされているかテストするには、次を実行してください:

# modprobe ndiswrapper
# iwconfig

wlan0 が表示されるはずです。問題が起こった場合は次のページを見て下さい: Ndiswrapper installation wiki

参照