ラズベリーパイ(WiFiアクセスポイント編)
介護ロボットやドライブレコーダーを作るのにWiFiアクセスポイント化をしたので紹介する
完成ネットワークイメージは左図のとおり
RaspberryPi3をアクセスポイントにして介護ネットワークを作る
クライアントはRaspberryPi Zero-Wを使い、カメラやセンサーを搭載する
実はRaspberryPiのOS(Raspbery)が昨年グレードアップ(コードネーム:Stretch)
したようで、これまで(Jessie)と大きくシステム変更がされている関係で
OSからInstallすることとした
Ⅰ.アクセスポイントとなるRaspberryPi3の設定
(1)OSのinstall
①SDカードにはraspbian-stretch.img(2018-11-13版)を焼く(行く行くDeskTop画面を使うため)
②ヘッドレスインストールのためのsshファイルを置くが、wpa_supplicant.confファイルは作成しない
(ネットワーム周りの設定を手動で確実な物にするため)
(2)初期設定
モニターを接続してRasPiを起動すると、ユーザPiのパスワード変更やホストネーム、国・地位選択、それに
パッケージやカーネルのアップデートまでGUIで設定・変更できる
①ファームウェアーを更新
1 2 3 4 5 |
$ sudo rpi-update で更新し、Rebootして確認すると $ uname -a Linux docoma6.club 4.14.94-v7+ #1193 SMP Tue Jan 22 15:34:30 GMT 2019 armv7l GNU/Linux となっていた |
(3)アクセスポイントに必要な、1)アクセスポイント機能、2)DHCP,DNS機能はそれぞれ、hostapdとdnsmasqを使用する
1 |
$ sudo apt-get install hostapd dnsmasq -y |
(4)アクセスポイント機能(hostapd)の環境設定、/etc/hostapd/hostapd.conf を作成する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ sudo vi /etc/hostapd/hostapd.conf で、以下を新規作成 interface=wlan0 driver=nl80211 ssid=kaigonet # SSIDをkaigonet とした hw_mode=g channel=9 # 比較的すいているチャネル#9を使うこととした ieee80211n=1 wmm_enabled=1 ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40] macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_key_mgmt=WPA-PSK wpa_passphrase=kaigonetpass # kaigonetに接続する時のパスワード 記号は使えない rsn_pairwise=CCMP アクセスポイント環境ファイルとしてhostapd.confを引用されるように/etc/default/hostapdを編集する $ sudo vi /etc/default/hostapd で、次のように編集 #DAEMON_CONF="" ↓ DAEMON_CONF="/etc/hostapd/hostapd.conf" |
(5)DHCP,DNS機能(dnsmasq)の環境設定、/etc/hostapd/hostapd.conf を編集する
1 2 3 4 5 6 7 8 9 10 |
$ sudo vi /etc/dnsmasq.conf で、以下を新規作成 interface=wlan0 listen-address=192.168.2.1 # アクセスポイントのIPアドレス bind-interfaces server=8.8.8.8 domain-needed bogus-priv dhcp-range=192.168.2.2,192.168.2.5,12h dhcp-host = aa:bb:cc:dd:ee:ff,192.168.2.2 # aa:~ff は、クライアントWiFi Macアドレス、クライアントのIPアドレスを固定にする |
(6)ネットワークインターフェースを定義する(従来の/etc/network/interfacesではなく、/etc/dhcpcd.confを使う)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ sudo vi /etc/dhcpcd.conf で、次の記述を追加 # eth0 static IP configuration: interface eth0 static ip_address=192.168.0.30/24 # eth0側のIPアドレス環境 static routers=192.168.0.1 static domain_name_servers=192.168.0.1 # wlan0 define static profile denyinterfaces wlan0 interface wlan0 static ip_address=192.168.2.1/24 static routers=192.168.2.1 static domain_name_servers=192.168.2.1 static broadcast 192.168.2.255 |
(7)介護ネットワークから、インターネットに接続出来るようにNAT機能を使いフォワーディングする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
①IPv4 フォワードをEnableする $ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" ②$ sudo vi /etc/sysctl.conf で、以下の行をコメントアウト net.ipv4.ip_forward=1 ③以下を実行し、NATを設定する $ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE $ sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT $ sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT $ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat" $ sudo vi /etc/rc.local で、exit0の上に次を記入 service dnsmasq stop sleep 8 # RasPi起動時にホスト機能(hostapd)が完全に起動されてからDHCP機能(dnsmasq)を起動するよう8秒のタイミングをとる service dnsmasq start iptables-restore < /etc/iptables.ipv4.nat |
これで、RasPi3を再起動掛ければ完成!
で、このクライアント側の設定はどうするかというと、PCのWiFiでこの介護ネットに接続しておけば、PCからSSH接続できるので、
普通にteratermなどでいじくり倒せます
感激です !(^^)!
そうだそうだ、我が家のWiFi利用状況は、下の通り、スカスカ
なので、今回ch9を使いました