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

【IoT-Tech Meetup #5】WireGuardを動かす環境やハードウェア紹介

SORACOM
September 26, 2023

【IoT-Tech Meetup #5】WireGuardを動かす環境やハードウェア紹介

2023年9月26日開催『IoT-Tech Meetup 第5回【オープンソースVPN "WireGuard"】』で、ソラコム井出(takao)が発表した資料です。

SORACOM

September 26, 2023
Tweet

More Decks by SORACOM

Other Decks in Technology

Transcript

  1. • UDP通信ができること UDPの通信ができる環境 UDPをサポートしているプロトコルスタックが動かせること • WireGuard で利用しているセキュリティ技術が動かせること - ChaCha20 for

    symmetric encryption, authenticated with Poly1305, using RFC7539’s - AEAD construction - Curve25519 for ECDH - BLAKE2s for hashing and keyed hashing, described in RFC7693 - SipHash24 for hashtable keys - HKDF for key derivation, as described in RFC5869 WireGuard が使える条件とは?
  2. • 各種OSに対応 • Windows • macOS • Linux • Android

    • iOS どんなOSで動くの? https://www.wireguard.com/install/ ありがたい!
  3. • 接続はwg-quickコマンドで簡単 1. パッケージマネージャからwireguardをインストール 2. configファイルを準備 3. wg-quick up {configファイルのパス}

    Linuxの場合(CLI) pi@raspberrypi:~ $ vi /path/to/config a [Interface] PrivateKey = (wg_demo_client.key ) Address = IP [Peer] PublicKey = EndPoint = demo.wireguard.com: AllowedIPs = 0.0.0.0/0 Esc :wq!
  4. 手順 #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);
  5. • 基本的な使い方はLinuxと同じ(wg-quick up するだけ) • wireguard(wireguard-tools)と iproute2をインストールする • docker run

    する時に –cap-add=NET_ADMINする コンテナからも使える # ベースイメージとしてUbuntuを使用 FROM ubuntu:latest # 必要なパッケージをインストール RUN apt-get update && ¥ apt-get install -y wireguard vim iproute2 && ¥ apt-get clean && ¥ rm -rf /var/lib/apt/lists/* ~(中略:アプリケーションの構築)〜 # コンテナ起動時にwg-quickコマンドを実行 CMD [“wg-quick”, “up”, “/config/wgtest.conf”] ¥ [アプリケーションの実行コマンド] $ docker build -t custom-wireguard-image . # configファイルの保存先をマウントする $ docker run -it ¥ --cap-add=NET_ADMIN ¥ -v /path/to/your/wgtest.conf:/config/wgtest.conf ¥ custom-wireguard-image Dockerfileの例 Buildして、中に入るとwireguardでつながっている