ラズパイでいろいろなことをしようとして、調べていたら無線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=1 | Channel=6 |
ssid=test | ssid=pi wi-fi |
auth_algs=3 | auth_algs=1 |
#wpa=2 | wap2 |
#wpa_passphrase=secret passphrase | wpa_passphrase=アクセス用パスワード |
#wpa_key_mgmt=WPA-PSK WPA-EAP | wpa_key_mgmt=WPA-PSK |
#rsn_pairwise=CCMP | rsn_pairwise=CCMP |
設定の詳細については以下の記事を参考にしてください。
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 を再起動させると無事接続することができました。