| (同じ利用者による、間の6版が非表示) | |||
| 22行目: | 22行目: | ||
# または | # または | ||
nmcli device | nmcli device | ||
<br><br> | |||
== no IRフラグ == | |||
no IRフラグ (no Initiating Radiation) がある場合、APとしての動作やアクティブスキャンができないため、接続に問題が生じることがある。<br> | |||
<br> | |||
各周波数帯とそれに付与されているno IRフラグを確認する。<br> | |||
# 詳細な情報を表示 | |||
sudo iw list | |||
# 出力例 | |||
Frequencies: | |||
* 5180 MHz [36] (20.0 dBm) | |||
* 5200 MHz [40] (20.0 dBm) | |||
* 5220 MHz [44] (20.0 dBm) (no IR) | |||
* 5240 MHz [48] (20.0 dBm) (no IR) | |||
<br> | |||
# 周波数情報のみ表示 | |||
sudo iw phy phy0 info | grep -A 20 Frequencies | |||
# 出力例 | |||
Frequencies: | |||
* 2412.0 MHz [1] (20.0 dBm) | |||
* 2417.0 MHz [2] (20.0 dBm) | |||
* 2422.0 MHz [3] (20.0 dBm) | |||
* 2427.0 MHz [4] (20.0 dBm) | |||
* 2432.0 MHz [5] (20.0 dBm) | |||
* 2437.0 MHz [6] (20.0 dBm) | |||
* 2442.0 MHz [7] (20.0 dBm) | |||
* 2447.0 MHz [8] (20.0 dBm) | |||
* 2452.0 MHz [9] (20.0 dBm) | |||
* 2457.0 MHz [10] (20.0 dBm) | |||
* 2462.0 MHz [11] (20.0 dBm) | |||
* 2467.0 MHz [12] (20.0 dBm) (no IR) | |||
* 2472.0 MHz [13] (20.0 dBm) (no IR) | |||
* 2484.0 MHz [14] (disabled) | |||
Frequencies: | |||
* 5180.0 MHz [36] (20.0 dBm) (no IR) | |||
* 5200.0 MHz [40] (20.0 dBm) (no IR) | |||
* 5220.0 MHz [44] (20.0 dBm) | |||
* 5240.0 MHz [48] (20.0 dBm) (no IR) | |||
* 5260.0 MHz [52] (20.0 dBm) (no IR) | |||
* 5280.0 MHz [56] (20.0 dBm) (no IR) | |||
* 5300.0 MHz [60] (20.0 dBm) (no IR) | |||
* 5320.0 MHz [64] (20.0 dBm) (no IR) | |||
* 5500.0 MHz [100] (20.0 dBm) (no IR) | |||
* 5520.0 MHz [104] (20.0 dBm) (no IR) | |||
* 5540.0 MHz [108] (20.0 dBm) (no IR) | |||
* 5560.0 MHz [112] (20.0 dBm) (no IR) | |||
* 5580.0 MHz [116] (20.0 dBm) (no IR) | |||
* 5600.0 MHz [120] (20.0 dBm) (no IR) | |||
* 5620.0 MHz [124] (20.0 dBm) (no IR) | |||
* 5640.0 MHz [128] (20.0 dBm) (no IR) | |||
* 5660.0 MHz [132] (20.0 dBm) (no IR) | |||
* 5680.0 MHz [136] (20.0 dBm) (no IR) | |||
* 5700.0 MHz [140] (20.0 dBm) (no IR) | |||
* 5720.0 MHz [144] (20.0 dBm) (no IR) | |||
* 5745.0 MHz [149] (20.0 dBm) (no IR) | |||
* 5765.0 MHz [153] (20.0 dBm) (no IR) | |||
* 5785.0 MHz [157] (20.0 dBm) (no IR) | |||
* 5805.0 MHz [161] (20.0 dBm) (no IR) | |||
* 5825.0 MHz [165] (20.0 dBm) (no IR) | |||
* 5845.0 MHz [169] (20.0 dBm) (no IR) | |||
* 5865.0 MHz [173] (20.0 dBm) (no IR) | |||
* 5885.0 MHz [177] (20.0 dBm) (no IR) | |||
<br> | |||
現在設定されている国コードを確認して、規制ドメインを確認する。<br> | |||
国によってno IRフラグの有無が変わる。<br> | |||
sudo iw reg get | |||
# 出力の意味 | |||
## グローバル規制設定 (カーネルの規制データベースによる設定) | |||
global | |||
## 国コード : 00 = 未設定 (世界共通の制限的なデフォルト設定) | |||
## DFS-UNSET = DFS (Dynamic Frequency Selection)が未設定 | |||
country 00: DFS-UNSET | |||
# 2.4GHz帯: 2402-2472 MHz (Wi-Fiチャネル1-13相当) | |||
# @40 = 最大40MHz幅, (6, 20) = 最小6dBm/最大20dBm (送信電力) | |||
# N/A = DFS待機時間なし | |||
(2402 - 2472 @ 40), (6, 20), (N/A) | |||
# 2.4GHz帯: 2457-2482 MHz (チャネル10-13の一部) | |||
# @20 = 最大20MHz幅 | |||
# AUTO-BW = 帯域幅自動調整可能 | |||
# PASSIVE-SCAN = パッシブスキャンのみ (アクティブスキャン禁止) | |||
(2457 - 2482 @ 20), (6, 20), (N/A), AUTO-BW, PASSIVE-SCAN | |||
# 2.4GHz帯: 2474-2494 MHz (チャネル14、日本など限定) | |||
# NO-OFDM = OFDM変調方式禁止 (レガシーモードのみ) | |||
(2474 - 2494 @ 20), (6, 20), (N/A), NO-OFDM, PASSIVE-SCAN | |||
# 5GHz帯: 5170-5250 MHz (U-NII-1バンド、屋内用) | |||
# @80 = 最大80MHz幅 | |||
(5170 - 5250 @ 80), (6, 20), (N/A), AUTO-BW, PASSIVE-SCAN | |||
# 5GHz帯: 5250-5330 MHz (U-NII-2Aバンド) | |||
# (0 ms) = DFS待機時間0ミリ秒 | |||
# DFS = レーダー検出必須 (気象レーダーとの干渉回避) | |||
(5250 - 5330 @ 80), (6, 20), (0 ms), DFS, AUTO-BW, PASSIVE-SCAN | |||
# 5GHz帯: 5490-5730 MHz (U-NII-2C/U-NII-3バンド) | |||
# @160 = 最大160MHz幅 (Wi-Fi 6の広帯域対応) | |||
(5490 - 5730 @ 160), (6, 20), (0 ms), DFS, PASSIVE-SCAN | |||
# 5GHz帯: 5735-5835 MHz (U-NII-4バンド、ISMバンド) | |||
(5735 - 5835 @ 80), (6, 20), (N/A), PASSIVE-SCAN | |||
# 60GHz帯: 57240-63720 MHz (WiGig/802.11ad/802.11ay用) | |||
# @2160 = 最大2160MHz幅 (ミリ波帯の広帯域通信) | |||
# (N/A, 0) = 送信電力規制なし | |||
(57240 - 63720 @ 2160), (N/A, 0), (N/A) | |||
# 物理インターフェース#0 (無線LANデバイス自身が管理する設定) | |||
# self-managed = デバイスファームウェアが独自に規制管理 | |||
phy#0 (self-managed) | |||
# 国コード : 00 (デバイス側も未設定状態) | |||
country 00: DFS-UNSET | |||
# 2.4GHz帯: 2402-2472 MHz | |||
# NO-80MHZ, NO-160MHZ = 80MHz幅・160MHz幅使用禁止 (2.4GHzでは通常40MHz上限) | |||
(2402 - 2472 @ 40), (6, 20), (N/A), NO-80MHZ, NO-160MHZ | |||
# 2.4GHz帯: 2457-2482 MHz | |||
(2457 - 2482 @ 20), (6, 20), (N/A), AUTO-BW, NO-80MHZ, NO-160MHZ, PASSIVE-SCAN | |||
# 5GHz帯: 5170-5330 MHz (より広い範囲を一括設定) | |||
# デバイス側では@160を許可 (カーネル設定より柔軟) | |||
(5170 - 5330 @ 160), (6, 20), (N/A), PASSIVE-SCAN | |||
# 5GHz帯: 5490-5730 MHz | |||
(5490 - 5730 @ 160), (6, 20), (N/A), PASSIVE-SCAN | |||
# 5GHz帯: 5735-5895 MHz (globalより広い範囲) | |||
(5735 - 5895 @ 160), (6, 20), (N/A), PASSIVE-SCAN | |||
<br> | |||
no IR や PASSIVE-SCAN と表示されている周波数帯は、能動的な送信ができない。<br> | |||
例えば、日本 (JP) の規制では、一部の5[GHz]帯チャンネルにno IRフラグが付いていることがある。<br> | |||
<br> | |||
正しい国コードが設定されていない場合は、以下に示すコマンドで設定できる。<br> | |||
# 日本の場合 | |||
sudo iw reg set JP | |||
<br><br> | <br><br> | ||
| 140行目: | 284行目: | ||
*: WPA2-Personal (PSK : Pre-Shared Key) | *: WPA2-Personal (PSK : Pre-Shared Key) | ||
* sae | * sae | ||
*: WPA3-Personal (SAE | *: WPA3-Personal (SAE : Simultaneous Authentication of Equals) | ||
<br> | <br> | ||
# | # WPA2のみ | ||
sudo nmcli connection modify <任意のアクセスポイント名 例: Banana-Pi-AP> \ | sudo nmcli connection modify <任意のアクセスポイント名 例: Banana-Pi-AP> \ | ||
wifi-sec.key-mgmt wpa-psk | wifi-sec.key-mgmt wpa-psk \ | ||
wifi-sec.proto rsn \ | wifi-sec.proto rsn \ | ||
wifi-sec.pairwise ccmp \ | wifi-sec.pairwise ccmp \ | ||
| 293行目: | 435行目: | ||
<br> | <br> | ||
アクセスポイントを削除した後、インターフェースは通常の管理モードに戻り、Wi-Fiクライアントとして他のアクセスポイントに接続できるようになる。<br> | アクセスポイントを削除した後、インターフェースは通常の管理モードに戻り、Wi-Fiクライアントとして他のアクセスポイントに接続できるようになる。<br> | ||
<br><br> | |||
== WPA2 / WPA3混合モードを使用する場合 == | |||
WPA2とWPA3を同時に有効化する設定はトランジションモードや混合モードと呼ばれる設定であり、多くのWi-Fiモジュールとドライバでサポートされている。<br> | |||
<br> | |||
WPA3は2018年に登場した新しいセキュリティ規格であるが、全てのデバイスが対応しているわけではない。<br> | |||
古いスマートフォンやIoTデバイス等はWPA2にしか対応していないことがある。<br> | |||
混合モードを使用することにより、WPA3対応デバイスは最新のセキュリティで接続し、WPA2のみ対応のデバイスも同じアクセスポイントに接続できるようになる。<br> | |||
<br> | |||
まず、使用しているデバイスのハードウェアとドライバがWPA3をサポートしているかどうかを確認する。<br> | |||
もし、SAEやWPA3に関する記述が見つからない場合、そのハードウェアまたはドライバでは混合モードがサポートされていない可能性が高い。<br> | |||
# Wi-Fiドライバの詳細情報を確認 | |||
sudo iw list | grep -A 10 "Supported interface modes" | |||
# SAE (WPA3) のサポート状況を確認 | |||
sudo iw list | grep -i sae | |||
# 使用しているWi-Fiドライバを確認 | |||
sudo ethtool -i wlan0 | |||
<br> | |||
次に、hostapdをインストールする。<br> | |||
NetworkManagerがアクセスポイントを作成する時、内部でhostapdデーモンを使用している。<br> | |||
<br> | |||
hostapdは、Wi-Fiアクセスポイント機能の実装であり、WPA2 / WPA3混合モードを完全にサポートしている。<br> | |||
NetworkManagerを経由せずにhostapdを直接設定することにより、細かい制御が可能になる。<br> | |||
<br> | |||
# RHEL | |||
sudo dnf install hostapd | |||
# SUSE | |||
sudo zypper install hostapd | |||
# Raspberry Pi / Banana Pi F3 | |||
sudo apt install hostapd | |||
<br> | |||
次に、hostapdの設定ファイルを作成する。<br> | |||
sudo vi /etc/hostapd/hostapd.conf | |||
# または | |||
sudo cp /usr/share/doc/hostapd/examples/hostapd.conf /etc/hostapd/ | |||
sudo vi /etc/hostapd/hostapd.conf | |||
<br> | |||
<syntaxhighlight lang="ini"> | |||
# hostapdアクセスポイント設定ファイル | |||
# 基本インターフェース設定 | |||
# interface: Wi-Fiアクセスポイントとして使用する無線LANインターフェース名 | |||
# システム上の物理的なWi-Fiアダプタのデバイス名を指定する | |||
# 通常、Linuxでは無線LANインターフェースはwlan0、wlan1などの名前で識別される | |||
interface=wlan0 | |||
# bridge: アクセスポイントが参加するブリッジインターフェース名 | |||
# ブリッジを指定すると、無線LANと有線LANが同じネットワークセグメントで動作する | |||
# これにより、無線接続したデバイスと有線接続したデバイスが直接通信可能になる | |||
# 上位ルータのDHCPサーバーがクライアントにIPアドレスを配布する構成となる | |||
bridge=br0 | |||
# ドライバ設定 | |||
# driver: 無線LANカードを制御するために使用するドライバタイプ | |||
# nl80211は最新のLinuxカーネルが標準でサポートする無線LANドライバインターフェースである | |||
# cfg80211/mac80211フレームワークを使用する現代的なWi-Fiドライバはすべてこれを使う | |||
# 古いドライバ (hostap等) と比べて、より多くの機能とセキュリティオプションに対応している | |||
driver=nl80211 | |||
# ネットワーク識別設定 | |||
# ssid: アクセスポイントの識別名 (Service Set Identifier) | |||
# これがスマートフォンやPCのWi-Fi一覧に表示される名前になる | |||
# 最大32文字まで設定可能で、日本語などのマルチバイト文字も使用できる | |||
# ただし、一部の古いデバイスとの互換性を考慮すると、ASCII文字の使用が推奨される | |||
ssid=<任意のSSID名 例: Banana-Pi> | |||
# country_code: 無線LANの使用国コード (2文字のISO 3166-1コード) | |||
# JPは日本を意味し、日本の電波法規制に準拠した動作を行うために必須である | |||
# この設定により、使用可能なチャンネル、送信電力などが日本の法律に適合する | |||
country_code=JP | |||
# ieee80211d: 国コード情報をビーコンフレームで通知する機能の有効化 | |||
# 1に設定すると、アクセスポイントがビーコンで国コード情報をブロードキャストする | |||
# これにより、接続するクライアントデバイスが適切な規制ドメインを認識できる | |||
# 特に国際的に使用されるデバイスでは、この情報が重要になる | |||
ieee80211d=1 | |||
# 無線周波数帯域設定 | |||
# hw_mode: 使用する無線LAN規格とハードウェアモード | |||
# g: IEEE 802.11g (2.4[GHz]帯、最大54[Mbps]) を意味する | |||
# このモードでは802.11b (最大11[Mbps]) との後方互換性も維持される | |||
# 2.4[GHz]帯は壁などの障害物に強く、広範囲をカバーできる利点がある | |||
# 一方、電子レンジやBluetoothなど他の機器との干渉を受けやすい特性もある | |||
hw_mode=g | |||
# channel: 使用する無線LANチャンネル番号 | |||
# 2.4[GHz]帯では、日本では1~13チャンネルが使用可能である (14チャンネルは特殊用途) | |||
# チャンネル6は中央に位置し、周辺のWi-Fi環境によっては良好な選択となる | |||
# ただし、実際の環境では近隣のアクセスポイントと干渉しないチャンネルを選ぶべきである | |||
# チャンネル1、6、11は互いに干渉しにくいため、よく推奨される | |||
channel=6 | |||
# セキュリティ設定 (WPA2 / WPA3混合モード) | |||
# wpa: WPA (Wi-Fi Protected Access) のバージョン指定 | |||
# 1: WPA1のみ (非推奨、脆弱性があるため使用すべきではない) | |||
# 2: WPA2のみ、またはWPA2とWPA3の混合モード | |||
# 3: WPA1とWPA2の混合モード (非推奨) | |||
# ここでは2を指定することで、WPA2とWPA3の両方をサポートする設定になる | |||
wpa=2 | |||
# wpa_key_mgmt: 使用する鍵管理 (認証) 方式の指定 | |||
# WPA-PSK: WPA2-Personal (Pre-Shared Key) 方式 | |||
# 事前共有鍵 (パスワード) を使用する従来の認証方式である | |||
# 2004年から広く使われており、ほぼすべてのデバイスが対応している | |||
# SAE: WPA3-Personal (Simultaneous Authentication of Equals) 方式 | |||
# 2018年に導入された最新の認証方式で、以下の利点がある: | |||
# - オフライン辞書攻撃に対する耐性 (パスワードが弱くても比較的安全) | |||
# - Forward Secrecy (過去の通信が後から解読されるリスクの軽減) | |||
# - より強固な暗号学的基盤 (楕円曲線暗号の使用) | |||
# 両方をスペース区切りで指定することで、トランジションモード (混合モード) となる | |||
# これにより、WPA3対応デバイスは最新のセキュリティで接続し、 | |||
# WPA2のみ対応の古いデバイスも同じアクセスポイントに接続できる | |||
wpa_key_mgmt=WPA-PSK SAE | |||
# rsn_pairwise: ユニキャスト通信 (個別のデバイス間通信) に使用する暗号化方式 | |||
# CCMP: Counter mode with CBC-MAC Protocol (AES暗号化を使用) | |||
# WPA2とWPA3で標準的に使用される最も安全な暗号化方式である | |||
# 古いTKIP (Temporal Key Integrity Protocol) は脆弱性があるため使用しない | |||
# CCMPはAES-128ビット暗号化を使用し、現代の標準として十分な安全性を提供する | |||
rsn_pairwise=CCMP | |||
# wpa_passphrase: アクセスポイントへの接続に必要なパスワード (事前共有鍵) | |||
# 8~63文字のASCII文字、または64文字の16進数文字列を指定できる | |||
# セキュリティのため、以下のようなパスワードの選択が推奨される: | |||
# - 最低でも8文字以上 (できれば20文字以上) | |||
# - 大文字、小文字、数字、記号を混在させる | |||
# - 辞書に載っている単語や個人情報を避ける | |||
# - 他のサービスと同じパスワードを使い回さない | |||
# WPA3のSAE認証では、パスワードが比較的弱くてもオフライン攻撃に強いが、 | |||
# それでも強力なパスワードを設定することが最善の実践である | |||
wpa_passphrase=<SSIDのパスワード> | |||
# WPA3 (SAE) の詳細設定 | |||
# sae_require_mfp: SAE接続で管理フレーム保護 (MFP: Management Frame Protection) を必須とするか | |||
# 0: MFPを必須としない (オプション扱い) | |||
# 1: MFPを必須とする | |||
# WPA3の正式な仕様では、SAE認証を使用する場合MFPが必須である | |||
# しかし、トランジションモード(WPA2/WPA3混合モード)では、 | |||
# WPA2のみ対応のデバイスとの互換性のため、0に設定することが一般的である | |||
# WPA2デバイスの多くはMFPに対応していないため、1にすると接続できない可能性がある | |||
sae_require_mfp=0 | |||
# ieee80211w: 管理フレーム保護 (PMF: Protected Management Frames) の設定 | |||
# 0: 無効 (管理フレームを暗号化しない) | |||
# 1: オプション (対応デバイスのみ使用、非対応デバイスも接続可能) | |||
# 2: 必須 (非対応デバイスは接続できない) | |||
# 管理フレーム保護は、Deauthentication攻撃などの無線LAN攻撃を防ぐ機能である | |||
# WPA3では本来必須だが、トランジションモードでWPA2デバイスとの互換性を保つため、 | |||
# セキュリティを最優先する場合は、1または2に設定することが推奨される | |||
ieee80211w=0 | |||
# sae_pwe: SAE(WPA3)のパスワード要素(PWE: Password Element)導出方法 | |||
# 0: Hunting-and-Peckingアルゴリズムのみ(従来の方法) | |||
# 1: Hash-to-Elementのみ(最新の方法、より安全だがデバイスサポートが限定的) | |||
# 2: 両方をサポート(互換性モード) | |||
# Hunting-and-Peckingは初期のWPA3実装で使用されていたが、 | |||
# タイミング攻撃への脆弱性が発見されたため、Hash-to-Elementが導入された | |||
# 2を指定することで、新旧両方のデバイスと互換性を保ちながら、 | |||
# 新しいデバイスにはより安全な方式を使用できる | |||
# これが最も互換性が高い設定であり、トランジションモードに適している | |||
sae_pwe=2 | |||
</syntaxhighlight> | |||
<br> | |||
NetworkManagerのアクセスポイント接続を無効にして、hostapdを直接起動する。<br> | |||
# NetworkManagerのアクセスポイントを停止 | |||
sudo nmcli connection down <任意のアクセスポイント名 例: Banana-Pi-AP> | |||
# hostapdをテストモードで起動して設定を確認 | |||
sudo hostapd -dd /etc/hostapd/hostapd.conf | |||
<br> | |||
スマートフォン等の端末からSSIDが見えるかどうかを確認する。<br> | |||
<br> | |||
動作確認が完了した後、Systemdサービスとして自動起動するように設定する。<br> | |||
# hostapdサービスを有効化 | |||
sudo systemctl unmask hostapd | |||
sudo systemctl enable hostapd | |||
sudo systemctl start hostapd | |||
# 状態を確認 | |||
sudo systemctl status hostapd | |||
<br> | |||
ただし、この方法を使用する場合は、ブリッジインターフェースbr0の設定はNetworkManagerで管理し続けることができるが、アクセスポイントの管理はhostapdに委ねることになる。<br> | |||
そのため、システム起動時の順序や依存関係に注意が必要となる。<br> | |||
<br><br> | <br><br> | ||