RasberryPI2 をずっとほっといていたので、何かに使いたいなと。
でも、何かやるたびに設定をするのが非常に面倒です。
結構時間かかるし・・・。

RasberryPIでDockerが動けば
Dockerコンテナを起動するだけでいろんなサービスが動いたら楽よね。

あと、無線LANの AP としてサービスが使えると面白いんじゃないか?
と思いつきました。

まとめるとこんな感じ

  • Dockerが動いているRasberryPI
  • AP として動く
  • 有線LANがつながってたらインターネットもつながるといいね

というわけで やってみました。


Docker対応OSを動かします

RasberryPI にDockerをインストールしたイメージがすでにあるみたい。
楽だ!

というわけで以下のサイトを参考に
8GB maicroSD に Hypriot Docker Image を書き込んで起動します。

http://knowledge.sakura.ad.jp/knowledge/5418/
http://dr-asa.hatenablog.com/entry/2015/12/10/215900

以下のサイトからイメージをダウンロードして SDカードに書き込みます。
https://blog.hypriot.com/downloads/

今回は最新のバージョン hypriotos-rpi-v1.1.3.img.zip を使用。
SDカードへの書き込みは「Win32 Disk Imager」を使いました。
Win32 Disk Imager 日本語情報トップページ - OSDN

SDカードを書き込んだ後、RaspberryPIに刺して
有線LAN、無線LANアダプタ両方つけて起動。
有線LAN側はDHCPによるIPが勝手に割り振られます。

適当に Ping スウィープとかして探してみて下さい
デフォルトのユーザ名はpirate、パスワードはhypriotであることに注意。

以降は有線LAN側のIPを使用してセットアップを行います。

無線LANアダプタをセットアップします

無線LANアダプタは昔買ったこれを使います。

BUFFALO 無線LAN子機 コンパクトモデル 11n技術・11g/b対応 WLI-UC-GNM

BUFFALO 無線LAN子機 コンパクトモデル 11n技術・11g/b対応 WLI-UC-GNM

無線LAN導入 うまくいかない。。。 - moremagicの日記

無線LAN アダプタをラズパイに刺して起動。
認識はされているようです。

HypriotOS/armv7: pirate@black-pearl in ~
$ lsusb
Bus 001 Device 004: ID 0411:01a2 BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070]
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

HypriotOS/armv7: pirate@black-pearl in ~ $ iwlist wlan0 scan wlan0 Failed to read scan data : Network is down

認識されていることを確認したら
nicの設定を行います。

HypriotOS/armv7: pirate@black-pearl in ~
$ sudo vi /etc/network/interfaces.d/wlan0

allow-hotplug wlan0 #iface wlan0 inet dhcp

iface wlan0 inet static address 192.168.10.100 netmask 255.255.255.0

HypriotOS/armv7: pirate@black-pearl in ~ $ sudo ifdown wlan0 HypriotOS/armv7: pirate@black-pearl in ~ $ sudo ifup wlan0

HypriotOS/armv7: pirate@black-pearl in ~ $ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.18 scope host lo valid_lft forever preferred_lft forever inet6 ::1128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether b8:27:eb:ec:75:d7 brd ff:ff:ff:ff:ff:ff inet 192.168.1.624 brd 192.168.1.255 scope global eth0 valid_lft forever preferred_lft forever inet6 2408:211:a84:2b00:ba27:ebff:feec:75d7/64 scope global mngtmpaddr dynamic valid_lft 13005sec preferred_lft 11205sec inet6 fe80::ba27:ebff:feec:75d7/64 scope link valid_lft forever preferred_lft forever 3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether b0:c7:45:a9:72:90 brd ff:ff:ff:ff:ff:ff inet 192.168.10.10024 brd 192.168.10.255 scope global wlan0 valid_lft forever preferred_lft forever 4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:1e:e8:02:ba brd ff:ff:ff:ff:ff:ff inet 172.17.0.116 scope global docker0 valid_lft forever preferred_lft forever


無事 IP がふられたようです。
ここでは 192.168.10.100 として作業を進めます。

無線LAN APのセットアップ


次に以下のサイトを参考に 無線AP としてセットアップしていこうと思います
http://hyottokoaloha.hatenablog.com/entry/2015/02/24/000655
https://www.maketecheasier.com/set-up-raspberry-pi-as-wireless-access-point/


DHCPサーバをインストールします

HypriotOS/armv7: pirate@black-pearl in ~
sudo apt-get update

HypriotOS/armv7: pirate@black-pearl in ~ $ sudo apt-get install isc-dhcp-server


設定ファイルを編集します

HypriotOS/armv7: pirate@black-pearl in ~
$ sudo vi /etc/dhcp/dhcpd.conf

<以下を無効に> #option definitions common to all supported networks… #option domain-name "example.org"; #option domain-name-servers ns1.example.org, ns2.example.org;

<以下を有効に> authoritative;

<ファイルの最後尾に以下を追加> ping-check true;

subnet 192.168.10.0 netmask 255.255.255.0 { option routers 192.168.10.100; option broadcast-address 192.168.10.255; option subnet-mask 255.255.255.0; option domain-name "local"; option domain-name-servers 8.8.8.8,8.8.4.4; default-lease-time 600; max-lease-time 7200; range 192.168.10.101 192.168.10.254; }

HypriotOS/armv7: pirate@black-pearl in ~ $ sudo vi /etc/default/isc-dhcp-server

INTERFACES="wlan0"


つぎに APデーモンをインストール

HypriotOS/armv7: pirate@black-pearl in ~
$ sudo apt-get install -y hostapd

HypriotOS/armv7: pirate@black-pearl in ~ $ sudo vi /etc/hostapd/hostapd.conf

interface=wlan0 driver=nl80211 #driver=rtl871xdrv ssid=MyPi hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=raspberry wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP

HypriotOS/armv7: pirate@black-pearl in ~ $ sudo vi /etc/default/hostapd

DAEMON_CONF="/etc/hostapd/hostapd.conf"

wlan0とeth0 のルーティング設定

HypriotOS/armv7: pirate@black-pearl in ~
$ sudo vi /etc/sysctl.conf

<コメントアウトを解除> #Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1

<1 であることを確認> HypriotOS/armv7: pirate@black-pearl in ~ $ cat /proc/sys/net/ipv4/ip_forward 1

HypriotOS/armv7: pirate@black-pearl in ~ 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

HypriotOS/armv7: pirate@black-pearl in ~ $ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

HypriotOS/armv7: pirate@black-pearl in ~ $ sudo vi /etc/network/interfaces.d/wlan0

<最下行に以下を追加> pre-up iptables-restore < /etc/iptables.ipv4.nat


ここまでできたら おもむろにreboot!

reboot now

再起動が完了すると、コンフィグに書いたとおりのSSIDでアクセスポイント
「MyPi」が見えるようになります。
パスワードは「raspberry」

アクセスすると普通にインターネットに接続できます。
またDockerコンテナを起動するとAP の IP と port番号で コンテナのサービスにアクセスできました!


さてここから何をしようかしら。。。