Skip to main content

KTDEVX

WireGuardを利用してOpenWrt上にVPNサーバーを構築し、外部から自宅ネットワークにアクセスできるようにする

Table of Contents

# はじめに

本記事では、OpenWrtを導入したルーター上にWireGuardを使ったVPNサーバーを構築し、外出先から自宅ネットワークへ安全にアクセスする方法を解説します。

WireGuardは、軽量で高速かつセキュアなVPNプロトコルであり、自宅にVPN環境を手軽に構築することができます。

# パッケージのインストール

OpenWrtのWeb管理画面(LuCI)にログインし、luci-proto-wireguardをインストールします。これにより、wireguard-toolsなどの必要なパッケージもインストールされます。

インストール完了後はルーターを再起動してください。

# ネットワークインターフェースの追加

LuCIの「ネットワーク > インターフェース」にアクセスし、「インターフェースを新規作成…」をクリックして以下の設定で作成します。

項目設定
名前<インターフェース名>
プロトコルWireGuard VPN

名前はvpnwgなどの分かりやすい名前を設定しましょう。今回はvpnとしました。

次に「一般設定」タブで以下を設定します。

項目設定
リッスンポート51820
IPアドレス<WireGuardインターフェースのIPアドレス>

特に意図がなければIPアドレスは既存のセグメントと被らないように設定しましょう。今回は10.0.0.1に設定しました。

最後に「Generate new key pair」をクリックして、サーバー用の秘密鍵・公開鍵を生成します。

設定完了後、「保存」をクリックしてください。

# ファイアウォールの設定

LuCIにて「ネットワーク > ファイアウォール」にアクセスし、「一般設定」タブからゾーンの設定を行います。

lanインターフェースと同じ設定を適用させたいので、lanゾーンを編集して「対象ネットワーク」にvpnインターフェースを追加します。

次に、「トラフィック・ルール」タブを開いて、WireGuardの接続を許可する設定を追加します。wan側からの通信はデフォルトで無効化されているため、wanからVPNサーバー(OpenWrt)への通信を許可しましょう。

「追加」をクリックして以下の内容でルールを追加します。

項目設定
名前Allow-WireGuard
プロトコルUDP
送信元ゾーンwan
宛先ゾーンデバイス (入力)
宛先ポート51820

設定完了後、「保存&適用」をクリックしましょう。

# ピアの追加

VPNサーバーに接続を許可するクライアント(ピア)の情報を追加します。

ここでは、クライアントの鍵ペアをサーバー側で生成し、設定ファイルをクライアントへ共有する手順で説明します。この方法では、一時的にサーバー側にクライアントの秘密鍵を保持することになるため注意が必要です。

LuCIにて「ネットワーク > インターフェース」にアクセスし、先ほど追加したvpnを編集します。「ピア」タブを開いて「ピアを追加」をクリックしましょう。

ピアの設定画面が開かれたら設定を以下のように編集します。

項目設定
説明<ピアの説明>
許可されたIP<ピアが指定可能なIPアドレス>
許可されたIPのルート有効
永続的なキープアライブ25

「説明」は、ピアを識別できるような名前をつけておきましょう。「許可されたIP」では、ピアに指定を許可するIPアドレスを設定します。

基本的には1つの公開鍵につき1つのピアとするため、あまり意識する必要はありませんが、「許可されたIP」の設定では以下のようにサブネットマスクが適用されます。

許可されたIP指定可能なピアのアドレス
10.0.0.210.0.0.2
10.0.0.2/32同上
10.0.0.0/2410.0.0.0~10.0.0.255
10.0.0.2/24同上

今回は10.0.0.2に設定しました。

設定が完了したら「Generate new key pair」と「Generate preshared key」をクリックして各種鍵を生成します。

ここまで実施すると、「Configuration Export」から「Generate configuration…」がクリックできるようになっているのでクリックしましょう。

項目設定
Connection endpoint<VPNサーバーのIPアドレス/ドメイン名>
許可されたIP<VPNを経由させたい宛先>

「Connection endpoint」では、VPNサーバーのIPアドレスまたはドメイン名を指定しましょう。今回はOpenWrtにVPNサーバーを立てているため、wanにISPから割り当てられたIPアドレスを設定します。

「許可されたIP」の設定では、VPNを経由させたいIPアドレスを設定します。デフォルトでは、0.0.0.0/0::/0が指定されており、全ての通信がVPNを経由する設定になっています。「許可されたIP」の設定は必要に応じて変更しましょう。

設定画面の下のほうに行くとQRコードとクライアント用の設定が表示されています。これらをクライアント側で読み込ませることで簡単に設定を適用することができます。

クライアントへ設定適用後は、サーバー側にクライアントの秘密鍵の情報は必要ないため、削除した後ピアの設定を保存しましょう。

「保存&適用」をクリックして設定を反映後、この時点でvpnインターフェースの再起動も行っておきましょう。

# クライアントから接続

AndroidからVPNサーバーに接続してみます。先ほど表示された設定をwg.confなどのファイルに書き込んでクライアントに送信します。

Playストアで「WireGuard」で検索してアプリをインストールしましょう。

Playストア WireGuard

インストールしたアプリを開きます。

WireGuard Androidアプリ

右下に表示されているプラスアイコンを押した後、「ファイル、アーカイブからインポート」を選択します。サーバーからダウンロードした設定ファイルを選択してインポートしましょう。

WireGuard Androidアプリ

設定が追加されました。追加直後はVPNが無効になっています。右横に表示されているスイッチを押してVPNを有効にしましょう。

有効にした後、確認のためにSMBクライアントアプリ「Network Browser」を使って、自宅のファイルサーバーにアクセスしてみます。

WireGuard Androidアプリ

実際に接続できていることを確認できました。これにより、VPNサーバーの構築は完了です。