11
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ラズパイに構築したWireGuardにmacOS、iOSからVPN接続してみた

Last updated at Posted at 2019-03-03

macOSにWireGuardクライアントアプリが登場したので、raspi3にをサーバにしてmacOS(mojave)、iOSアプリからWireGuardを使用してVPN接続してみた。

結果

  • raspi3のraspbian(stretch)ではWireGuardを問題なく導入できた。
  • iOS、macOSのWireGuardクライアントアプリから問題なく接続できた。
  • でもハマりポイントがあった

以下に検証した結果を書いていきます。

WireGuardとは

詳細はこちら

特徴としては

  • 新しいオープンソースのVPNプロトコル(あくまでプロトコルでありOpenVPN等のソフトウェアではない)であり、実態はカーネルモジュール
  • OpenVPNより高速で通信量が少ないらしい
  • OpenSSLに依存していないため導入がシンプル
  • まだ開発途上で安定していない?
  • 使用できるプロトコルはUDPのみでTCPは使えない

ということらしい。

サーバ側

raspberrypi3(raspbian strech)にansibleでインストールしセットアップ。Playbookを公開しているので詳細はこちらを参照。

ポイントとしては

  • カーネルモジュールとしてインストールしているので最後にrebootする必要がある。
    起動後にlsmodで見えていれば多分大丈夫。
root@raspi3-wireguard:~# lsmod | grep -i wireguard
wireguard             151552  0
ip6_udp_tunnel         16384  1 wireguard
udp_tunnel             16384  1 wireguard
ipv6                  425984  25 wireguard
  • Listenポートを53にしてFreeWifiでも接続できるようにしている。
  • templates/wg0.confPublickeyは後述するmacOS、iOSアプリで生成した公開鍵を記述する。
  • peerのAllowdIPsに後述するクライアントIPを指定する必要がある。
    0.0.0.0/0でanyで許可もできるが、今回の検証ではクライアントIPを/32で指定しないとインターネットに出られなかった。
    最初0.0.0.0/0で指定していて結構ハマッた。

ぐらいでしょうか。

OpenVPNみたいにopensslで証明書を作らなくていいのでとても楽。HeartBleedのような重大な脆弱性の影響も受けないし導入、運用はOpenVPNより簡単かなと思った。

クライアント(macOSアプリ)

  • AppStoreからインストール。今回使用したバージョンは0.0.20190207 (3)
  • 鍵ペアを生成し、Publickeyはサーバ側で指定。
  • PeerPublickeyにサーバで生成したPublickeyを指定。
  • PeerEndpointにサーバのグローバルIPとListenポートを指定。IPは名前でも問題ないのでDDNSで指定することも可。
  • InterfaceAddressesはサーバ側のインタフェースのIPレンジ内を指定
screenshot 2019-02-24 23.24.12.png

あとはStatus: Inactiveのチェックを入れるとWireGuardサーバに接続できる。

クライアント(iOSアプリ)

  • AppStoreからインストール。今回使用したバージョンは0.0.20190207 (3)
  • Create from scratchから鍵ペアを生成しmacOSアプリと同様にサーバ情報を入力。
IMG_7717.png IMG_7718.png

おわりに

  • いくつか詰まるところがあったがとりあえずmacOS、iOSでVPNで接続したいという目的を達成することができた。
  • サーバ側でトラブルシューティングが辛かった。(ログが全く出せないので切り分けが非常に大変)
    今回詰まったときに行った調査としては
    • tcpdumpでwg0インタフェースにパケットがきているか
    • wg0にパケットがきているならiptableswg0インタフェースのin,out,natでパケットが処理されているか

ぐらいしか確認できなかった気がする。

  • これでOpenVPNWireguardでVPNできる様になったので、両方を使いながら使用感を見ていきたい。またそのうち速度比較がしたい。
11
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?