備忘録。
0. 導入
0.1. Raspberry Piアクセスポイント化&ルータ化のメリット
- 外でノートPC、iPad、iPhoneからSSH・VNC接続できるようになる
- モニタが無くても起動確認ができる
- eth・wlan側のIPアドレスを固定化しなくて良い(複数の接続先を頻繁に切り替えて使うような運用、つまり外によく持ち出す場合便利)
- アクセスポイント側のIPアドレスは固定化できるので、SSH・VNC接続時、楽
0.2. 前提条件
- Wi-Fiが有効化されていること
- 無線LAN接続が既に設定済みであること
0.3. システム情報
モデル:Raspberry Pi 4 Model B Rev 1.5
OS:Debian GNU/Linux 11 (bullseye)
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
$ cat /proc/cpuinfo
processor : 0
BogoMIPS : 108.00
Features : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3
processor : 1
BogoMIPS : 108.00
Features : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3
processor : 2
BogoMIPS : 108.00
Features : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3
processor : 3
BogoMIPS : 108.00
Features : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3
Revision : d03115
Serial : 10000000226b1d94
Model : Raspberry Pi 4 Model B Rev 1.5
1. アクセスポイント用のインターフェース設定
1.1. Macアドレス確認
$ iw dev
phy#0
Unnamed/non-netdev interface
wdev 0x2
addr ba:27:eb:71:2f:5d
type P2P-device
txpower 31.00 dBm
Interface wlan0
ifindex 3
wdev 0x1
addr b8:27:eb:bd:72:22
ssid Extender-G-80FC
type managed
channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
txpower 31.00 dBm
1.2. インターフェース追加
$ sudo iw phy phy0 interface add ap0 type __ap
$ sudo ip link set ap0 address b8:27:eb:bd:72:22
1.3. 設定の永続化
/etc/udev/rules.d/99-ap0.rules
SUBSYSTEM=="ieee80211", ACTION=="add|change", ATTR{macaddress}=="b8:27:eb:bd:72:22", KERNEL=="phy0", \
RUN+="/sbin/iw phy phy0 interface add ap0 type __ap", \
RUN+="/bin/ip link set ap0 address b8:27:eb:bd:72:22"
1.4. アクセスポイント化に必要なソフトウェアのインストール
$ sudo apt install -y hostapd dnsmasq
1.4.1. DHCPサーバ設定(dnsmasq)
/etc/dnsmasq.conf
interface=ap0
dhcp-range=192.168.200.100,192.168.200.150,255.255.255.0,12h
server=192.168.200.1
1.4.2. DHCPクライアント設定(dhcpcd)
/etc/dhcpcd.conf
interface ap0
static ip_address=192.168.200.1/24
nohook wpa_supplicant
1.4.3. アクセスポイント化設定(hostapd)
/etc/hostapd/hostapd.conf
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
interface=ap0
driver=nl80211
ssid={Your AP SSID}
hw_mode=g
country_code=JP
channel=11
ieee80211d=1
wmm_enabled=0
macaddr_acl=0
auth_algs=1
wpa=2
wpa_passphrase={Your AP password}
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
1.4.4. 有効化・再起動
$ sudo systemctl unmask hostapd.service
$ sudo systemctl enable hostapd.service
$ sudo systemctl restart dhcpcd.service
$ sudo systemctl restart hostapd.service
$ sudo systemctl restart dnsmasq.service
この時点でスマホやタブレット、PCなど無線LAN接続できる端末からアクセスポイントに接続ができる。確認用にApacheなどをインストールして(sudo apt install -y apache2
)、http://192.168.200.1 でアクセスし確認すると分かりやすい。
2. ルータ化設定
$ sudo sysctl -w net.ipv4.ip_forward=1
/etc/sysctl.d/routed-ap.conf
net.ipv4.ip_forward=1
2.1. IPマスカレードの有効化
$ sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
2.2. 設定の永続化
インストールを実行するとTUIで現在設定を保存するか聞かれる。<Yes>
を選択しEnter。
$ sudo apt install -y netfilter-persistent iptables-persistent
$ sudo netfilter-persistent save
$ sudo shutdown -r now