【Raspberry pi 3B】        アクセスポイント構築

前回「OpenWrt (※1)」ソフトウェアを用いて、ラズベリーパイにアクセスポイントを構築しましたが、今回は「dnsmasq + hostapd」のソフトウェアを用いて、ラズベリーパイにアクセスポイントを構築していきます。
※1:概要欄にリンクを張っています。



概要欄

◇ 【Raspberry pi3】OpenWrt導入
◇ 簡易的なOpenWrtの設定
◇ EAP-PEAP認証方式を導入


略語

OSS:オープンソースソフトウェア
→誰でも自由に利用や改変などできるソフトウェア

AP:アクセスポイント
→デバイス (スマートフォンやパソコン等) を有線LANや無線LANでネットワークと接続させる


ソフトウェア

dnsmasq
「DNS Server / DHCP Server」の機能を構築できるOSS

hostapd
「AP / 認証 Server」の機能を構築できるOSS


構成図



デバイス情報

・ノートPC(OS: Windows11)
・Raspberry Pi 3 model B(OS: Raspberry pi OS)
 ※マイクロSD 128GB(32GBでも可)
・無線LANアダプタ(WN-G300UA)
・ルータ
・LANケーブル


アクセスポイント構築

hostapd dnsmasq インストール

◇ アップデート可能なパッケージリストを更新
apt update

◇ インストール状況を確認
apt list --installed | grep -e hostapd -e dnsmasq

◇「hostapd、dnsmasq」ソフトウェアをインストール
※errorメッセージが表示されるが次に進む
apt -y install hostapd dnsmasq

◇ インストール状況を確認
apt list --installed | grep -e hostapd -e dnsmasq


vim インストール

・「vim、vim-gtk」ソフトウェアをインストール
apt -y install vim vim-gtk

・vimバージョンを確認
vim --version | grep clip*

・クリップボックスを有効化
touch ~/.vimrctouch ~/.vimrc
set clipboard=unnamedplusset clipboard=unnamedplus

・vimバージョンを確認
vim --version | grep clip*

・再起動
reboot


DHCP設定(NAPT モード)

◇ dnsmasq.conf ファイルを確認
ls -l /etc/dnsmasq.conf*

◇ バックアップ取得
cp -p /etc/dnsmasq.conf /etc/dnsmasq.conf_`date "+%Y%m%d"`

◇ dnsmasq.conf ファイルを確認
ls -l /etc/dnsmasq.conf*

◇ ネットワークインターフェース状況の確認
ifconfig
※ワイヤレスインターフェースをメモする

◇ dnsmasq.conf ファイルを編集
vim /etc/dnsmasq.conf
※末尾にIPアドレス付与の範囲を記載

<テンプレート>
# Assign an IP address to the target interface within the specified range
interface=WirelessLANインターフェース名
dhcp-range=開始IPアドレス,終了IPアドレス,リース時間

----------------------------------------

<設定例>
# Assign an IP address to the target interface within the specified range
interface=wlan
dhcp-range=192.168.76.64,192.168.76.95,24h


◇ 差分チェック
diff /etc/dnsmasq.conf /etc/dnsmasq.conf_`date "+%Y%m%d"`


ネットワークインターフェース設定

◇ dhcpcd.conf ファイルを確認
ls -l /etc/dhcpcd.conf*

◇ バックアップ取得
cp -p /etc/dhcpcd.conf /etc/dhcpcd.conf_`date "+%Y%m%d"`

◇ dhcpcd.conf ファイルを確認
ls -l /etc/dhcpcd.conf*

◇ dhcpcd.conf ファイルを編集
vim /etc/dhcpcd.conf
※末尾にワイヤレスインターフェースのIPアドレスを記載

<テンプレート>
# WirelessLAN Interface Static IPaddress Configuration
interface WirelessLANインターフェース名
static ip_address=WirelessLANインターフェースのIPアドレス/24
nohook wpa_supplicant

----------------------------------------

<設定例>
# WirelessLAN Interface Static IPaddress Configuration
interface wlan
        static ip_address=192.168.76.250/24
        nohook wpa_supplicant


◇差分チェック
diff /etc/dhcpcd.conf /etc/dhcpcd.conf_`date "+%Y%m%d"`


ワイヤレス設定

◇ hostapd.conf ファイルを確認
ls -l /etc/hostapd/hostapd.conf*

◇ hostapd.conf ファイルを新規作成
vim /etc/hostapd/hostapd.conf
※変更必須部分
・アクセスポイントのネットワークインターフェースを設定
・無線ネットワークの識別名
・パスフレーズ

# 外部プログラムとhostapd間通信の制御インターフェース設定
ctrl_interface=/var/run/hostapd

# 制御インターフェースのソケット作成の際に使用するグループを設定
ctrl_interface_group=0

# アクセスポイントのネットワークインターフェースを設定
# ※設定値の変更が必要※
#interface=WirelessLANインターフェース名
interface=wlan

# 使用する無線ドライバーの種類 (nl80211:無線LANのカーネルAPI)
driver=nl80211

# 無線ネットワークの識別名
# ※設定値の変更が必要※
# ssid=アクセスポイントの識別名
ssid=AccessPoint

# 無線モード (ex:a,b,g,n)
hw_mode=g

# アクセスポイントが稼働する国
country_code=JP

# チャネル番号
# channel=適時チャネル番号に変更
channel=3

# 無線デバイスが国際的な規制要件に準拠するための機能
# 有効:デバイスの国のコードを設定し、その国の無線周波数規制に準拠する
ieee80211d=1

# 無線ネットワークで多重化されたデータ転送をサポートするための機能
# 有効:QoS(Quality of Service)機能が有効になり異なるタイプのトラフィックに優先度を付けて送信
wmm_enabled=0

# MACアドレスに基づいたアクセス制御リスト
# 0:MACアドレスに基づくアクセス制御を無効
# 1:MACアドレスに基づくアクセス制御を有効 (制御リストに含まれるMACアドレスを持つデバイスのみ接続できる)
# 2:MACアドレスに基づくアクセス制御を有効 (制御リストに含まれるMACアドレスを持つデバイスのみ接続できない)
macaddr_acl=0

# 認証アルゴリズムを指定
# 1:オープンシステム認証のみを許可
# 2:共有キー認証のみを許可
# 3:オープンシステム認証と共有キー認証を許可
auth_algs=1

# WPAバージョン (1,2)
wpa=2

# パスフレーズ
# wpa_passphrase=認証時のパスワード
# ※設定値の変更が必要※
wpa_passphrase=password

# 使用するWPA鍵管理方式
# WPA-PSK:事前共有鍵を使用する鍵管理方式
# WPA-EAP:エンタープライズ環境で使用される鍵管理方式
wpa_key_mgmt=WPA-PSK

# 暗号化方式を指定
# TKIP:WPAで使用される暗号化方式の1つ
# CCMP:WPA2で使用される暗号化方式の1つ
wpa_pairwise=CCMP

# ペアワイズ暗号化方式を指定
# RADIUSを使用する場合
#rsn_pairwise=CCMP

# ステルス設定(SSID非表示)
#ignore_broadcast_ssid=0



パケット転送の有効化

◇ sysctl.conf ファイルを確認
ls -l /etc/sysctl.conf*

◇ バックアップ取得
cp -p /etc/sysctl.conf /etc/sysctl.conf_`date "+%Y%m%d"`

◇ sysctl.conf ファイルを確認
ls -l /etc/sysctl.conf*

◇ sysctl.conf ファイルを編集
vim /etc/sysctl.conf
※コメントアウトを削除

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1


◇ 差分チェック
diff /etc/sysctl.conf /etc/sysctl.conf_`date "+%Y%m%d"`

◇ カーネルパラメータを反映
sysctl -p
-p:設定ファイルから読み込んだパラメータを一括で適用


IPテーブル設定

◇ rc.local ファイルを確認
ls -l /etc/rc.local*

◇ バックアップ取得
cp -p /etc/rc.local /etc/rc.local_`date "+%Y%m%d"`

◇ rc.local ファイルを確認
ls -l /etc/rc.local*

◇ rc.local ファイルを編集
vim /etc/rc.local
※末尾「exit 0」の上に記載

# パケット送信が出力インターフェースeth0の場合、送信元のIPアドレスをマスカレード(偽装)する
# 送信元IPアドレスがルーターのIPアドレスにNAT変換し、インターネット上のサーバーが返信をルーターに送信できる
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# フォワーディングされたパケットに関連付けられた状態や確立された状態のパケットを許可
# 送信されたトラフィックが返信トラフィックとして返ってくる
iptables -A FORWARD -i eth0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT

# ルーターを通過するトラフィックを許可
iptables -A FORWARD -i wlan1 -o eth0 -j ACCEPT


◇ 差分チェック
diff /etc/rc.local /etc/rc.local_`date "+%Y%m%d"`


サービス自動起動を有効化

◇ hostapd サービスのデーモンを有効化
systemctl unmask hostapd

◇ hostapd サービス自動起動ステータスを確認
systemctl is-enabled hostapd

◇ 「disable」ならhostapd サービス自動起動を有効化
systemctl enable hostapd
systemctl is-enabled hostapd

◇ dnsmasq サービス自動起動ステータスを確認
systemctl is-enabled dnsmasq

◇ 「disable」ならdnsmasq サービス自動起動を有効化
systemctl enable dnsmasq
systemctl is-enabled dnsmasq


サービス起動

◇ 再起動
reboot

◇ hostapdサービス起動状況確認
systemctl status hostapd
----------------------------
※停止している場合
systemctl start hostapd
systemctl status hostapd

◇ dnsmasqサービス起動状況確認
systemctl status dnsmasq
----------------------------
※停止している場合
systemctl start dnsmasq
systemctl status dnsmasq

◇ IPアドレス付与情報
tail -f /var/lib/misc/dnsmasq.leases


アクセスポイントに接続

◇ 【ワイヤレス設定】で設定したSSIDが表示される

◇ 【ワイヤレス設定】で設定したパスワード入力

◇ アクセスポイントに接続できる

◇ 外部ネットワークと通信できることを確認