Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Raspberry Piで
Wifiルータを作る
2016-07-15
サイボウズ・ラボ
西尾泰和
今回の目的
Raspberry PiをWifiアクセスポイントにする。
DHCPサーバもRaspberry Pi上で動かす。
そしてそのネットワークへのアクセスを、
既存のWifiにルーティングする。
その手順を一歩一歩確認しながらやることで
...
前回のあらすじ
Wifiに接続できるチップESP8266EXについて
解説した。
しかし会社のWifiに接続できなかった。
3
おさらい
前回の資料:
Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr De...
ESP8266EX
Espressif Systemsの出しているWifiチップ
802.11 b/g/n、WPA/WPA2
Arduinoスケッチを書きこめる
4
http://espressif.com/en/products/hardwa...
ESP-WROOM-02
ESP8266EXとアンテナとをセットにして
日本の技適マークを取得した、
日本で合法的に使えるWifiモジュール。
550円@秋月電子
5
http://akizukidenshi.com/catalog/g/gM-...
APに接続してPING
AT+CWJAP=“ssid”,“password”
WIFI CONNECTED
WIFI GOT IP
OK
AT+PING=“www.google.com”
+6
OK
6
おさらい
HTTP
AT+CIPSTART=“TCP”,“www.google.com”,80
でGoogleのサーバの80番にTCP接続し
HTTPヘッダを送ればレスポンスが返ってくる
7
おさらい
ここまでのまとめ
Wifiのアクセスポイントに接続できる。
TCPでコネクションを張れる。
HTTPヘッダを送ってやれば
レスポンスが返ってくる。
8
おさらい
APにつながらないケース
AP接続後にDHCPでIPアドレスを得るのに
失敗している。
9
AT+CWJAP=“****”,“****”
WIFI CONNECTED(この後10秒以上)
WIFI DISCONNECT
+CWJAP:1
FAIL
理想と現実
理想:各種デバイスが既存のオフィスインフラ
(Wifiアクセスポイント)につながって
手軽に通信できる。
現実:DHCPに失敗してつながらない。
10
今回の目的(再掲)
Raspberry PiをWifiアクセスポイントにする。
DHCPサーバもRaspberry Pi上で動かす。
そしてそのネットワークへのアクセスを、
既存のWifiにルーティングする。
その手順を一歩一歩確認しながらやる...
手順
• Raspberry Pi 3にWifiドングル追加
• IPアドレス固定
• hostapdでアクセスポイント化
• isc-dhcp-serverでDHCPサーバ化
• ルーティングの設定
12
Wifiドングル
BUFFALO 無線LAN子機 WLI-UC-GNM
Raspberry Pi 2を買ったときにWifi化のために一
緒に買ったWifiドングル
13
購入時にはまったく意識してなかったが「パソコン用
の無線LAN子機として使...
IPアドレス固定
USBに刺すと/etc/network/interfacesに勝手に
設定が書き加わって設定済みのAPにつなぎに
行ってしまう。固定IPに書き換えておく。
終ったら ifdown wlan1 で一旦OFFにする
14
#ifa...
アクセスポイント化
sudo apt-get install hostapd
/etc/hostapd/hostapd.conf に設定を置く
15
interface=wlan1
ssid=MyPi
hw_mode=g
channel=6
m...
実行
sudo hostapd -dd /etc/hostapd/hostapd.conf
(-dd: デバッグメッセージ多めで実行)
→アクセスポイント一覧で見えた
16
ESP8266でも一覧で見える:
AT+CWLAP
+CWLAP:(3...
DHCPサーバ化
sudo apt-get install isc-dhcp-server
/etc/dhcp/dhcpd.conf を編集:
option domain-name,
domain-name-serverのコメントアウト
aut...
DHCPサーバ化
/etc/dhcp/dhcpd.confに下記を追記:
18
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.10 192.168.10.20;
opt...
DHCPサーバ化
/etc/default/isc-dhcp-serverを編集:
INTERFACES="wlan1”
↑参考文献では有線LANとWifiを想定しているけ
ど今回はWifiが2つなのでこう変える必要がある
19
DHCPサーバ起動
sudo service isc-dhcp-server start
ESP8266で接続すると正しくIPが得られる:
20
AT+CWJAP="MyPi","raspberry"
WIFI CONNECTED
WIFI G...
PCから接続してみる
コマンドプロンプトでipconfigするとIPアドレス
がDHCPサーバから配られているのがわかる
21
接続固有の DNS サフィックス . . . . .: local-network
リンクローカル IPv6 アドレ...
NAT(Network Address Translation)
wlan1と、インターネットに接続しているwlan0
との間でIPパケットの転送を行う
/etc/sysctl.confにnet.ipv4.ip_forward=1と加筆
IP転...
インターネットに接続できた
23
AT+PING="www.google.com"
+3
OK
普通にTwitterができた
ESP8266からPINGが通った
予期せぬメリット
普段、ホテルや出先など「周りのネットワーク環
境が変わる」という状況でRasPiをいじるために
USBシリアル変換でシリアルコンソールに接続し
て使っている。
でもRasPiが固定IPでAPになるなら、PCからAPに
つないで...
補足
もちろんSSIDとパスワードは変更しました。
ついでにステルスSSIDにしておく:
ignore_broadcast_ssid=1
25
Upcoming SlideShare
Loading in …5
×

Raspberry Piで Wifiルータを作る

10,616 views

Published on

Raspberry PiをWifiアクセスポイントにする。
DHCPサーバもRaspberry Pi上で動かす。
そしてそのネットワークへのアクセスを、 既存のWifiにルーティングする。
その手順を一歩一歩確認しながらやることで ネットワークの知識を深める。

Published in: Education
  • Be the first to comment

Raspberry Piで Wifiルータを作る

  1. 1. Raspberry Piで Wifiルータを作る 2016-07-15 サイボウズ・ラボ 西尾泰和
  2. 2. 今回の目的 Raspberry PiをWifiアクセスポイントにする。 DHCPサーバもRaspberry Pi上で動かす。 そしてそのネットワークへのアクセスを、 既存のWifiにルーティングする。 その手順を一歩一歩確認しながらやることで ネットワークの知識を深める。 2
  3. 3. 前回のあらすじ Wifiに接続できるチップESP8266EXについて 解説した。 しかし会社のWifiに接続できなかった。 3 おさらい 前回の資料: Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど) http://www.slideshare.net/nishio/wifiesp8266ex-espwroom02-espr-developer
  4. 4. ESP8266EX Espressif Systemsの出しているWifiチップ 802.11 b/g/n、WPA/WPA2 Arduinoスケッチを書きこめる 4 http://espressif.com/en/products/hardware/esp8266ex/overview おさらい
  5. 5. ESP-WROOM-02 ESP8266EXとアンテナとをセットにして 日本の技適マークを取得した、 日本で合法的に使えるWifiモジュール。 550円@秋月電子 5 http://akizukidenshi.com/catalog/g/gM-09607/ おさらい
  6. 6. APに接続してPING AT+CWJAP=“ssid”,“password” WIFI CONNECTED WIFI GOT IP OK AT+PING=“www.google.com” +6 OK 6 おさらい
  7. 7. HTTP AT+CIPSTART=“TCP”,“www.google.com”,80 でGoogleのサーバの80番にTCP接続し HTTPヘッダを送ればレスポンスが返ってくる 7 おさらい
  8. 8. ここまでのまとめ Wifiのアクセスポイントに接続できる。 TCPでコネクションを張れる。 HTTPヘッダを送ってやれば レスポンスが返ってくる。 8 おさらい
  9. 9. APにつながらないケース AP接続後にDHCPでIPアドレスを得るのに 失敗している。 9 AT+CWJAP=“****”,“****” WIFI CONNECTED(この後10秒以上) WIFI DISCONNECT +CWJAP:1 FAIL
  10. 10. 理想と現実 理想:各種デバイスが既存のオフィスインフラ (Wifiアクセスポイント)につながって 手軽に通信できる。 現実:DHCPに失敗してつながらない。 10
  11. 11. 今回の目的(再掲) Raspberry PiをWifiアクセスポイントにする。 DHCPサーバもRaspberry Pi上で動かす。 そしてそのネットワークへのアクセスを、 既存のWifiにルーティングする。 その手順を一歩一歩確認しながらやることで ネットワークの知識を深める。 11
  12. 12. 手順 • Raspberry Pi 3にWifiドングル追加 • IPアドレス固定 • hostapdでアクセスポイント化 • isc-dhcp-serverでDHCPサーバ化 • ルーティングの設定 12
  13. 13. Wifiドングル BUFFALO 無線LAN子機 WLI-UC-GNM Raspberry Pi 2を買ったときにWifi化のために一 緒に買ったWifiドングル 13 購入時にはまったく意識してなかったが「パソコン用 の無線LAN子機として使える子機モードと、パソコン を無線LAN親機にしてゲーム機などを接続できる親機 モードの2つのモードに対応」「インターネット接続 状況を自動で判別してモード切替」とのこと。 https://www.amazon.co.jp/dp/B003NSAMW2/
  14. 14. IPアドレス固定 USBに刺すと/etc/network/interfacesに勝手に 設定が書き加わって設定済みのAPにつなぎに 行ってしまう。固定IPに書き換えておく。 終ったら ifdown wlan1 で一旦OFFにする 14 #iface wlan1 inet manual # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf iface wlan1 inet static address 192.168.10.1 netmask 255.255.255.0
  15. 15. アクセスポイント化 sudo apt-get install hostapd /etc/hostapd/hostapd.conf に設定を置く 15 interface=wlan1 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 サンプルはdriverの設定が含まれており、デバイスに合わせてどう設定すべきか? →「削除してもOK」という意見があり、試したら確かにその通りだった 他のデバイスではhostpadへのドライバの追加などが必要かもしれない 参考文献 How to Set up a Raspberry Pi as a Wireless Access Point https://www.maketecheasier.com/set- up-raspberry-pi-as-wireless-access- point/
  16. 16. 実行 sudo hostapd -dd /etc/hostapd/hostapd.conf (-dd: デバッグメッセージ多めで実行) →アクセスポイント一覧で見えた 16 ESP8266でも一覧で見える: AT+CWLAP +CWLAP:(3,"MyPi",-41,"00:24:a5:a3:24:96",6,11,0) 接続しようとするとエラーになる: AT+CWJAP="MyPi","raspberry" WIFI CONNECTED +CWJAP:1 FAIL WIFI DISCONNECT ↑アクセスポイント一覧に 見えているが接続はエラーになる
  17. 17. DHCPサーバ化 sudo apt-get install isc-dhcp-server /etc/dhcp/dhcpd.conf を編集: option domain-name, domain-name-serverのコメントアウト authoritative のコメント外す 17
  18. 18. DHCPサーバ化 /etc/dhcp/dhcpd.confに下記を追記: 18 subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.10 192.168.10.20; option broadcast-address 192.168.10.255; option routers 192.168.10.1; default-lease-time 600; max-lease-time 7200; option domain-name "local-network"; option domain-name-servers 8.8.8.8, 8.8.4.4; } ←先ほど設定した固定IPと 整合するように注意 詳細はこちら How to Set up a Raspberry Pi as a Wireless Access Point https://www.maketecheasier.com/set-up-raspberry-pi-as-wireless-access-point/
  19. 19. DHCPサーバ化 /etc/default/isc-dhcp-serverを編集: INTERFACES="wlan1” ↑参考文献では有線LANとWifiを想定しているけ ど今回はWifiが2つなのでこう変える必要がある 19
  20. 20. DHCPサーバ起動 sudo service isc-dhcp-server start ESP8266で接続すると正しくIPが得られる: 20 AT+CWJAP="MyPi","raspberry" WIFI CONNECTED WIFI GOT IP OK AT+CIFSR +CIFSR:STAIP,"192.168.10.11“ OK
  21. 21. PCから接続してみる コマンドプロンプトでipconfigするとIPアドレス がDHCPサーバから配られているのがわかる 21 接続固有の DNS サフィックス . . . . .: local-network リンクローカル IPv6 アドレス. . . . .: (略) IPv4 アドレス . . . . . . . . . . . .: 192.168.10.13 サブネット マスク . . . . . . . . . .: 255.255.255.0 デフォルト ゲートウェイ . . . . . . .: 192.168.10.1 GUI上は「インターネット接続なし」 「制限あり」という表現になる
  22. 22. NAT(Network Address Translation) wlan1と、インターネットに接続しているwlan0 との間でIPパケットの転送を行う /etc/sysctl.confにnet.ipv4.ip_forward=1と加筆 IP転送を開始: sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" 具体的に何をどこに転送するか指定: sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE sudo iptables -A FORWARD -i wlan0 -o wlan1 -m state -- state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT 22
  23. 23. インターネットに接続できた 23 AT+PING="www.google.com" +3 OK 普通にTwitterができた ESP8266からPINGが通った
  24. 24. 予期せぬメリット 普段、ホテルや出先など「周りのネットワーク環 境が変わる」という状況でRasPiをいじるために USBシリアル変換でシリアルコンソールに接続し て使っている。 でもRasPiが固定IPでAPになるなら、PCからAPに つないで、sshでログインするのもよいかも。 物理的なケーブルが必要なくなる。 24
  25. 25. 補足 もちろんSSIDとパスワードは変更しました。 ついでにステルスSSIDにしておく: ignore_broadcast_ssid=1 25

×