Upgrade to Pro — share decks privately, control downloads, hide ads and more …

5分で解説!ESP32で使えるVPN「WireGuard」とIoTプラットフォーム「SORACOM」/vpn-for-esp32-using-wireguard-and-iot-platform-soracom

7cd783377515bdf8207062840b7b2f4e?s=47 SORACOM
PRO
October 02, 2021

 5分で解説!ESP32で使えるVPN「WireGuard」とIoTプラットフォーム「SORACOM」/vpn-for-esp32-using-wireguard-and-iot-platform-soracom

2021年10月2日(土)の Maker Faire Tokyo 2021ミニプレゼンテーションで、松下が発表した「5分で解説!ESP32で使えるVPN「WireGuard」とIoTプラットフォーム「SORACOM」」の資料です。

7cd783377515bdf8207062840b7b2f4e?s=128

SORACOM
PRO

October 02, 2021
Tweet

Transcript

  1. 5分で解説! ESP32 で使える VPN 「WireGuard」と IoT プラットフォーム「SORACOM」 Oct. 2, 2021

    Maker Faire Tokyo 2021 / ミニプレゼンテーション #MFTokyo2021 株式会社ソラコム テクノロジー・エバンジェリスト 松下 享平 (Max / @ma2shita)
  2. 株式会社ソラコム テクノロジー・エバンジェリスト 松下享平 (まつした こうへい) "Max" IoT や SORACOM を紹介

    通算講演回数 400超 ソラコムの Max (マックス)
  3. ESP32 (M5Stack) の Wi-Fiで使える VPN 実装の話 この話を聞くだけで 141KB 軽くなる

  4. TLS の組み込みは、フラッシュメモリーの危機! 生 MQTT MQTT + TLS 数バイト Publish するだけのコード

    (約140行) 残、402KB!! AWS IoT Core 最近の SaaS/PaaS の傾向
  5. 我々は TLS を使いたいわけじゃない。 暗号化したいのだ。 🤔

  6. はやい、イケてる、堅牢な VPN https://www.wireguard.com/

  7. lwIP(Lightweight IP stack) 向けの実装が! https://github.com/smartalock/wireguard-lwip

  8. と、つぶやいてみたら https://speakerdeck.com/ciniml/esp32desoracom-arctunaidemita?slide=4 5日後に動いている!! なんという神 @ciniml 大感謝です!!

  9. WireGuard-ESP32-Arduino を使う #include <WireGuard-ESP32.h> static WireGuard wg; char private_key[] =

    "{YOUR [Interface] PrivateKey}"; IPAddress local_ip(192, 168, 200, 254); // [Interface] Address char public_key[] = "{YOUR [Peer] PublicKey}"; char endpoint_address[] = "{YOUR [Peer] Endpoint}"; int endpoint_port = 11010; configTime(9 * 60 * 60, 0, "ntp.jst.mfeed.ad.jp", "ntp.nict.jp", "time.google.com"); delay(3000); // Wait for adjust wg.begin(local_ip, private_key, endpoint_address, public_key, endpoint_port); 接続 (setup()内 等) 設定 (ヘッダ部 等) 取り込み 1 2 3 公式からインストール可能 時刻合わせがポイント WireGuard サーバーから 払い出された値を設定 https://github.com/ciniml/WireGuard-ESP32-Arduino 7行 3行
  10. TLS → WireGuard で 141KB のダイエット 0 100,000 200,000 300,000

    400,000 500,000 600,000 700,000 800,000 900,000 MQTT+TLS MQTT+WireGuard 【参考】MQTTのみ フラッシュメモリーの使用量 MQTT+TLS MQTT+WireGuard 【参考】MQTTのみ -141KB しかもL3レイヤー上で トンネリング = 上位アプリ不問の 自由度 ESP32(M5Stack Basic)上でWireGuardを使用したMQTT実装サンプル https://qiita.com/ma2shita/items/0f0dce8ff0e45cf9fbac 素の実装に +30KB で WireGuard が組み込める
  11. WireGuard のサーバー側は? Linux Box 等で構築 ⚫ Linux kernel 5.6 でマージ済み

    ⚫ Raspberry Pi なら pivpn.io で簡単設定 セキュアリンクサービス 「SORACOM Arc」 ⚫ 2021年6月から開始済み、無料枠あり ⚫ Wi-Fi 向けの VPN に加えて、データ転送サービス「SORACOM Beam」等の IoT の開発手間を減らすサービスも利用できるように!
  12. MQTT over WireGuard で MQTTS (AWS IoT Core) へ 接続するには?

    WireGuard NGINX + Stream モジュール MQTT MQTTS AWS IoT Core Wi-Fi SORACOM Arc SORACOM Beam MQTT Wi-Fi NGINXのStreamモジュールでMQTT <=> MQTTS変換をしてAWS IoT Coreへ接続する https://qiita.com/ma2shita/items/e0b83868bf64834f3bc6 ESP32(M5Stack Basic)上でWireGuardを使用したMQTT実装サンプル https://qiita.com/ma2shita/items/0f0dce8ff0e45cf9fbac MQTTS
  13. ESP32で使えるVPN「WireGuard」と IoTプラットフォーム「SORACOM」 ✓ WireGuard は ESP32(M5Stack) で使える lwIP Stack が動くプラットフォームなら検討価値あり

    ✓ TLS 実装よりも軽量、L3 上 VPN で自由度あり 空いた141KBを有効活用できる ✓ サーバー側も自力で実装&運用可能 SORACOM Arc + SORACOM サービスでも同じことができる (だいたい無料枠アリ!) ✓ 続きは Web で! → Twitter: @ma2shita で URL 紹介します! #MFTokyo2021 もしくはフォローいただければ!
  14. 世界中のヒトとモノをつなげ 共鳴する社会へ