「ソフトウェアアクセスポイント」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(リンクを修正)
 
(2人の利用者による、間の2版が非表示)
5行目: 5行目:
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|ネットワーク設定}}
 
{{Related|ネットワーク設定}}
{{Related|ワイヤレス設定}}
+
{{Related|ワイヤレスネットワーク設定}}
 
{{Related|アドホックネットワーク}}
 
{{Related|アドホックネットワーク}}
 
{{Related|インターネット共有}}
 
{{Related|インターネット共有}}
94行目: 94行目:
   
 
hostapd を自動的に起動するようにするには、{{ic|hostapd.service}} を[[デーモン|有効化]]してください。
 
hostapd を自動的に起動するようにするには、{{ic|hostapd.service}} を[[デーモン|有効化]]してください。
{{Warning|アクセスポイントで使える無線周波数は国によって異なります。無線ファームウェアによっては、地域を設定して法的に問題ない周波数を使うように設定する必要があります。あなたが居住している地域以外を選択してはいけません。ネットワーク通信を違法に妨害する可能性があり、あなたのデバイスだけでなく周りの人のデバイスの無線機能も使えなくしてしまうおそれがあります。地域の設定方法は[[ワイヤレス設定#規制範囲に従う]]を見て下さい。}}
+
{{Warning|アクセスポイントで使える無線周波数は国によって異なります。無線ファームウェアによっては、地域を設定して法的に問題ない周波数を使うように設定する必要があります。あなたが居住している地域以外を選択してはいけません。ネットワーク通信を違法に妨害する可能性があり、あなたのデバイスだけでなく周りの人のデバイスの無線機能も使えなくしてしまうおそれがあります。地域の設定方法は[[ネットワーク設定/ワイヤレス#規制範囲に従う]]を見て下さい。}}
   
 
{{Note|RTL8192CU チップセットが搭載されたカードを使っている場合、[[AUR]] から {{AUR|hostapd-rtl871xdrv}} をインストールして、{{ic|hostapd.conf}} ファイル内の {{ic|1=driver=nl80211}} を {{ic|1=driver=rtl871xdrv}} に置き換えて下さい。}}
 
{{Note|RTL8192CU チップセットが搭載されたカードを使っている場合、[[AUR]] から {{AUR|hostapd-rtl871xdrv}} をインストールして、{{ic|hostapd.conf}} ファイル内の {{ic|1=driver=nl80211}} を {{ic|1=driver=rtl871xdrv}} に置き換えて下さい。}}
140行目: 140行目:
 
===無線 LAN が極端に遅い===
 
===無線 LAN が極端に遅い===
   
  +
予想よりもスループットが低い場合、以下の原因が考えられます。
おそらくエントロピーが不足しています。[[haveged]] をインストールしてみてください。
 
  +
  +
* サポートされているものよりも ''低い'' {{ic|hw_mode}} を使用した不適切なオペレーションモードの選択は、ルーターを人為的に制限する可能性があります。最新のオペレーションモードが選択されていることを確認してください。
  +
* 混雑した、またはノイズの影響を受けている {{ic|channel}} は、特に人口密集地域ではパフォーマンスを著しく低下させる可能性があります。別のチャネルに変更するか、周波数を切り替えてみてください。
   
 
===NetworkManager が干渉する===
 
===NetworkManager が干渉する===
146行目: 149行目:
 
デバイスが NetworkManager によって管理されている場合、hostapd が動作しないことがあります。デバイスをマスクするようにしてください:
 
デバイスが NetworkManager によって管理されている場合、hostapd が動作しないことがあります。デバイスをマスクするようにしてください:
   
{{hc|/etc/NetworkManager/NetworkManager.conf|<nowiki>
+
{{hc|/etc/NetworkManager/conf.d/unmanaged.conf|2=
 
[keyfile]
 
[keyfile]
unmanaged-devices=mac:<hwaddr>
+
unmanaged-devices=mac:''hwaddr''
  +
}}
</nowiki>}}
 
  +
  +
またはインターフェイス名:
  +
  +
{{hc|/etc/NetworkManager/conf.d/unmanaged.conf|2=
  +
[keyfile]
  +
unmanaged-devices=interface-name:''ifname''
  +
}}
   
 
=== 5Ghz 帯で AP モードを起動できない ===
 
=== 5Ghz 帯で AP モードを起動できない ===
   
殊な国コード {{ic|00}} (グローバル) を使用している場合、5Ghz 帯の周波数には全て [https://wireless.wiki.kernel.org/en/developers/regulatory/processing_rules#post_processing_mechanisms {{ic|no-ir}} (''no-initiating-radiation'')] フラグが設定され、hostapd から利することできなくなります。{{Pkg|crda}} をインストールしてから、国コードを設定することであなたの国で許されている周波数を hostapd から使えようになります。
+
定の国コード {{ic|00}}(グローバル)を使用している場合、5GHz 帯のすべての使用可能な周波数に {{ic|no-ir}}([https://wireless.wiki.kernel.org/en/developers/regulatory/processing_rules#post_processing_mechanisms no-initiating-radiation]) フラグが設定され、hostapd での使用が禁止されます。これを回避するには、{{Pkg|wireless-regdb}} をインストールし、適切な国コードを設定して使用能な周波数を有効にす必要があります。
  +
  +
なお、最近の Intel 製デバイスには "Location-Aware Regulatory(LAR)" 機能が搭載されており、ユーザー空間の規制データベースを無視し、代わりに近隣のアクセスポイントを検出して規制地域を推測します。このため、5GHz 帯のアクセスポイントを検出するまで、5GHz 帯での送信ができません。[https://bugzilla.kernel.org/show_bug.cgi?id=206469 その結果、多くの場合、5GHz 帯での送信が完全に禁止されます]
  +
  +
以前のカーネルでは LAR を無効化するオプションがありましたが、[https://bugzilla.kernel.org/show_bug.cgi?id=205695#c6 ファームウェアのクラッシュを引き起こすため] 2019年に削除されました。この削除以降、LAR 対応の Intel 製 Wi-Fi カードは 5GHz帯でアクセスポイントとして使用できなくなっています。
  +
  +
=== Windows 10 以降 WPA3 を使用して HostAPD との接続をが拒否される ===
  +
  +
Windows は {{Pkg|hostapd}} を使用した WPA3 アクセスポイントへの接続を拒否することがあります。{{ic|1=wpa=3}} の代わりに {{ic|1=wpa=2}} を使用すると、[https://serverfault.com/a/832260 問題が解決する可能性があります]
  +
  +
=== アクセスポイントが 40MHz モード (HT) での動作を受け付けない ===
  +
  +
以下のようなメッセージが表示されることがあります:
  +
20/40 MHz operation not permitted on channel pri=13 sec=9 based on overlapping BSSes
  +
  +
これは、Wi-Fi デバイスによって検出された近くのアクセスポイントが多すぎることを意味します。[https://www.brunsware.de/blog/hostapd-40mhz-disable-neighbor-check そのため、ワイヤレススペクトルをより公平に共有するために、20Mhz を超えるチャネル幅の使用を拒否します。] {{ic|1=noscan=1}} でこれを無効にできるかもしれませんが、[https://github.com/NixOS/nixpkgs/blob/54ba3732f13a553a58f15c86220b93c618b2ba0f/nixos/modules/services/networking/hostapd.nix#L202 地域の規制要件に違反する可能性があります。]
   
 
== 参照 ==
 
== 参照 ==

2025年2月16日 (日) 04:06時点における最新版

関連記事

ローカルネットワークを構築するために、コンピュータを Wi-Fi アクセスポイントとしたい場合、ソフトウェアアクセスポイントを使用します。無線ルーターを別に用意するという面倒を減らすことができます。

要件

Wi-Fi デバイスが AP モードをサポートしていること

AP モード をサポートしている、nl80211 対応の無線デバイスが必要です。対応しているかどうかは iw list コマンドを実行することで確認できます。Supported interface modes ブロックに AP が含まれているか見て下さい:

$ iw list
Wiphy phy1
...
	Supported interface modes:
		 * IBSS
		 * managed
		 * AP
		 * AP/VLAN
		 * WDS
		 * monitor
		 * mesh point
...

無線クライアントとソフトウェア AP が単一の Wi-Fi デバイスを使っていること

ソフトウェア AP の作成とネットワーク接続 (イーサネットやワイヤレス) は別個のものですが、多くの無線デバイスは AP モードを使いながら同時に無線"クライアント"として動作させることができます。この機能を使えば、単一の無線デバイスだけで"無線 LAN 中継器"としてソフトウェア AP を作成することが可能です。iw list の出力から以下のセクションを確認することで機能をチェックできます:

$ iw list
Wiphy phy1
...
        valid interface combinations:
                 * #{ managed } <= 2048, #{ AP, mesh point } <= 8, #{ P2P-client, P2P-GO } <= 1,
                   total <= 2048, #channels <= 1, STA/AP BI must match
...

#channels <= 1 はソフトウェア AP が Wi-Fi クライアント接続と同じチャンネルを使わなくてはいけないことを示しています。下の hostapd.confchannel 設定を見て下さい。

イーサネット接続が使えないために、この機能を使いたいと思ったならば、上記のデバイスの場合、仮想インターフェイスを2つ作成する必要があります。物理デバイス wlan0 の仮想インターフェイスは以下のようにして作成します。

ネットワーク接続とソフトウェア AP/hostapd の"無線中継器"のための仮想インターフェイスを作成:

# iw dev wlan0 interface add wlan0_sta type managed addr 12:34:56:78:ab:cd
# iw dev wlan0 interface add wlan0_ap  type managed addr 12:34:56:78:ab:ce

ランダムな MAC アドレスは macchanger を使うことで生成できます。

設定

アクセスポイントの設定は2段階に分けて行います:

  • Wi-Fi リンク層を設定して、無線クライアントがコンピュータの"ソフトウェアアクセスポイント"に接続してコンピュータから IP パケットを送受信できるようにします。hostapd パッケージがこれを行います。
  • コンピュータでネットワーク設定を行って、コンピュータがインターネット接続から無線クライアントへ IP パケットを中継できるようにします。

Wi-Fi リンク層

Wi-Fi リンクは hostapd パッケージによって確立されます (公式リポジトリからインストールできます)。このパッケージは WPA2 をサポートしています。

必要に応じて hostapd の設定ファイルにあるオプションを変更してください。特に、ssidwpa_passphrase は変更するようにしてください。詳しくは hostapd の Linux ドキュメント を参照。

/etc/hostapd/hostapd.conf
ssid=YourWiFiName
wpa_passphrase=Somepassphrase
interface=wlan0_ap
bridge=br0
auth_algs=3
channel=7
driver=nl80211
hw_mode=g
logger_stdout=-1
logger_stdout_level=2
max_num_sta=5
rsn_pairwise=CCMP
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
ヒント: SSID は UTF-8 文字列で設定することができ、英語以外の文字列も正しく表示されます。utf8_ssid=1 でオプションを有効にしてください。クライアントによってはエンコーディングが正しく認識されない可能性があります (例: wpa_supplicant や Windows 7)。

hostapd を起動するときは、無線ネットワークインターフェイスが立ち上がってることを確認してください:

# ip link set dev wlan0_ap up

立ち上がっていない場合、次のようなエラーが表示されます: "could not configure driver mode"。

hostapd を自動的に起動するようにするには、hostapd.service有効化してください。

警告: アクセスポイントで使える無線周波数は国によって異なります。無線ファームウェアによっては、地域を設定して法的に問題ない周波数を使うように設定する必要があります。あなたが居住している地域以外を選択してはいけません。ネットワーク通信を違法に妨害する可能性があり、あなたのデバイスだけでなく周りの人のデバイスの無線機能も使えなくしてしまうおそれがあります。地域の設定方法はネットワーク設定/ワイヤレス#規制範囲に従うを見て下さい。
ノート: RTL8192CU チップセットが搭載されたカードを使っている場合、AUR から hostapd-rtl871xdrvAUR をインストールして、hostapd.conf ファイル内の driver=nl80211driver=rtl871xdrv に置き換えて下さい。

ネットワークの設定

設定する方法は2つ存在します:

  1. ブリッジ: コンピュータ上にネットワークブリッジを作成します (無線クライアントはコンピュータによって使われているのと同一のネットワークインターフェイス・サブネットにアクセスします)。
  2. NAT: IP フォワーディング/マスカレードと DHCP サービスを使います (無線クライアントは特別なサブネットを使用し、サブネットのデータは NAT で転送されます。DSL やケーブルモデムに接続された通常の Wi-Fi ルーターと同じような動作をします)。

ブリッジの方がシンプルですが、コンピュータの外部インターフェイスに (DHCP などの) 無線クライアントが使うサービスを必要とします。そのため、ダイアルアップ接続 (例: PPPoE や 3G モデム) やケーブルモデムを使っている場合は、DHCP によって一つの IP アドレスしか渡されないため使うことができません。

NAT は広い用途で使うことができ、コンピュータと Wi-Fi クライアントを完全に分離することで外部接続は透過的になります。どんな種類のネットワーク接続でも動作し、(必要であれば) iptables を使うことでトラフィックにポリシーを適用することが可能です。

もちろん、両者を混ぜることだってできます。その場合、両方の記事を読む必要があります。例えば、固定 ip を使用するイーサネットデバイスと無線デバイスを含んだブリッジで、DHCP を使用して、トラフィックを別のネットワークデバイスに中継するよう NAT を設定する場合、ppp でも eth でも利用できます。

ブリッジの設定

ネットワークブリッジを作成してネットワークインターフェイス (例: eth0) をブリッジに追加してください。無線デバイス (例: wlan0) をブリッジに追加してはいけません。hostapd が自分で追加します。

ネットワークブリッジを見て下さい。

ヒント: (仮想マシンなどで使っている) 既存のブリッジを使い回すことも可能です。

NAT の設定

インターネット共有を見て下さい。

上記の記事では、LAN に接続するデバイスは net0 です。この場合デバイスは無線デバイスに変更します (例: wlan0)。

ツール

create_ap

create_ap スクリプトは hostapd, dnsmasq, iptables を使って ブリッジ/NAT によるアクセスポイントを作成します (create_apAUR または create_ap-gitAUR パッケージでインストールできます)。

# create_ap wlan0 internet0 MyAccessPoint MyPassPhrase

RADIUS

WPA2 Enterprise を使うように FreeRADIUS サーバーを実行する方法は [1] を見て下さい。

トラブルシューティング

無線 LAN が極端に遅い

予想よりもスループットが低い場合、以下の原因が考えられます。

  • サポートされているものよりも 低い hw_mode を使用した不適切なオペレーションモードの選択は、ルーターを人為的に制限する可能性があります。最新のオペレーションモードが選択されていることを確認してください。
  • 混雑した、またはノイズの影響を受けている channel は、特に人口密集地域ではパフォーマンスを著しく低下させる可能性があります。別のチャネルに変更するか、周波数を切り替えてみてください。

NetworkManager が干渉する

デバイスが NetworkManager によって管理されている場合、hostapd が動作しないことがあります。デバイスをマスクするようにしてください:

/etc/NetworkManager/conf.d/unmanaged.conf
[keyfile]
unmanaged-devices=mac:hwaddr

またはインターフェイス名:

/etc/NetworkManager/conf.d/unmanaged.conf
[keyfile]
unmanaged-devices=interface-name:ifname

5Ghz 帯で AP モードを起動できない

特定の国コード 00(グローバル)を使用している場合、5GHz 帯のすべての使用可能な周波数に no-ir(no-initiating-radiation) フラグが設定され、hostapd での使用が禁止されます。これを回避するには、wireless-regdb をインストールし、適切な国コードを設定して、使用可能な周波数を有効にする必要があります。

なお、最近の Intel 製デバイスには "Location-Aware Regulatory(LAR)" 機能が搭載されており、ユーザー空間の規制データベースを無視し、代わりに近隣のアクセスポイントを検出して規制地域を推測します。このため、5GHz 帯のアクセスポイントを検出するまで、5GHz 帯での送信ができません。その結果、多くの場合、5GHz 帯での送信が完全に禁止されます

以前のカーネルでは LAR を無効化するオプションがありましたが、ファームウェアのクラッシュを引き起こすため 2019年に削除されました。この削除以降、LAR 対応の Intel 製 Wi-Fi カードは 5GHz帯でアクセスポイントとして使用できなくなっています。

Windows 10 以降 WPA3 を使用して HostAPD との接続をが拒否される

Windows は hostapd を使用した WPA3 アクセスポイントへの接続を拒否することがあります。wpa=3 の代わりに wpa=2 を使用すると、問題が解決する可能性があります

アクセスポイントが 40MHz モード (HT) での動作を受け付けない

以下のようなメッセージが表示されることがあります:

20/40 MHz operation not permitted on channel pri=13 sec=9 based on overlapping BSSes

これは、Wi-Fi デバイスによって検出された近くのアクセスポイントが多すぎることを意味します。そのため、ワイヤレススペクトルをより公平に共有するために、20Mhz を超えるチャネル幅の使用を拒否します。 noscan=1 でこれを無効にできるかもしれませんが、地域の規制要件に違反する可能性があります。

参照