「ソフトウェアアクセスポイント」の版間の差分
(5人の利用者による、間の10版が非表示) | |||
2行目: | 2行目: | ||
[[en:Software access point]] |
[[en:Software access point]] |
||
[[ru:Software access point]] |
[[ru:Software access point]] |
||
− | [[zh- |
+ | [[zh-hans:Software access point]] |
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|ネットワーク設定}} |
{{Related|ネットワーク設定}} |
||
− | {{Related|ワイヤレス設定}} |
+ | {{Related|ワイヤレスネットワーク設定}} |
{{Related|アドホックネットワーク}} |
{{Related|アドホックネットワーク}} |
||
{{Related|インターネット共有}} |
{{Related|インターネット共有}} |
||
16行目: | 16行目: | ||
=== Wi-Fi デバイスが AP モードをサポートしていること === |
=== Wi-Fi デバイスが AP モードをサポートしていること === |
||
− | AP [ |
+ | AP [https://wireless.kernel.org/en/users/Documentation/modes モード] をサポートしている、[https://wireless.kernel.org/en/developers/Documentation/nl80211 nl80211] 対応の無線デバイスが必要です。対応しているかどうかは {{ic|iw list}} コマンドを実行することで確認できます。{{ic|Supported interface modes}} ブロックに {{ic|AP}} が含まれているか見て下さい: |
{{hc|$ iw list| |
{{hc|$ iw list| |
||
46行目: | 46行目: | ||
{{ic|1=#channels <= 1}} はソフトウェア AP が Wi-Fi クライアント接続と同じチャンネルを使わなくてはいけないことを示しています。下の {{ic|hostapd.conf}} の {{ic|channel}} 設定を見て下さい。 |
{{ic|1=#channels <= 1}} はソフトウェア AP が Wi-Fi クライアント接続と同じチャンネルを使わなくてはいけないことを示しています。下の {{ic|hostapd.conf}} の {{ic|channel}} 設定を見て下さい。 |
||
− | イーサネット接続が使えないために、この機能を使いたいと思ったならば、上記のデバイスの場合、''仮想インターフェイス''を2つ作成する必要があります。物理デバイス {{ic|wlan0}} の仮想インターフェイスは以下のようにして作成します |
+ | イーサネット接続が使えないために、この機能を使いたいと思ったならば、上記のデバイスの場合、''仮想インターフェイス''を2つ作成する必要があります。物理デバイス {{ic|wlan0}} の仮想インターフェイスは以下のようにして作成します。 |
− | + | ネットワーク接続とソフトウェア AP/hostapd の"無線中継器"のための''仮想インターフェイス''を作成: |
|
− | # iw dev wlan0 interface add wlan0_sta type |
+ | # iw dev wlan0 interface add wlan0_sta type managed addr 12:34:56:78:ab:cd |
− | # iw dev wlan0 interface add wlan0_ap type |
+ | # iw dev wlan0 interface add wlan0_ap type managed addr 12:34:56:78:ab:ce |
− | 次に、インターフェイスに別々の MAC アドレスを割り当てる (一意のアドレスを使用して下さい): |
||
− | # ip link set dev wlan0_sta address 12:34:56:78:ab:cd |
||
− | # ip link set dev wlan0_ap address 12:34:56:78:ab:ce |
||
+ | ランダムな MAC アドレスは [[macchanger]] を使うことで生成できます。 |
||
− | == 概要 == |
||
+ | |||
+ | == 設定 == |
||
アクセスポイントの設定は2段階に分けて行います: |
アクセスポイントの設定は2段階に分けて行います: |
||
62行目: | 61行目: | ||
* コンピュータで'''ネットワーク設定'''を行って、コンピュータがインターネット接続から無線クライアントへ IP パケットを中継できるようにします。 |
* コンピュータで'''ネットワーク設定'''を行って、コンピュータがインターネット接続から無線クライアントへ IP パケットを中継できるようにします。 |
||
− | == Wi-Fi リンク層 == |
+ | === Wi-Fi リンク層 === |
Wi-Fi リンクは {{Pkg|hostapd}} パッケージによって確立されます ([[公式リポジトリ]]からインストールできます)。このパッケージは WPA2 をサポートしています。 |
Wi-Fi リンクは {{Pkg|hostapd}} パッケージによって確立されます ([[公式リポジトリ]]からインストールできます)。このパッケージは WPA2 をサポートしています。 |
||
− | 必要に応じて ''hostapd'' の設定ファイルにあるオプションを変更してください。特に、{{ic|ssid}} と {{ic|wpa_passphrase}} は変更するようにしてください。詳しくは [ |
+ | 必要に応じて ''hostapd'' の設定ファイルにあるオプションを変更してください。特に、{{ic|ssid}} と {{ic|wpa_passphrase}} は変更するようにしてください。詳しくは [https://wireless.kernel.org/en/users/Documentation/hostapd hostapd の Linux ドキュメント] を参照。 |
{{hc|/etc/hostapd/hostapd.conf|<nowiki> |
{{hc|/etc/hostapd/hostapd.conf|<nowiki> |
||
85行目: | 84行目: | ||
wpa_pairwise=TKIP CCMP |
wpa_pairwise=TKIP CCMP |
||
</nowiki>}} |
</nowiki>}} |
||
+ | |||
+ | {{Tip|SSID は UTF-8 文字列で設定することができ、英語以外の文字列も正しく表示されます。{{ic|1=utf8_ssid=1}} でオプションを有効にしてください。クライアントによってはエンコーディングが正しく認識されない可能性があります (例: [[wpa_supplicant]] や Windows 7)。}} |
||
hostapd を起動するときは、無線ネットワークインターフェイスが立ち上がってることを確認してください: |
hostapd を起動するときは、無線ネットワークインターフェイスが立ち上がってることを確認してください: |
||
93行目: | 94行目: | ||
hostapd を自動的に起動するようにするには、{{ic|hostapd.service}} を[[デーモン|有効化]]してください。 |
hostapd を自動的に起動するようにするには、{{ic|hostapd.service}} を[[デーモン|有効化]]してください。 |
||
− | {{Warning|アクセスポイントで使える無線周波数は国によって異なります。無線ファームウェアによっては、地域を設定して法的に問題ない周波数を使うように設定する必要があります。あなたが居住している地域以外を選択してはいけません。ネットワーク通信を違法に妨害する可能性があり、あなたのデバイスだけでなく周りの人のデバイスの無線機能も使えなくしてしまうおそれがあります。地域の設定方法は[[ワイヤレス |
+ | {{Warning|アクセスポイントで使える無線周波数は国によって異なります。無線ファームウェアによっては、地域を設定して法的に問題ない周波数を使うように設定する必要があります。あなたが居住している地域以外を選択してはいけません。ネットワーク通信を違法に妨害する可能性があり、あなたのデバイスだけでなく周りの人のデバイスの無線機能も使えなくしてしまうおそれがあります。地域の設定方法は[[ネットワーク設定/ワイヤレス#規制範囲に従う]]を見て下さい。}} |
− | {{Note|RTL8192CU チップセットが搭載されたカードを使っている場合、[[AUR]] から {{AUR|hostapd- |
+ | {{Note|RTL8192CU チップセットが搭載されたカードを使っている場合、[[AUR]] から {{AUR|hostapd-rtl871xdrv}} をインストールして、{{ic|hostapd.conf}} ファイル内の {{ic|1=driver=nl80211}} を {{ic|1=driver=rtl871xdrv}} に置き換えて下さい。}} |
− | == ネットワークの設定 == |
+ | === ネットワークの設定 === |
設定する方法は2つ存在します: |
設定する方法は2つ存在します: |
||
109行目: | 110行目: | ||
もちろん、''両者を混ぜる''ことだってできます。その場合、両方の記事を読む必要があります。例えば、固定 ip を使用するイーサネットデバイスと無線デバイスを含んだブリッジで、DHCP を使用して、トラフィックを別のネットワークデバイスに中継するよう NAT を設定する場合、ppp でも eth でも利用できます。 |
もちろん、''両者を混ぜる''ことだってできます。その場合、両方の記事を読む必要があります。例えば、固定 ip を使用するイーサネットデバイスと無線デバイスを含んだブリッジで、DHCP を使用して、トラフィックを別のネットワークデバイスに中継するよう NAT を設定する場合、ppp でも eth でも利用できます。 |
||
− | === ブリッジの設定 === |
+ | ==== ブリッジの設定 ==== |
ネットワーク''ブリッジ''を作成してネットワークインターフェイス (例: {{ic|eth0}}) をブリッジに追加してください。無線デバイス (例: {{ic|wlan0}}) をブリッジに追加してはいけません。hostapd が自分で追加します。 |
ネットワーク''ブリッジ''を作成してネットワークインターフェイス (例: {{ic|eth0}}) をブリッジに追加してください。無線デバイス (例: {{ic|wlan0}}) をブリッジに追加してはいけません。hostapd が自分で追加します。 |
||
117行目: | 118行目: | ||
{{Tip|(仮想マシンなどで使っている) 既存のブリッジを使い回すことも可能です。}} |
{{Tip|(仮想マシンなどで使っている) 既存のブリッジを使い回すことも可能です。}} |
||
− | === NAT の設定 === |
+ | ==== NAT の設定 ==== |
[[インターネット共有]]を見て下さい。 |
[[インターネット共有]]を見て下さい。 |
||
127行目: | 128行目: | ||
=== create_ap === |
=== create_ap === |
||
− | [https://bbs.archlinux.org/viewtopic.php?pid=1269258 create_ap] スクリプトは {{Pkg|hostapd}}, [[dnsmasq]], [[iptables]] を使って ブリッジ/NAT によるアクセスポイントを作成します ( |
+ | [https://bbs.archlinux.org/viewtopic.php?pid=1269258 create_ap] スクリプトは {{Pkg|hostapd}}, [[dnsmasq]], [[iptables]] を使って ブリッジ/NAT によるアクセスポイントを作成します ({{AUR|create_ap}} または {{AUR|create_ap-git}} パッケージでインストールできます)。 |
+ | |||
+ | # create_ap wlan0 internet0 MyAccessPoint MyPassPhrase |
||
=== RADIUS === |
=== RADIUS === |
||
137行目: | 140行目: | ||
===無線 LAN が極端に遅い=== |
===無線 LAN が極端に遅い=== |
||
+ | 予想よりもスループットが低い場合、以下の原因が考えられます。 |
||
− | おそらくエントロピーが不足しています。[[haveged]] をインストールしてみてください。 |
||
+ | |||
+ | * サポートされているものよりも ''低い'' {{ic|hw_mode}} を使用した不適切なオペレーションモードの選択は、ルーターを人為的に制限する可能性があります。最新のオペレーションモードが選択されていることを確認してください。 |
||
+ | * 混雑した、またはノイズの影響を受けている {{ic|channel}} は、特に人口密集地域ではパフォーマンスを著しく低下させる可能性があります。別のチャネルに変更するか、周波数を切り替えてみてください。 |
||
===NetworkManager が干渉する=== |
===NetworkManager が干渉する=== |
||
143行目: | 149行目: | ||
デバイスが NetworkManager によって管理されている場合、hostapd が動作しないことがあります。デバイスをマスクするようにしてください: |
デバイスが NetworkManager によって管理されている場合、hostapd が動作しないことがあります。デバイスをマスクするようにしてください: |
||
− | {{hc|/etc/NetworkManager/ |
+ | {{hc|/etc/NetworkManager/conf.d/unmanaged.conf|2= |
[keyfile] |
[keyfile] |
||
− | unmanaged-devices=mac: |
+ | unmanaged-devices=mac:''hwaddr'' |
+ | }} |
||
− | </nowiki>}} |
||
+ | |||
+ | またはインターフェイス名: |
||
+ | |||
+ | {{hc|/etc/NetworkManager/conf.d/unmanaged.conf|2= |
||
+ | [keyfile] |
||
+ | unmanaged-devices=interface-name:''ifname'' |
||
+ | }} |
||
+ | |||
+ | === 5Ghz 帯で AP モードを起動できない === |
||
+ | |||
+ | 特定の国コード {{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 地域の規制要件に違反する可能性があります。] |
||
== 参照 == |
== 参照 == |
||
* [http://nims11.wordpress.com/2012/04/27/hostapd-the-linux-way-to-create-virtual-wifi-access-point/ Hostapd : The Linux Way to create Virtual Wi-Fi Access Point] |
* [http://nims11.wordpress.com/2012/04/27/hostapd-the-linux-way-to-create-virtual-wifi-access-point/ Hostapd : The Linux Way to create Virtual Wi-Fi Access Point] |
||
− | * [ |
+ | * [https://xyne.archlinux.ca/notes/network/dhcp_with_dns.html tutorial and script for configuring a subnet with DHCP and DNS] |
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.conf
の channel
設定を見て下さい。
イーサネット接続が使えないために、この機能を使いたいと思ったならば、上記のデバイスの場合、仮想インターフェイスを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 の設定ファイルにあるオプションを変更してください。特に、ssid
と wpa_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
hostapd を起動するときは、無線ネットワークインターフェイスが立ち上がってることを確認してください:
# ip link set dev wlan0_ap up
立ち上がっていない場合、次のようなエラーが表示されます: "could not configure driver mode"。
hostapd を自動的に起動するようにするには、hostapd.service
を有効化してください。
ネットワークの設定
設定する方法は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
でこれを無効にできるかもしれませんが、地域の規制要件に違反する可能性があります。