Raspberry Piで Wifiルータを作る

1,364 views

Published on

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

Published in: Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,364
On SlideShare
0
From Embeds
0
Number of Embeds
113
Actions
Shares
0
Downloads
7
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

×