Raspberry Pi Zero W で遊んでみる(3)~アクセスポイント化~
やりたいこと
WIFI環境がない場所でもひとつのraspi zero wをアクセスポイントとして通信がしたい
なので、raspi zero w をアクセスポイント化にトライ
教科書
MACアドレスを調べる
pi@raspberrypi:~$ iw dev
udev ruleを追加
ファイルを作成
$ sudo nano /etc/udev/rules.d/70-persistent-net.rules
以下の"b8:27:eb:ff:ff:ff"の部分を先に調べたMACアドレスに書き換えて上のファイルに記述
SUBSYSTEM=="ieee80211", ACTION=="add|change", ATTR{macaddress}=="b8:27:eb:ff:ff:ff", KERNEL=="phy0", \ RUN+="/sbin/iw phy phy0 interface add ap0 type __ap", \ RUN+="/bin/ip link set ap0 address b8:27:eb:ff:ff:ff"
Dnsmasq and Hostapdのインストール
$ sudo apt-get install dnsmasq hostapd
Dnsmasq and Hostapdのためのファイル設定
3つのファイルを書き換える
1. /etc/dnsmasq.conf
interface=lo,ap0 no-dhcp-interface=lo,wlan0 bind-interfaces server=8.8.8.8 domain-needed bogus-priv dhcp-range=192.168.10.50,192.168.10.150,12h
2. /etc/hostapd/hostapd.conf
以下のssidとpassphraseを自分の好きな名前に設定する。" "で囲む必要はない。
ctrl_interface=/var/run/hostapd ctrl_interface_group=0 interface=ap0 driver=nl80211 ssid=YourApNameHere hw_mode=g channel=11 wmm_enabled=0 macaddr_acl=0 auth_algs=1 wpa=2 wpa_passphrase=YourPassPhraseHere wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP CCMP rsn_pairwise=CCMP
3. /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Interfaces Fileの修正
1. /etc/wpa_supplicant/wpa_supplicant.conf
使用できるWIFIがあればそのWIFIのSSIDとパスワードを設定
country=JP ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="YourSSID1" psk="YourPassphrase1" id_str="AP1" }
2. /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8) # Please note that this file is written to be used with dhcpcd # For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' # Include files from /etc/network/interfaces.d: source-directory /etc/network/interfaces.d auto lo auto ap0 auto wlan0 iface lo inet loopback allow-hotplug ap0 iface ap0 inet static address 192.168.10.1 netmask 255.255.255.0 hostapd /etc/hostapd/hostapd.conf allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface AP1 inet dhcp
起動時の設定
/home/piに以下シェルスクリプトを作成
pi@raspberrypi:~$ cat ./start-ap-managed-wifi.sh #!/bin/bash sleep 30 sudo ifdown --force wlan0 && sudo ifdown --force ap0 && sudo ifup ap0 && sudo ifup wlan0 sudo sysctl -w net.ipv4.ip_forward=1 sudo iptables -t nat -A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -j MASQUERADE sudo systemctl restart dnsmasq
実行権限を付加
pi@raspberrypi:~$ chmod +x ./start-ap-managed-wifi.sh
起動時に実行するために、cronに設定
$ sudo crontab -e
以下を最終行に追加
@reboot /home/pi/start-ap-managed-wifi.sh
最後に...
リブート!
これで母艦PCのwifiを見ると設定したSSIDが見えるはず!!
コメント
おまけ
sshのホスト名を変更する方法
$ sudo -e /etc/hostname 変更する $ reboot
再起動するとssh -X pi@変更後のホスト名.localで接続可能