【OpenWrt】WireGuardで拠点間VPN接続、遠隔地へのデータバックアップもこれで万全!

スポンサーリンク
OpenWRTルーターOpenWrtルーター
本記事はPRによる消費税込みの価格表示です
本記事はOpenWrt(21.02.3/23.05.0)で検証しています。

一世を風靡したVPNプロトコル「OpenVPN」をすっかり過去のものとしてしまった最新のVPNプロトコルが「WireGuard」です。

軽量・高速で高セキュリティのVPN「WireGuard」はOpenWrtルーターで簡単に利用することができます。

OpenWrtルーターでWireGuardを使うことで、「外出先のパソコンから本店へ接続する」「本店ネットワークと実家(帰省先)ネットワークを拠点間接続する」というVPN環境を構築することができます。

本記事ではOpenWrtルーター2台を使い「拠点間VPN」環境を構築してみます。

本記事では2台のOpenWrtルーターを使い、それぞれ「本店ルーター」「支店ルーター」を想定して「本店・支店間の拠点間VPN環境」を構築していきます。

拠点間接続したい!

WireGuardは軽量・高速・高セキュリティで現在もっとも注目されているVPNプロトコルです。

「軽量・高速・高セキュリティ」に加えて「簡単につながる」という点も魅力と言われていますが、これが結構難しくて簡単につながらなかったりします。

本記事ではOpenWrtルーターを2台使って「本店ルーター」「支店ルーター」と位置づけ、WireGuardによる拠点間VPN接続を行っていきます。

本記事での拠点間接続図

本記事では現状での「本店」「支店」のネットワークを以下のように想定します。

WireGuardで拠点間VPN接続

現状では本店ネットワークと支店ネットワークはそれぞれ独立したネットワークを構築し、インターネットに接続されています。

この状態では(当然ながら)本店ネットワークと支店ネットワークの間は相互に通信することができません。

WireGuardによる拠点間接続

WireGuardで拠点間VPN接続

本店ルーター(OpenWrt1)および支店ルーター(OpenWrt2)の間をWireGuardネットワーク(10.0.1.0/24)で結びます。

WireGuardネットワークにおける本店ルーターのIPアドレスは「10.0.1.1」とし、支店ルーターのIPアドレスは「10.0.1.2」とします。

このWireGuardネットワークで本店・支店ルーターがWireGuard拠点間接続されることで、それぞれの本店ネットワーク・支店ネットワークはWireGuardネットワークを通じて相互に通信可能となります。

拠点間VPN接続の目的

今回構築する拠点間VPN接続の目的は本店・支店ネットワークの統合です。

具体的には以下のことができること、ということになります。

拠点間接続の目的

  • 本店ネットワークのPCから支店ネットワークのファイルサーバー(192.168.1.40)を利用できること
  • 支店ネットワークのPCから本店ネットワークのファイルサーバー(192.168.13.12)を利用できること

WireGuardによる拠点間接続の前提

WireGuardは通信の仕組み上は「Peer-to-Peer」型のVPNであり、「サーバー」「クライアント」といった上下関係はありません。

しかし、構築手順上、運用手順上、そしてネットワーク構成上においては明確に「サーバー」「クライアント」という位置づけて設計する必要があります。

WireGuardサーバーの条件

WireGuardの通信の仕組み自体は「Peer-to-Peer」型なのでどちらがサーバー・クライアントという分け方はないのですが、回線環境の構成上およびVPN環境の管理上どこか一か所をサーバーとする必要があります。

具体的には以下の条件により「サーバー」が決まります。

サーバー側にはグローバルIPアドレスが必要

WireGuardの通信はPeer-to-Peer型の仕組みですが、拠点間VPNの場合はどちらか一方がVPN接続を待ち受ける側となり、もう一方がVPN接続要求を行う側となります。

このため、「接続を待ち受ける側=サーバー」となり「接続要求を行う側=クライアント」と考えると良いでしょう。

そして、「接続を待ち受ける側=サーバー」側の回線環境として「グローバルIPアドレスが付与されている」という条件があります。

現在、フレッツ光回線を中心にグローバルIPアドレスを利用しない「IPv4 over IPv6」通信が主流ですが、WireGuardに限らずVPN通信で待ち受けする側の回線環境にはグローバルIPアドレスが必要です。

つまり、WireGuardで拠点間(複数の拠点含む)接続を行う場合には最低でもどこか一つの回線はグローバルIPアドレスである必要があり、この「グローバルIPアドレスが付与された回線側がサーバー」となります。

サーバー側では暗号鍵の管理を行う

WireGuardは2つのピア間(サーバーとクライアント)で暗号鍵の交換により通信を確立させます。

この暗号鍵は拠点間の両方(サーバー/クライアント)の暗号鍵をどちらか一方のOpenWrtルーター上で作成・管理する必要があります。

この「どちらか一方のOpenWrtルーター」はサーバー側でもクライアント側でもかまいませんが、本記事ではサーバー側での作業とします。

本記事の前提環境

本記事では拠点間接続の環境として以下を想定します。

サーバークライアント
拠点の想定本店支店
ネットワーク
セグメント
192.168.13.0/24192.168.1.0/24
ルーターIPアドレス192.168.13.1192.168.1.1
WireGuard
ネットワーク環境
10.0.1.1/2410.0.1.2/24
回線環境楽天ひかり
※PPPoE接続(グローバルアドレス)
NTTドコモhome5G
※SPモード(プライベートアドレス)

「本店」と「支店」

これは「本店と支店」でなくても「自宅と実家(帰省先)」でも「自宅と仕事場」でも構いません。

本記事では「本店と支店」と想定し「本店側がサーバー」「支店側がクライアント」と想定して環境構築していきます。

本店と支店のネットワークIPアドレス

拠点間接続の場合は2拠点のネットワークをVPNを通じて同じネットワークとします。

これにより、どちらのネットワークからも対向ネットワークのサーバーが利用可能となります。

このため、本店側ネットワークと支店側ネットワークに同一IPアドレスのサーバーが存在するとよろしくありません。

よって「本店側は192.168.13.0/24ネットワーク」「支店側は192.168.1.0/24ネットワーク」とします。

WireGuardネットワークのIPアドレス

本店ネットワークや支店ネットワークのIPアドレスとは別にWireGuardのVPN確立のためのIPアドレスが必要です。

本店側のWireGuard IPアドレスは「10.0.1.1/24」とし、支店側のWireGuard IPアドレスは「10.0.1.2/24」とします。

本店ネットワークの環境

WireGuardは通信の仕組み上はPeer-to-Peerでありサーバー・クライアントの関係はありませんが、構築上はサーバー・クライアントを意識する必要があります。

そのひとつに「サーバー側の回線はグローバルIPアドレスであること」という条件があります。

これはVPN確立時にクライアントがサーバーへVPN接続しに行くわけですが、サーバー側回線がグローバルIPアドレスでなければ接続できないからです。

今回の環境では本店側(サーバー側)の回線環境は「楽天ひかりのPPPoE接続(グローバルIPアドレス/可変)」とします。

支店側(クライアント側)の回線は「NTTドコモhome5G(プライベートIPアドレス/可変)」を想定します。

ダイナミックDNSの利用

拠点間VPN接続を行うためにはサーバー側(本記事では本店)にはグローバルIPアドレスが付与されている必要があります。

また、WireGuardによる接続はクライアント側(本記事では支店)からサーバーへ接続する形態となるため、クライアントからはサーバー側IPアドレスの名前解決できる仕組みが必要です。

本記事では本店ネットワークは楽天ひかりのPPPoE接続(変動グローバルIPアドレス)であるため、DDNSNowというダイナミックDNSサービスを利用させていただきました。

よって、本記事の前提として「本店回線のIPアドレスは〇〇〇.f5.siで名前解決」という仕組みです。

なお、ダイナミックDNSについては本記事では触れません。

IPv6通信は使用しない

本記事ではIPv6通信は行わないものとします。

想定する環境のサーバー側回線(楽天ひかりのPPPoE接続)もクライアント側回線(NTTドコモhome5G)も、IPv6通信に対応していません。
※home5Gは気分次第でIPv6アドレスが付与されたりしますが・・・

また、IPv6通信を前提としてVPN環境を構築する場合には経路設定(ルーティング)の漏れなどを考慮する必要があり面倒だから、という理由もあります。

本記事の目標(ゴール)

本記事では本店と支店を2台のOpenWrtルーターでVPN接続します(拠点間VPN)。

これにより、本店ネットワークと支店ネットワークが相互に通信できる環境を目指します。

具体的には「本店から支店のNASへ接続できる」「支店から本店のNASへ接続できる」「本店と支店のNAS間でファイルコピーができる」という点を確認し、本記事の目的・ゴールとします。

WireGuardサーバー環境(本店ルーター)の構築

では、サーバー側(本店ルーター)での作業および環境構築を行っていきます。

この章では「サーバー側環境構築」に加えて「サーバー側でやるべきこと」も含めて記述していきます。

サーバー側作業の大きな手順としては以下のようになります。

サーバー(本店)側の環境構築手順
  • STEP1
    暗号鍵ファイルの作成

    サーバーとなるOpenWrt上でWireGuardネットワークに参加するデバイス用の暗号鍵ファイルを作成します。

    ここで作成した暗号鍵ファイルはクライアント(支店)側環境構築でも使用します。

  • STEP2
    WireGuardモジュールのインストール

    OpenWrtルーターにWireGuardモジュールをインストールします。

    インストール後、OpenWrtルーターの再起動が必要です。

  • STEP3
    インターフェース(自分自身)の定義

    本店側ルーターのWireGuard通信インターフェースを定義します。
  • STEP4
    ピア(通信相手)の定義

    ピア(通信相手=支店)の定義を行います。
  • STEP5
    ファイアウォールの設定

    ファイアウォール・ゾーンの作成および修正を行います。

    また、サーバー側はクライアント側からの通信を待ち受けするためのトラフィックルールの設定変更を行います。

STEP① 暗号鍵ファイルの作成

まずはサーバー側で鍵ファイルを作成します。

最新版のOpenWrtでは鍵ファイルもWebUI(LuCI)上で作成することができるようになりましたが、本記事ではOpenWrtルーターにSSHクライアントで接続しコマンドにて鍵ファイルを作成していきます。

以下のコマンド操作で拠点間接続に必要な鍵ファイルを作成します。


root@OpenWrt:~# umask go=

## サーバー側キーの作成 ##
root@OpenWrt:~# wg genkey | tee wgserver.key | wg pubkey > wgserver.pub

## クライアント側キーの作成 ##
root@OpenWrt:~# wg genkey | tee wgclient.key | wg pubkey > wgclient.pub

## クライアントとの事前共有鍵の作成 ##
root@OpenWrt:~# wg genpsk > wgclient.psk

## キーファイルの確認 ##
root@OpenWrt:~# ls  -l
-rw-------    1 root     root            45 Sep  6 11:59 wgclient.key
-rw-------    1 root     root            45 Sep  6 12:00 wgclient.psk
-rw-------    1 root     root            45 Sep  6 11:59 wgclient.pub
-rw-------    1 root     root            45 Sep  6 11:59 wgserver.key
-rw-------    1 root     root            45 Sep  6 11:59 wgserver.pub
root@OpenWrt:~#


作成した暗号鍵ファイルは以下の5つです。

WireGuard
サーバー
WireGuard
クライアント
公開鍵wgserver.pubwgclient.pub
秘密鍵wgserver.keywgclient.key
事前共有鍵wgclient.psk
ここで作成した暗号鍵ファイルはサーバー(本店)環境の構築およびクライアント(支店)環境の構築で使用します。

STEP② WireGuardモジュールのインストール

まずOpenWrtルーターにWireGuard関連モジュールをインストールしていきます。

リスト更新

メニュー「システム > ソフトウェア」からソフトウェアへ移動します。

OpenWrtでWireguard VPN環境を構築

ソフトウェア画面に移動したら、まずは「リストを更新」ボタン押下して更新可能な拡張モジュールリストを更新します。

WireGuardモジュールのインストール

「リストを更新」で更新可能な拡張モジュールリストを更新したら、WireGuard関連モジュールをインストールします。

OpenWrtでWireguard VPN環境を構築

「フィルタ」欄にモジュール名を入れると画面のモジュール一覧が絞り込まれます。

以下のモジュールを絞り込み、一覧画面右の「インストール」ボタンよりインストールします。

※OpenWrtのバージョンによりインストールモジュールが異なります。

インストール
モジュール
23.0.5より前のバージョンluci-i18n-wireguard-ja
qrencode
23.0.5luci-proto-wireguard
qrencode

「luci-i18n-wireguard-ja」または「luci-proto-wireguard」モジュールをインストールすることで、WireGuardに関連するすべてのモジュールが一括インストールされます。

また、必須ではありませんが「qrencode」も同時にインストールしておくと良いでしょう。

「qrencode」はOpenWrtルーターでQRコードを作成してくれる拡張モジュールであり、WireGuardのクライアント向けプロファイルの作成時にスマホで読み取り可能なQRコードによるプロファイルを作成してくれます。

ルーターの再起動

WireGuard関連モジュールはインストールしただけではシステム反映されません。

ルーターを再起動してあげる必要があります。

OpenWrt管理画面システム再起動

メニュー「システム > 再起動」からOpenWrtルーターを再起動してください。

STEP③ WireGuardインターフェースの作成

WireGuardサーバー側のインターフェースを新規作成していきます。

メニュー「ネットワーク > インターフェース」からインターフェース画面へ移動します。

WireGuardで拠点間VPN接続

本記事ではIPv6通信を行わない前提であるためIPv6インターフェース「WAN6」を削除しています。
皆さんの環境で「WAN6」インターフェースが存在していてもかまいません。

インターフェース画面の「インターフェースを新規作成」ボタンよりインターフェース定義画面を開きます。

OpenWrtでWireguard VPN環境を構築

新規インターフェースを以下のように定義します。

名前ご自由に
※本記事では”wg0″としました
プロトコル“WireGuard VPN”を一覧選択

上記入力後、「インターフェースを作成」ボタンを押下します。

WireGuardで拠点間VPN接続
インターフェースの詳細定義画面に遷移します。

以下の項目を設定します。

秘密鍵“wgserver.key”の内容をコピー
公開鍵“wgserver.pub”の内容をコピー
リッスンポート“51820”を入力
IPアドレスWireGuardネットワークにおけるサーバー(本店)のIPアドレス
※本記事では”10.0.1.1/24″

特に「秘密鍵」「公開鍵」はファイルを間違えないように、気を付けてコピペしてください。

設定したら「保存」ボタンを押下してインターフェース一覧画面へ戻ります。

WireGuardで拠点間VPN接続

インターフェース一覧画面から「保存&適用」ボタンを押下して、定義したインターフェースをシステム反映させておきます。

以上でサーバー側(自分=本店)のWireGuardインターフェース定義は完了です。

STEP④ ピア(通信相手=クライアント)の定義

作成したサーバー(本店)側インターフェース「wg0」について、ピア(通信相手=クライアント側)の設定を行います。

WireGuardで拠点間VPN接続

たったいま作成したWireGuardインターフェース(本記事では「wg0」)の「編集」ボタンを押下し、インターフェース編集画面へ入ります。

WireGuardで拠点間VPN接続

インターフェース編集画面の「ピア」タブ画面から「ピアを追加」ボタンを押下します。

WireGuardで拠点間VPN接続

ピア(通信相手=クライアント)の定義画面より以下の情報を設定します。

説明ご自由に
※本記事では”wgclient”と定義
公開鍵“wgclient.pub”の内容をコピー
事前共有鍵“wgclient.psk”の内容をコピー
許可されたIPクライアント(支店ルーター)のWireGuardIPアドレス
※本記事の環境では”10.0.1.2/24″
クライアント(支店)のネットワークセグメント
※本記事の環境では”192.168.1.0/24″
許可されたIPのルートチェックする
  • 公開鍵・事前共有鍵の設定は暗号鍵ファイルを間違えないよう、またコピペミスのないように十分注意してください。
  • 「許可されたIP」は自分(サーバー)ではなく通信相手(クライアント)の環境を設定します。

以上を入力したら画面右下の「保存」ボタンを押下して設定を保存します。

WireGuardで拠点間VPN接続

ピアの定義「wgclient」が作成されていることを確認し、画面右下の「保存」ボタンで終了します。

WireGuardで拠点間VPN接続

インターフェース一覧画面に戻りました。

画面右下の「保存&適用」ボタンを押下して作成したピア定義をシステムに反映させます。

以上でピア(通信相手=クライアント)の定義は完了です。

STEP⑤ ファイアウォールの設定

最後にファイアウォールを定義していきます。

ファイアウォールは「ファイアウォール・ゾーン」および「トラフィック・ルール」の設定を行います。

「ファイアウォールゾーン」の設定

OpenWrtではインストール時に「lan」「wan」の2つのファイアウォール・ゾーンが定義されています。

今回、WireGuardを導入するにあたり、この2つのファイアウォールゾーンを変更してもいいのですが、本記事では独立性確保のためにWireGuard専用のファイアウォールゾーンを新規作成します。

「ネットワーク > ファイアウォール」から「一般設定」タブ画面を開きます。

OpenWrtでWireguard VPN環境を構築

画面下の「追加」ボタン押下で新規ファイアウォール・ゾーン設定の「一般設定」タブ画面を開きます。

WireGuardで拠点間VPN接続

以下の項目を設定します。

名前ご自由に
※本記事では”wg0″と定義
受信(Input)許可(Accept)
送信(Output)許可(Accept)
※初期値
転送(Forward)拒否(Reject)
※初期値
マスカレードチェックする
MSSクランプチェックする
対象ネットワーク一覧からWireGuard用インターフェースを選択
※本記事では”wg0″
宛先ゾーンへの転送を許可する一覧から”lan”と”wan”をチェック(選択)
送信元ゾーンからの転送を許可する一覧から”lan”をチェック(選択)

上記項目を設定したら「保存」ボタンを押下してファイアウォール設定画面へ戻ります。

WireGuardで拠点間VPN接続

ファイアウォール設定画面に戻ったら次の確認・設定を行います。

まず、作成した「wg0」ゾーンが作成されていることを確認します。

次にすでにある「lan」ゾーンの「マスカレード」をチェックします。

以上2点の確認・設定が完了したら画面右下の「保存&適用」ボタンを押下して設定をシステム反映させておきます。

以上でファイアウォール・ゾーンの設定は完了です。

「トラフィックルール」の設定

次にファイアウォール・トラフィック・ルールの設定を行います。

「ネットワーク > ファイアウォール」から「トラフィック・ルール」タブ画面を開きます。

OpenWrtでWireguard VPN環境を構築

画面下の「追加」ボタンを押下して「ファイアウォール・トラフィック・ルール」追加画面を開きます。

OpenWrtでWireguard VPN環境を構築

以下の項目を設定します。

名前ご自由に
※本記事では”Allow_wgserver”
プロトコル“UDP”を一覧選択
※”TPC”のチェックを外す
送信元ゾーン“wan”を一覧選択
宛先ゾーン“デバイス(入力)”を一覧選択
宛先ポートインターフェース定義で設定したWireGuardポート番号
※本記事では「51820」(WireGuard標準値)

設定したら「保存」ボタンを押下して一覧画面へ戻ります。

ルーターの再起動

以上でファイアウォール設定が完了です。

「インターフェースの定義」「ファイアウォールの定義」が完了したら、ルーターを再起動してください。

OpenWrt管理画面システム再起動

以上でWireGuardサーバー側の定義は(一応)完成です。

引き続き、このサーバー環境をベースとしたクライアント環境を構築していきます。

WireGuardクライアント環境(支店ルーター)の構築

ここからはクライアント(支店)側のOpenWrtルーターの環境構築を行っていきます。

作業の対象はクライアント(支店)側のOpenWrtルーターです。

クライアント(支店)側作業の大きな手順としては以下のようになります。

クライアント(支店)側の環境構築手順
  • STEP1
    WireGuardモジュールのインストール

    OpenWrtルーターにWireGuardモジュールをインストールします。

    インストール後、OpenWrtルーターの再起動が必要です。

  • STEP2
    インターフェース(自分自身)の定義

    支店側ルーターのWireGuard通信インターフェースを定義します。
  • STEP3
    ピア(通信相手)の定義

    ピア(通信相手=本店)の定義を行います。
  • STEP4
    ファイアウォールの設定

    ファイアウォール・ゾーンの作成および修正を行います。

STEP① WireGuardモジュールのインストール

インストールモジュールはサーバー側と同じです。

まずクライアント(支店)側のOpenWrtルーターにWireGuard関連モジュールをインストールしていきます。

リスト更新

メニュー「システム > ソフトウェア」からソフトウェアへ移動します。

OpenWrtでWireguard VPN環境を構築

ソフトウェア画面に移動したら、まずは「リストを更新」ボタン押下して更新可能な拡張モジュールリストを更新します。

WireGuardモジュールのインストール

「リストを更新」で更新可能な拡張モジュールリストを更新したら、WireGuard関連モジュールをインストールします。

OpenWrtでWireguard VPN環境を構築

「フィルタ」欄にモジュール名を入れると画面のモジュール一覧が絞り込まれます。

以下のモジュールを絞り込み、一覧画面右の「インストール」ボタンよりインストールします。

※OpenWrtのバージョンによりインストールモジュールが異なります。

インストール
モジュール
23.0.5より前のバージョンluci-i18n-wireguard-ja
qrencode
23.0.5luci-proto-wireguard
qrencode

「luci-i18n-wireguard-ja」または「luci-proto-wireguard」モジュールをインストールすることで、WireGuardに関連するすべてのモジュールが一括インストールされます。

また、必須ではありませんが「qrencode」も同時にインストールしておくと良いでしょう。

「qrencode」はOpenWrtルーターでQRコードを作成してくれる拡張モジュールであり、WireGuardのクライアント向けプロファイルの作成時にスマホで読み取り可能なQRコードによるプロファイルを作成してくれます。

ルーターの再起動

WireGuard関連モジュールはインストールしただけではシステム反映されません。

ルーターを再起動してあげる必要があります。

OpenWrt管理画面システム再起動

メニュー「システム > 再起動」からOpenWrtルーターを再起動してください。

STEP② WireGuardインターフェースの作成

WireGuardクライアント側のインターフェースを新規作成していきます。

メニュー「ネットワーク > インターフェース」からインターフェース画面へ移動します。

WireGuardで拠点間VPN接続

本記事ではIPv6通信を行わない前提であるためIPv6インターフェース「WAN6」を削除しています。
皆さんの環境で「WAN6」インターフェースが存在していてもかまいません。

インターフェース画面の「インターフェースを新規作成」ボタンよりインターフェース定義画面を開きます。

OpenWrtでWireguard VPN環境を構築

新規インターフェースを以下のように定義します。

名前ご自由に
※本記事では”wg0″としました
プロトコル“WireGuard VPN”を一覧選択

上記入力後、「インターフェースを作成」ボタンを押下します。

WireGuardで拠点間VPN接続
インターフェースの詳細定義画面に遷移します。

以下の項目を設定します。

秘密鍵“wgclient.key”の内容をコピー
公開鍵“wgclient.pub”の内容をコピー
IPアドレスWireGuardネットワークにおけるクライアント(支店)側のIPアドレス
※本記事では”10.0.1.2/24″

特に「秘密鍵」「公開鍵」はファイルを間違えないように、気を付けてコピペしてください。

設定したら「保存」ボタンを押下してインターフェース一覧画面へ戻ります。

WireGuardで拠点間VPN接続

インターフェース一覧画面から「保存&適用」ボタンを押下して、定義したインターフェースをシステム反映させておきます。

以上でクライアント側(自分=支店)のWireGuardインターフェース定義は完了です。

STEP③ ピア(通信相手=サーバー)の定義

作成したクライアント(支店)側インターフェース「wg0」について、ピア(通信相手=サーバー側)の設定を行います。

WireGuardで拠点間VPN接続

たったいま作成したWireGuardインターフェース(本記事では「wg0」)の「編集」ボタンを押下し、インターフェース編集画面へ入ります。

WireGuardで拠点間VPN接続

インターフェース編集画面の「ピア」タブ画面から「ピアを追加」ボタンを押下します。

WireGuardで拠点間VPN接続

ピア(通信相手=サーバー)の定義画面より以下の情報を設定します。

説明ご自由に
※本記事では”wgclient”と定義
公開鍵サーバー側の公開鍵
“wgserver.pub”の内容をコピー
事前共有鍵“wgclient.psk”の内容をコピー
許可されたIPサーバー(本店ルーター)のWireGuardIPアドレス
※本記事の環境では”10.0.1.1/24″
サーバー(本店)のネットワークセグメント
※本記事の環境では”192.168.13.0/24″
許可されたIPのルートチェックする
エンドポイントホストサーバー(本店)側OpenWrtルーターのドメイン名
※本記事ではダイナミックDNSによる「〇〇〇.f5.si」を指定
エンドポイントポートサーバー(本店)側で定義したリッスンポート
※本記事では”51820″と定義
永続的なキープアライブ“25”(秒)を入力

※「許可されたIP」には自分(クライアント)ではなく通信相手(サーバー)のWireGuard IPアドレスおよびネットワークセグメントを定義します。

以上を入力したら画面右下の「保存」ボタンを押下して設定を保存します。

WireGuardで拠点間VPN接続

ピア(通信相手=サーバー)の定義が作成されていることを確認し、画面右下の「保存」ボタンを押下します。

WireGuardで拠点間VPN接続

インターフェース一覧に戻ったら画面右下の「保存&適用」ボタンを押下してピア定義をシステム反映させます。

以上でピア(通信相手=サーバー)の定義は完了です。

STEP④ ファイアウォールの設定

最後にファイアウォールを定義していきます。

ファイアウォールは「ファイアウォール・ゾーン」および「トラフィック・ルール」の設定を行います。

「ファイアウォールゾーン」の設定

OpenWrtではインストール時に「lan」「wan」の2つのファイアウォール・ゾーンが定義されています。

今回、WireGuardを導入するにあたり、この2つのファイアウォールゾーンを変更してもいいのですが、本記事では独立性確保のためにWireGuard専用のファイアウォールゾーンを新規作成します。

「ネットワーク > ファイアウォール」から「一般設定」タブ画面を開きます。

OpenWrtでWireguard VPN環境を構築

画面下の「追加」ボタン押下で新規ファイアウォール・ゾーン設定の「一般設定」タブ画面を開きます。

WireGuardで拠点間VPN接続

以下の項目を設定します。

名前ご自由に
※本記事では”wg0″と定義
受信(Input)許可(Accept)
送信(Output)許可(Accept)
※初期値
転送(Forward)拒否(Reject)
※初期値
マスカレードチェックする
MSSクランプチェックする
対象ネットワーク一覧からWireGuard用インターフェースを選択
※本記事では”wg0″
宛先ゾーンへの転送を許可する一覧から”lan”と”wan”をチェック(選択)
送信元ゾーンからの転送を許可する一覧から”lan”をチェック(選択)

上記項目を設定したら「保存」ボタンを押下してファイアウォール設定画面へ戻ります。

WireGuardで拠点間VPN接続

ファイアウォール設定画面に戻ったら次の確認・設定を行います。

まず、作成した「wg0」ゾーンが作成されていることを確認します。

次にすでにある「lan」ゾーンの「マスカレード」をチェックします。

以上2点の確認・設定が完了したら画面右下の「保存&適用」ボタンを押下して設定をシステム反映させておきます。

以上でファイアウォール・ゾーンの設定は完了です。

ルーターの再起動

「インターフェースの定義」「ファイアウォールの定義」が完了したら、ルーターを再起動してください。

OpenWrt管理画面システム再起動

拠点間VPN接続の動作確認

ここまでの手順でうまく設定できていれば2台のOpenWrtルーターはWireGuardによる拠点間VPN接続が確立しています。

WireGuard接続状態(WireGuardステータス)の確認

メニュー「ステータス > WireGuard」からWireGuard接続状態を確認することができます。

WireGuardで拠点間VPN接続

接続しているピア(通信相手)の名前や「最新のハンドシェイク」などの接続状態が表示されます。

WireGuardが正しく通信できている状態であれば、ブラウザ画面を更新することで「最新のハンドシェイク」の時間(〇〇秒前)が更新されるはずです。

ピア(接続相手)が表示されてない??

ピアの情報が表示されない場合にはWireGuardの通信が確立できていません。

「IPアドレスが間違っている」「リッスンポートが合ってない」など、根本的にクライアントからサーバーへの接続ができていない状態です。

また、ファイアウォールの設定見直しも必要です。

ピア(接続相手)が表示されるけどハンドシェイクが更新されない??

ピアの情報が表示されているけど、「最新のハンドシェイク」欄が更新されないという場合もあります。

この場合はクライアントからサーバーへのIP通信はできているけど、WireGuardの認証のための暗号鍵交換ができていない状態が多いです。

この場合、サーバー・クライアントのインターフェース定義で秘密鍵・公開鍵・事前共有鍵に間違いがないか確認してみてください。

WireGuardネットワークでの接続確認

本記事ではサーバー(本店)側のWireGuard IPアドレスは「10.0.1.1」であり、クライアント(支店)側のWireGuard IPアドレスは「10.0.1.2」です。

サーバー側・クライアント側から通信相手のWireGuard IPアドレスでOpenWrtルーターの管理画面が表示されることを確認します。

本店・支店ネットワークでの接続確認

WireGuard IPアドレスでピア(通信相手)のOpenWrtルーターまでは通信できることが確認できましたが、拠点間VPNにおいて通常利用ではこのWireGuard IPアドレスは使用しません。

通常の利用ではいつも使っている「本店ネットワークのIPアドレス」「支店ネットワークのIPアドレス」で利用できなければ拠点間接続の意味がありません。

ここからは、「本店から支店ネットワークを利用する」「支店から本店ネットワークを利用する」を検証していきます。

支店から本店のサーバーへ接続

我が家の本店ではオープンソースの「OpenMediaVault」によるファイルサーバー(NAS)を運用しています。

本店のOpenWrtルーター192.168.13.1
ファイルサーバー(NAS)
OpenMediaVault
192.168.13.12

では、支店ルーター側のPC(192.168.1.0/24)からこの「本店ネットワークのOpenMediaVault(NAS)へ接続」して動作確認してみます。

WireGuardで拠点間VPN接続

上記は支店ルーター配下のパソコン(192.168.1.0/24ネットワーク)から本店ルーター配下のファイルサーバー(192.168.13.12/24)へ接続した様子です。

以上のように、支店(クライアント)から本店(サーバー)へWireGuard接続し、本店ネットワークのファイルサーバー(OpenMediaVault)に接続することができました。

本店から支店のサーバーへ接続

支店ルーターのネットワーク(192.168.1.0/24)にオープンソース「TrueNAS Scale」によるファイルサーバー(NAS)を接続してみました。

本店ルーター側のPCからこの「支店ネットワークのTrueNAS Scale(NAS)へ接続」して動作確認してみます。

支店のOpenWrtルーター192.168.1.1
ファイルサーバー(NAS)
TrueNAS Scale
192.168.1.40

では、本店ルーター側のPC(192.168.13.0/24)からこの「支店ネットワークのTrueNAS Scale(NAS)へ接続」して動作確認してみます。

WireGuardで拠点間VPN接続

上記は本店ルーター配下のパソコン(192.168.13.0/24ネットワーク)から支店ルーター配下のファイルサーバー(192.168.1.40/24)へ接続した様子です。

以上のように、本店(サーバー)から支店(クライアント)へWireGuard接続し、支店ネットワークのファイルサーバー(TrueNAS Scale)に接続することができました。

つながらない!?

WireGuard IPアドレスではピア(通信相手)のOpenWrtルーター管理画面につながるのに、いつものIPアドレスだとつながらない、という場合はOpenWrtルーターの経路情報を確認してみてください。

メニュー「ステータス > ルーティング」から「アクティブなIPv4ルーティング」を確認します。

WireGuardで拠点間VPN接続

上記は本店ルーターでの「アクティブなIPv4ルーティング」情報です。

「wg0」は本記事で作成したWireGuardインターフェースであり、本店ルーターではWireGuardネットワーク(10.0.1.0/24)と支店ネットワーク(192.168.1.0/24)が「wg0」インターフェースへルーティングされています。

また、下図は支店ルーターでの「アクティブなIPv4ルーティング」情報です。

WireGuardで拠点間VPN接続

支店ルーターではWireGuardネットワーク(10.0.1.0/24)と本店ネットワーク(192.168.13.0/24)が「wg0」インターフェースへルーティングされています。

つまり、ピア(通信相手)のネットワークセグメントがルーティングされていなければ本店・支店間での通信はできません。

この状態が正しくない場合には、本店・支店ルーターのピア設定を見直してください。

下図は本店ルーターのピア設定です。

WireGuardで拠点間VPN接続

ピア(通信相手)の定義画面の以下の部分がルーティング定義に影響を与える要素です。

許可されたIPクライアント(支店ルーター)のWireGuardIPアドレス
※本記事の環境では”10.0.1.2/24″
クライアント(支店)のネットワークセグメント
※本記事の環境では”192.168.1.0/24″
許可されたIPのルートチェックする

本店・支店の各ルーターの「ピアの設定」で上記が正しく設定されていれば、「アクティブなIPv4ルーティング」にルーティング情報が反映されます。

まとめ

以上のように、2台のOpenWrtルーターを使ってWireGuardによる拠点間VPN接続環境を構築し、動作確認を行ってきました。

拠点間VPNはルーター同士をWireGuardネットワークで接続するだけで、それぞれのルーター配下のネットワーク同士もつながる、というのがポイントです。

サーバーやネットワーク機器の置き場所を意識することなく、複数拠点からサーバー・ネットワーク機器を利用することができるようになります。

2か所以上の拠点間接続もできる

本記事では「本店と支店」を想定した二か所の拠点間接続を説明してきました。

WireGuardではさらに多くの拠点と拠点間接続の環境を構築することができます。

WireGuardはいわゆるクライアント/サーバー型のVPNではないため(Peer-to-Peer型)、拠点の数が増えることでサーバーの通信負荷が高くなる、という問題もありません。

拠点を増やすのは本記事で紹介している「ピアの設定」を拠点に応じて増やしていくだけです。

ファイルサーバー(NAS)の遠隔地バックアップ

QNAPやSynologyといった高性能なNASの登場により、本店で「プライベートクラウド」などとして運用されている方も多くなってきたようです。

WireGuardによる拠点間VPN接続を使えば本店と支店のNASをどちらも使えたり、自動的に同期をとったり(バックアップ運用)できます。

また、地震・災害などへの対応として、遠隔地の親戚宅などと拠点間接続することで、大切なデータの遠隔地バックアップとなる仕組みとしても使うことができます。

WOL(Wake On LAN)と合わせて使う

ネットワークがつながっても実際に使いたいときにピアのサーバーの電源が落ちていた・・・という場合もあります。

こんなときはお手上げですが、Wake On LANと組み合わせて使えば遠隔地からでもサーバーの電源を入れることができます。

OpenWrtではWOL(Wake On LAN)のモジュールが提供されているのでピアのOpenWrtルーターにログイン後、OpenWrtルーターのWOL機能によりピアのサーバーの電源を投入する仕組みを作ることができます。

詳しくは以下の記事にて説明しています。

タイトルとURLをコピーしました