ソフトウェアアクセスポイント

提供: ArchWiki
2020年12月31日 (木) 14:49時点におけるKusakata.bot2 (トーク | 投稿記録)による版 (Pkg/AUR テンプレートの更新)
ナビゲーションに移動 検索に移動

関連記事

ローカルネットワークを構築するために、コンピュータを 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 が極端に遅い

おそらくエントロピーが不足しています。haveged をインストールしてみてください。

NetworkManager が干渉する

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

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

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

特殊な国コード 00 (グローバル) を使用している場合、5Ghz 帯の周波数には全て no-ir (no-initiating-radiation) フラグが設定され、hostapd から利用することができなくなります。crda をインストールしてから、国コードを設定することで、あなたの国で許可されている周波数を hostapd から使えるようになります。

参照