PiVPN で Raspberry Pi 4 に WireGuard (VPN) サーバーを構築
PiVPN で Raspberry Pi 4 に WireGuard (VPN) サーバーを構築

PiVPN で Raspberry Pi 4 に WireGuard (VPN) サーバーを構築

タグ
WireGuardRaspberryPiVPN🔧 テック
投稿日
Jan 25, 2021
著者
💩 うんち

こんにちは💩うんちです。

今回は自宅に Raspberry Pi 4 で WireGuard のVPNサーバーを構築してみたので手順をまとめました。

WireGuard は公式のアプリが良くできていて、WindowsやMac、iPhoneなど、あらゆるプラットフォームで簡単に設定が行えます。そのため管理コストがとても低いのでおすすめです。

サーバー構築も驚くほど簡単でクライアントの設定まで終わらせるのに10分かかりません。気になった方は是非試してみてください。

なお WireGuard は P2P で通信するためサーバーやクライアントという概念ではないようですが、わかりやすくするためにこの記事ではRaspberry Pi側をサーバー、MacやiPhone側をクライアントという言葉を使います。

目次

Raspberry Pi の選び方

Raspberry Pi Zero W
Raspberry Pi Zero W

Raspberry Pi 4 Model B / 8GB
Raspberry Pi 4 Model B / 8GB

今回 Raspberry Pi 4 Model B / 8GB と Raspberry Pi Zero W で検証してみました。

VPN接続した状態でどちらもYouTubeで4k動画を3本同時に再生してみましたが安定して稼働します。

Raspberry Pi Zero WはCPU使用率が100%に張り付き、速度は少し遅くなりました。それでも2.5MB/s以上でたので一人で使う分には十分機能します。

速度を十分出したい場合は Raspberry Pi 4 Model B / 2GB あたりがコスパ良さそうです。

VPNサーバー構築手順

VPNサーバー構築は質問に答えていくだけで完了します。およそ3分くらいで終わります。

まず、Raspberry Pi のターミナルでインストールスクリプトを実行します。SSH経由でも問題ありません。

$ curl -L https://install.pivpn.io | bash
インストールが始まる様子。
インストールが始まる様子。

しばらくすると青い画面に切り替わります。画像つきですすめます。

「あなたのRaspberryPiをVPNサーバーに変身させます」というメッセージ。
「あなたのRaspberryPiをVPNサーバーに変身させます」というメッセージ。

Enterを押して次へ。

「VPNサーバー構築するには静的IPが必要です。次のセクションで現在の設定を反映するか手動で変更してください。」とのとこ。
「VPNサーバー構築するには静的IPが必要です。次のセクションで現在の設定を反映するか手動で変更してください。」とのとこ。

これはグローバルの固定IPなどの話ではなく、ローカルの静的IPのことを指しています。お使いのルーターのDHCP機能に対する設定になります。

Enterを押して次へ。

image

最新の64bit版 Raspberry Pi OSだとうまく認識していないのか、「Raspbianではないので静的IPの設定は行なえません」と出てしまいます。

この場合はルーター側で静的IPを割当ていれば、無視してEnterキーを押して進めて問題ありません。

image

通常であればこのように現在割り当てられているIPを静的IPに設定していいか聞かれます。

問題なければEnterを押して次へ。

「ローカルユーザーを選択してください」とのこと。
「ローカルユーザーを選択してください」とのこと。

Enterを押して次へ。

ユーザー選択画面
ユーザー選択画面

今回はデフォルトの pi ユーザーしかいない状態だったのでこのままEnterを押して進めます。

検証だけならこれでいいかもしれませんが、できれば専用のユーザーを作ったほうがいいですね。

「WireGuard か OpenVPN か選んでください」とのこと
「WireGuard か OpenVPN か選んでください」とのこと

今回は WireGuard を使用したいので、このままEnterを押して次へ。

「ポートを指定してください」とのこと
「ポートを指定してください」とのこと

デフォルトでは 51820 ですが、気分で 51829 にしてみました。5桁の数字で他に使っていないポートなら何でも大丈夫です。このポートをルーター側で開放してあげる必要があります。

「このポートでいいですか?」とのこと
「このポートでいいですか?」とのこと

Yesを選択してEnterを押して次へ。

「DNSサーバーを選んでください」とのこと。
「DNSサーバーを選んでください」とのこと。

こだわりがなければ何でも大丈夫です。今回は匿名性が高く高速な CloudFlare を選択してみました。

「固定IPかDNSを使用するか決めてください」とのこと
「固定IPかDNSを使用するか決めてください」とのこと

固定IPが割り当てられた回線であれば固定IPで問題ありません。そうでない場合はDDNSサービスなどを使う必要があると思います。

「サーバーキーを生成します」とのこと
「サーバーキーを生成します」とのこと

Enterを押して次へ

「このサーバーはインターネット上に公開されているため unattended-upgrades を有効にすることを推奨します。一部の更新は再起動が必要になるので、定期的に再起動を行ってください」とのこと
「このサーバーはインターネット上に公開されているため unattended-upgrades を有効にすることを推奨します。一部の更新は再起動が必要になるので、定期的に再起動を行ってください」とのこと

unattended-upgrades はDebianやUbuntuなどのパッケージを自動でアップデートしてくれるものです。次のセクションで有効にするかどうか聞かれるのでこのままEnterを押して次へ。

「unattended-upgrades を有効にしますか?」とのこと
「unattended-upgrades を有効にしますか?」とのこと

Yesを選んでEnterを押して次へ。

「インストール完了」とのこと
「インストール完了」とのこと

プロファイル追加の方法が書いてありますが、後で詳しく解説するのでEnterを押して次へ。

「再起動することを強く勧めます」とのこと
「再起動することを強く勧めます」とのこと

Yesを選択してEnterを押して次へ。

「再起動します」とのこと
「再起動します」とのこと

Enterを押してRaspberry Piを再起動させます。

これでVPNサーバーの構築は完了です。かんたんですね。

クライアント用のプロファイルを作成

VPNサーバーは構築できたので、次は接続するクライアント側のプロファイルを作成します。

クライアントの設定はMacとiPhoneの手順を紹介します。WindowsやAndroid、Linuxなどでもだいたい同じになるかと思います。

まずはサーバー側で端末(クライアント)に設定するためのプロファイルを作成しましょう。このプロファイルというのはクライアントごとに作る認証情報のカタマリです。

プロファイルの作成は pivpn add コマンドを使用します。

$ pivpn add
image

クライアントに名前をつけるように言われるので自分がわかりやすい名前をつけましょう。

今回は「UnchiDevice」としました。

image

これだけで必要なプロファイル情報が生成されます。

プロファイルは /home/pi/configs に設置されます。

$ ls -la /home/pi/configs
image

このように UnchiDevice.conf という名前でプロファイルが作成されているのがわかります。

image

中身は大事な情報が含まれているので漏洩しないように気をつけましょう。

Macの設定

まずサーバー側で作成したプロファイルをMac側に保存してください。場所はどこでも大丈夫です。

続いてクライアントアプリのインストールですが、MacのクライアントアプリはAppStoreからインストールします。

image

起動するとこのような画面になっています。

プロファイルを読み込むために真ん中の「Import tunnel(s) from file」をクリックします。

image

サーバーで生成したプロファイルを選択して「Import」をクリック。

image

WireGuardがVPN設定を追加することを許可するか聞かれているので、「Allow」をクリックします(日本語環境だと「許可」などになっているかと思います)。

image

これだけで設定は完了です。

image

真ん中らへんにある「Activate」ボタンをクリックするとVPN接続が確立します。

Statusが緑のランプになれば接続成功です。

接続を切るには「Deactivate」ボタンをクリックします。

これだけでです!

iPhoneの設定

続いてiPhoneの設定方法です。

まずはApp StoreでWireGuardをインストールします。

image

アプリの画面はこんな感じです。

image

右上の「+」をタップすると取り込み方法をきかれます。

一番かんたんなQRコードを選択します。

するとカメラが立ち上がります。

QRコードはサーバー側でターミナル上で表示させます。

$ pivpn -qr <プロファイル名>

このようにQRコードがでかでかと出力されるのでカメラをかざしましょう。

image

読み取りに成功すると名前をつけるように言われるので自分がわかりやすい名前をつけましょう。

ここでは「自宅」としています。

image

そうするとWireGuardがVPN設定を追加することを許可しますかと聞かれるので「Allow」を選択します(日本語環境だと「許可」など)。

image

iOSのVPN設定画面に飛ぶので、認証をします。

image

設定が完了するとWireGuardアプリに戻ってきます。

新しく「自宅」というプロファイルが登録されました。

右側のスイッチを押すとVPN接続を開始します。

image

VPN接続に成功すると上の方に「VPN」の文字が表示されます。

以上です!

驚くほど簡単にVPN環境が構築できてしまいました。

会社で導入する際もWireGuardのシンプルな仕組みのおかげで端末設定が非常にスムーズに行えそうですね。