1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Raspberry Pi 3Bでアクセスポイントを立ち上げる

1
Last updated at Posted at 2025-07-23

はじめに

M5Stackは5GHz帯のWi-Fiに対応していないため、学校の無線LAN(5GHz帯のみ運用)には接続できない。
そこでRaspberry Pi3Bを使って2.4GHz帯のAPを立ち上げたい。

手順

  • 今回の設定
    • Raspberry Pi 3 Model B Rev 1.2
    • Raspberry Pi側 IP : 192.168.4.1
    • クライアント向けDHCP: 192.168.4.2~192.168.4.11
    • AP モードが含まれていること
iw list | grep -A5 "Supported interface modes"
    #Supported interface modes:
    #         * IBSS
    #         * managed
    #         * AP
    #         * P2P-client
    #         * P2P-GO

1. Install

sudo apt update
sudo apt install -y hostapd dnsmasq netfilter-persistent iptables-persistent dhcpcd5
  • hostapd:Raspberry PiをWi-Fiアクセスポイントにする
  • dnsmasq:みんなにIPを配る (DHCP) & 名前解決 (DNS)
  • dhcpcd5:Pi自身のIP取得と管理
  • netfilter-persistent/iptables-persistent:ルールの永続化

設定前にサービスをストップしておく:

sudo systemctl status hostapd
    #Loaded: masked (Reason: Unit hostapd.service is masked.)
    #Active: inactive (dead)

sudo systemctl status dhcpcd
    #Loaded: loaded (/lib/systemd/system/dhcpcd.service; enabled; preset: enabled)
    #Active: inactive (dead)

sudo systemctl status dnsmasq
    #Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; preset: enabled)
    #Active: active (running) 
sudo systemctl stop dnsmasq
    #Active: inactive (dead) 

2. 静的IPの設定

/etc/dhcpcd.conf の編集

sudo nano /etc/dhcpcd.conf

ファイルの最後に以下を追加:

interface wlan0
  static ip_address=192.168.4.1/24
  #クライアント接続とAPの競合を回避
  nohook wpa_supplicant                      
  • 保存後、dhcpcd を再起動:
sudo systemctl restart dhcpcd

3. DHCP サーバ(dnsmasq)の設定

/etc/dnsmasq.conf の編集

#バックアップ
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf
#no-resolv
interface=wlan0
dhcp-range=192.168.4.2,192.168.4.11,255.255.255.0,24h

#server=8.8.8.8
#server=1.1.1.1

保存後、dnsmasq を起動:

sudo systemctl restart dnsmasq
sudo systemctl status dnsmasq
    # → no servers found in /etc/resolv.conf, will retry
    #対処法として、
    # 1. /etc/dnsmasq.confのコメントアウトを外す または 一時的に
    # 2. echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
    #    echo "nameserver 1.1.1.1" | sudo tee -a /etc/resolv.conf

dnsmasqを起動して、iptablesを設定しても通信が通らなかったため

sudo nano /etc/hosts
127.0.0.1      localhost
-127.0.1.1     <your_user_name>
+192.168.4.1   <your_user_name>

4. APデーモン(hostapd)の設定

/etc/hostapd/hostapd.conf の作成

sudo nano /etc/hostapd/hostapd.conf
#コメントは消してください!エラーの原因になります。
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0 #root = 0

interface=wlan0
driver=nl80211
country_code=JP     
ieee80211d=1           #country_codeとセットで記述 クライアントに通知するときに必要?
ssid=YOUR_SSID
hw_mode=g              #2.4 GHz
channel=6              #適宜選択
macaddr_acl=0          #特定のMACアドレスを許可・拒否したい場合に番号を変更
auth_algs=1        #1が標準 2はWEP専用?
ignore_broadcast_ssid=0  #SSIDを見せたくない=1, 通常=0

wpa=2                  #WPA2の場合 WPA+WPA2対応は3
wpa_passphrase=<your_passwd>
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP   #WPAの暗号方式
rsn_pairwise=CCMP     #WPA2の暗号方式

hw_modeの選択

Band 2に出力があれば5GHz使えるので「a」, 2.4GHzは「g」
Raspberry Pi 3B+でクライアントでは5Ghz接続OK、APだとサポートされていないらしい
https://github.com/raspberrypi/linux/issues/2619

iw list | grep -A5 "Band 2"

デーモン起動設定

sudo nano /etc/default/hostapd

以下を末尾に追記する。

DAEMON_CONF="/etc/hostapd/hostapd.conf"

5. サービス有効化

### 5. hostapd serviceの有効化
sudo systemctl unmask hostapd
sudo systemctl enable hostapd

#sudo systemctl start hostapdでエラーが出た場合は古いログが残っている または wpa_supplicantの競合
#iw dev wlan0 info で type: managed となっている場合:
sudo systemctl stop wpa_supplicant
sudo systemctl disable wpa_supplicant
sudo systemctl mask wpa_supplicant

#Chatgbtは以下のコマンドを出力するが、しなくてよい。
#sudo systemctl stop NetworkManager
#sudo systemctl disable NetworkManager

sudo systemctl start hostapd
sudo systemctl restart hostapd

起動状態・ログ確認:

sudo systemctl status hostapd
sudo hostapd -dd /etc/hostapd/hostapd.conf

6. IP フォワーディング & NAT 設定

IP フォワーディングを有効化

別のネットワークへ中継してよいという許可を出す。

sudo nano /etc/sysctl.conf

以下のコメントアウトを外す:

net.ipv4.ip_forward=1

iptables で NAT マスカレード

これをしないと外部との通信ができない

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo netfilter-persistent save

7. 動作確認

  1. Raspberry Pi を再起動
sudo reboot
  1. クライアント端末から SSID(例:YOUR_SSID)が見えるか確認

8. トラブルシューティング

  • SSIDが見れない場合

配信がブロックされている可能性があるので、

sudo rfkill list wlan
# 1. phy0: Wireless LAN
#          Soft blocked: no
#          Hard blocked: yes

sudo rfkill unblock wifi
# 1. phy0: Wireless LAN
#          Soft blocked: no
#          Hard blocked: no

hostapdのログを削除してみる

sudo systemctl stop hostapd
sudo pkill hostapd

sudo rm -rf /var/run/hostapd
sudo mkdir -p /var/run/hostapd
sudo chown root:root /var/run/hostapd

#ここでAP-ENABLEDと表示されれば成功
sudo hostapd -dd /etc/hostapd/hostapd.conf
  • 再起動後にSSIDが見れない場合

(手探りで実行したので、不必要な記述があるかもしれません)
問題1: 前回のログが残っており、読み込みに失敗する
問題2: MainPIDが700番台だとSSIDが表示されない。1700番台であれば表示される

問題1に対応するため、以下の2つのファイルを変更する。
(/lib/systemd/system/hostapd.service ではなく、override.confに記述しよう)

#sudo nano /etc/systemd/system/hostapd.service.d/override.conf
[Service]
Type=forking
ExecStart=
PIDFile=

ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf

Restart=always
RestartSec=5
ExecStartPre=/usr/bin/rm -rf /run/hostapd/* /var/run/hostapd/*
ExecStartPre=/usr/bin/rm -f /run/hostapd.pid /var/run/hostapd.pid
ExecStartPre=/usr/bin/mkdir -p /run/hostapd /var/run/hostapd
ExecStartPre=/usr/bin/chown root:root /run/hostapd /var/run/hostapd
#sudo nano /etc/tmpfiles.d/hostapd.conf
d /run/hostapd 0755 root root -
f /run/hostapd.pid 0644 root root -
sudo systemctl daemon-reload
sudo systemctl restart hostapd

問題2に対応するため、sudo systemctl restart hostapdを自動化する

#sudo nano /etc/systemd/system/hostapd-restart.service
[Unit]
Description=Restart hostapd after system boot
After=network-online.target

[Service]
Type=oneshot
ExecStart=/bin/systemctl restart hostapd

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable hostapd-restart.service
  • チャンネル/国コードの制限
    → country_code を正しく設定しないと失敗する

9. 参考までに

通信速度

  • 1台接続している場合の速度
Speedtest by Ookla
Idle Latency:     5.15 ms   (jitter: 1.70ms, low: 4.59ms, high: 7.79ms)
    Download:    17.48 Mbps (data used: 20.8 MB)
                 58.10 ms   (jitter: 11.79ms, low: 8.38ms, high: 139.20ms)
      Upload:    16.88 Mbps (data used: 8.1 MB)
                316.95 ms   (jitter: 89.73ms, low: 8.86ms, high: 560.08ms)
  • 設定が不完全な状態(特にhostapd)でsudo apt upgradeを実行した後にrebootするとErrorとなり、ログインできなくなる(LXDE)ので注意。

  • 稀にラズパイがCLIで起動することがある。CLI → GUIへは startxで変更可能

  • もしだめならばRaspAPを導入(無線でinstallしていると固まることがあるので有線推奨)

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?