Raspberry Piで無線LANルーター(AP)を作る

スポンサーリンク
コンピューター

ラズパイでいろいろなことをしようとして、調べていたら無線LANルーターが作れるらしいので作ってみた。

スポンサーリンク

ラズパイによる無線LANの構成図

今回作成するものはルーターのAPをRaspberry Pi で作成する。
無線LANを作成するのでCUIで作業する。

使用した機器は以下

  • Raspberry Pi 4 model B 8GRAM
    • 無線インタフェースを持っているので、USB Wi-Fi アダプタなどは必要ない
    • OSはRaspberry Pi OSを使用
  • ネットワーク
    • インターネット接続ができ、DHCPサーバのある有線LANが上流ネットワークとして必要

無線LANインタフェースの有効化

まずは、WLAN Countryを日本に変える。

sudo raspi-config

5 Localisation Option → L4 WLAN Country の順に選択し、JP Jpanを選択する。

無線LAN側IPアドレスの固定化

有線側のネットワークとかぶらないようにアドレスを決定します。

今回は無線LAN側は192.168.5.0/24を使用し、ルーターアドレスとして192.168.5.1を使用します。

以下のコマンドを実行し、”/etc/dhcpcd.conf“を編集します。

sudo nano /etc/dhcpcd.conf

以下の内容を末尾に追加します。

interface wlan0
static ip_address=192.168.5.1/24

ファイルを編集したら、以下のコマンドでdhcpcdを再起動します

sudo systemctl restart dhcpcd

Wi-Fi APの設定

hostapdの設定

これは無線LANドライバを操作して、アクセスポイントとして動作させるためのソフトウェアです。

sudo apt install -y hostapd

インストールが完了したら設定例をコピーします。

sudo ncp /usr/share/doc/hostapd/examples/hostapd.conf /etc/hostapd/hostapd.conf

/etc/hostapd/hostapd.conf“を編集し設定します。

sudo nano /etc/hostapd/hostapd.conf

編集内容は以下のようなります。

元のファイル内の記述変更後
Channel=Channel=6
ssid=testssid=pi wi-fi
auth_algs=3auth_algs=1
#wpa=2wap2
#wpa_passphrase=secret passphrasewpa_passphrase=アクセス用パスワード
#wpa_key_mgmt=WPA-PSK WPA-EAPwpa_key_mgmt=WPA-PSK
#rsn_pairwise=CCMPrsn_pairwise=CCMP

設定の詳細については以下の記事を参考にしてください。

hostapd.conf 覚書 - Qiita
/usr/share/doc/hostapd/examples/hostapd.conf.gz に記載されているコメントの日本語訳。 定義 AP(Access Point): 無線/有線 LAN サービスを提供するサーバーマシ...

hostapdの起動設定

/etc/default/hostapd.conf“を編集し起動設定を行います。

sudo nano /etc/default/hostapd

以下の内容を追加します。

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

以下のコマンドでhostapdを起動します。

sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd

hostapdはインストール段階ではmaskされていて、起動できないのでunmaskが必要です。

これでssidが確認できるはずです。ただし、接続してもインターネットにはつながりません。

ルーティング、NAPTの設定

eth0インタフェースとwlan0インタフェースの間をルーティングし、さらにNAPT(IP masqueradem)も設定します。

“/etc/sysctl.conf”を編集してIP routingをオンにします。

sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1

IP masqueradeを設定します。

sudo iptables -t nat -A  POSTROUTING -o eth0 -j MASQUERADE

このままだと再起動時に設定がもとに戻ってしまうので以下の作業を行う

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
iptables-restore < /etc/iptables.ipv4.nat

DHCP、DNSキャッシュサーバの設定

DHCP,DNSキャッシュサーバーにはdnsmasqを使います。

sudo apt install -y dnsmasq

“/etc/dnsmasq.conf”を編集し設定します。

sudo nano /etc/dnsmasq.conf

以下2行を追加します。

interface=wlan0
dhcp-range=192.168.5.100,192.168.5.150,255.255.255.0,24h

(上記はリース範囲 192.168.5.100~192.168.5.150、ネットマスク24ビット、リース時間24時間の例です。)
以下のコマンドでdnsmasqを起動します。

sudo systemctl enable dnsmasq
sudo systemctl start dnsmasq

接続

Raspberry Pi を再起動させると無事接続することができました。

コメント

タイトルとURLをコピーしました