dockerで超簡単WireGuard構築!WG-Easyで簡単サーバー構築!超簡単ユーザー管理!

スポンサーリンク
proxmox 02 Proxmox
本記事はPRによる消費税込みの価格表示です

ProxmoxはLinuxのKVMを使って簡単に高機能な仮想マシン(VM)環境を構築できます。

さらに、軽量コンテナ環境であるLXC(Linuxコンテナ)も同じインターフェース上で管理することができます。

このLXCコンテナ、同じコンテナであるDockerと比較するとDockerが「アプリコンテナ」と言われているのに対し、LXCは「OSコンテナ」と言われるほど、どちらかといえば軽量な仮想マシン(VM)的な使い方ができる点が特徴です。

そしてこの「軽量な仮想マシン(VM)的な使い方」により、LXCコンテナ内にDockerを導入して(ネスティング)動かすこともできます。

本記事ではLXCコンテナのネスティング機能によりDockerを導入し、DockerコンテナとしてWireGuardおよびダイナミックDNS環境を構築していきます。

ProxmoxとLXCコンテナ

Proxmoxとは?

ProxmoxとはDebianベースの仮想システムであり、KVMによる仮想マシン(VM)の構築・管理が行えます。

2024年になってVMWare社がライセンス体系を大きく変更したことで無償版のESXiが提供されなくなりました。

ProxmoxはすでにESXiと人気を二分する仮想サーバー環境でしたが、現在はその(ESXi)代替ホームサーバーとして非常に利用者が増えているようです。

LXCコンテナとは?

ProxmoxはKVMによる仮想マシン(VM)の構築・管理ができると同時に、LXC(Linuxコンテナ)によるコンテナ機能も利用することができます。

LXCはDockerと同じでコンテナという仕組みに分類されますが、Dockerが「アプリコンテナ」と言われるのに対しLXCは「OSコンテナ」と言われます。

LXCの使い方としては「超軽量のLinuxサーバーをあっという間に構築できる」というイメージです。

仮想マシン(VM)を構築してもいいんだけど、簡単に試したい・サクッと環境構築したい、リソース(CPU/メモリ)をあまり使いたくない、という使い方の場合に最適な仕組みがLXCコンテナです。

LXCコンテナでdockerを動かす

LXCコンテナを使えばサクッとDebianなどのLinux環境を構築することができます。

LXCコンテナによるLinux環境は構築(インストール)もテンプレートベースの簡単インストールだし、リソース(CPU/メモリ)も非常に小さな環境で動作します。

そして、LXCコンテナでLinux環境を構築すればその中にDockerをインストールすることができます。

LXcコンテナにDockerがインストールできれば、(当然ながら)星の数ほど公開されているDockerイメージをインストールしてアプリケーションを簡単に利用することができるようになります。

Proxmoxの使いやすい環境を利用してDockerアプリを使いたい、という場合にはProxmoxの仮想マシン(VM)またはLXCコンテナでDockerサーバーを構築する、というのは有効な手段です。

Proxmox環境でWireGuard VPN環境を構築

本記事の目標は自宅WireGuardサーバーの構築です。

いつでも外出先(インターネット側)から自宅へWireGuardによるVPN接続ができる環境の構築です。

このWireGuardによる自宅VPN環境を「Proxmox & LXC & dockerで構築してみよう」というのが本記事の内容になります。

この目標を達成するための仕組みと構築手順について説明します。

WireGuard環境で必要なもの

WireGuardサーバー機能

本記事ではWireGuardのサーバー(待ち受け)側機能として「WG-Easy」というDockerコンテナイメージを利用します。

DockerコンテナをインストールするだけでWireGuardのサーバー(待ち受け)側環境が一発構築できます。

さらに、WireGuardでちょっと面倒なピア(接続相手)側の接続管理(IPアドレス/WireGuard秘密鍵・公開鍵)の管理もウェブUIでできる優れものです。

ダイナミックDNSの管理機能

本記事では自宅へ接続する場合の名前解決としてフリー(無料)のダイナミックDNSサービスである「DDNS Now」を利用させていただきました。

そして、「DDNS Now」への定期的な最新IPアドレスの登録・更新するためのダイナミックDNSクライアントとして「DDNS-Updater」を利用します。

「DDNS-Updater」は多くの有料・無料のダイナミックDNSサービスに対応しているので、サービスごとの定型設定を行うことで簡単にIPアドレスの登録・更新ができます。

そして、標準対応していないダイナミックDNSサービスであっても「カスタム(Custom)」機能により対応可能です。

今回利用した「DDNS Now」は「DDNS-Updater」の標準対応ダイナミックDNSではないので、この「カスタム(Custom)」機能を使って環境構築していきます。

自宅ルーターのポート転送機能

外部(インターネット側)から自宅のWireGuardサーバーへ接続するためには、自宅ルーターにポート転送機能が必要です。

本記事では自宅ルーターとしてOpenWrtルーターおよびバッファローの「WXR-6000AX12S」を前提とし、ポート転送設定を行っていきます。

なお、比較的安価な初心者向け(?)ルーターにはポート転送機能のないルーターも存在します。

このようなポート転送機能のないルーターの場合には外部(インターネット側)から自宅サーバー(WireGuardサーバー)への接続はできません。

WireGuardのDockerコンテナ「WG-Easy」

WG-Easy

WireGuardの機能をDockerイメージとして配布されているのが「WG-Easy」です。

WG-EasyをDockerコンテナとしてインストールすることでDockerのサーバー側(待ち受け側)環境が一発で構築されるのはもちろんのこと、面倒なクライアント側(接続する側)のIPアドレス管理や鍵管理を専用のウェブインターフェースで管理することができる、というパッケージになります。

WireGuardは環境構築が簡単なのですが、接続相手(ピア)が増えてくるとその接続相手ごとのIPアドレス管理や鍵管理がちょっと面倒です。

WG-Easyを使えばその面倒なIPアドレス管理・鍵管理もWG-Easyが勝手にやってくれます。

本記事ではサーバー側(待ち受け側)の環境構築およびピア(接続相手)の管理の仕組みとして「WG-Easy」を利用します。

WG-Easyの特徴

  • DockerコンテナでWireGuardサーバー環境(待ち受け側)を構築できる
  • ピア(接続相手)の定義ファイルを自動生成してくれる
  • もちろんピアのIPアドレス・鍵も管理してくれる
  • ピアの追加・削除も自由、一時停止も可能
  • TrueNASやQNAP/SynologyなどのNASシステムでも利用可能

ダイナミックDNSコンテナ「DDNS-Updater」

外部(インターネット側)から自宅のWireGuard(WG-Easy)へ接続するためには(一般的に)ダイナミックDNSによる名前解決の仕組みが必要です。

多くの市販ルーターには有料・無料のダイナミックDNSサービスが添付されています。

また、「no-IP」などのような無料で提供されているダイナミックDNSサービスもたくさんあります。

これらダイナミックDNSに対して定期的に最新の自宅IPアドレスを登録・更新してくれる仕組みがダイナミックDNSクライアントであり、この機能をDockerイメージとして提供しているのが「DDNS-Updater」です。

本記事ではダイナミックDNSサービスとして「DDNS Now」を利用させていただき、「DDNS Now」への定期的なIPアドレス更新の仕組みとして「DDNS-Updater」を利用します。

DDNS-Updaterの特徴

  • DockerコンテナでダイナミックDNSクライアント環境を構築できる
  • 非常にたくさんのダイナミックDNSサービスに対応
  • 標準対応していないDDNSサービスも「カスタム(Custom)」登録ができる
  • TrueNASやQNAP/SynologyなどのNASシステムでも利用可能

STEP⓪ Proxmoxのインストール

まず最初にProxmoxをインストールして仮想サーバー環境を構築する必要があります。

本記事ではここから(Proxmox環境構築)の手順を説明してしまうと非常に長文記事となってしまいます

当サイトでは手のひらサイズのミニPC「HUNSN RJ03」にProxmoxをインストールして仮想サーバーとする記事を公開しています。

Proxmoxのインストール手順についてはこちらの記事を参考にしてください。

STEP① ProxmoxのLXCコンテナへDebianをインストール

では、仮想サーバーProxmox環境へLXCコンテナとして「Debian-12-Standard」をインストールします。

Docerがアプリケーションコンテナと言われているのに対し、LXCコンテナはOSコンテナとも言われます。

LXCコンテナは仮想マシン(VM)とほぼ同等のOS環境を非常に軽量なコンテナとして構築できます。

そして、Debian12(Bookworm)のLXCコンテナ版が「Debian-12-Standard」テンプレートとなります。

LXCコンテナのインストール

Proxmoxサーバー環境へ「Debian-12-Standard」をインストールしていきます。

Proxmoxは標準でLXCコンテナ環境に対応しており、さまざまなLXCテンプレートからLXCコンテナを構築することができます。

コンテナテンプレートの更新

まず、Proxmoxが対応しているLXCコンテナ環境で利用可能なLXCテンプレートのリストを最新化しておきましょう。

メニュー「ノード(自分のサーバー)⇒シェル」からテンプレートのアップデートコマンドを発行しておきます。

proxmoxのLXCコンテナでtailscale環境構築

以下のような実行結果となります。

root@sbpve01:~# pveam update
update successful
root@sbpve01:~#

以上でProxmoxのLXCコンテナテンプレートリストは最新化されます。

LXCコンテナテンプレートのダウンロード

メニュー「ストレージ(local)⇒CTテンプレート」から「テンプレート」ボタンを押下します。

proxmoxのLXCコンテナでtailscale環境構築

Proxmoxで利用可能なLXCコンテナテンプレートの一覧が表示されます。

検索欄に「debian」を入力すると、一覧が絞り込まれて「Debian 12 Bookworm(standard)」が表示されます。

Proxmox LXCコンテナ

種別 パッケージ 説明
lxc Debian-12-standard Debian 12 Bookworm(standard)

上記「debian-12-standard」を選択して「ダウンロード」ボタンを押下します。

Proxmox LXCコンテナ

「TASK OK」のメッセージが出たらダウンロード処理が終了しています。

ダウンロードが終了したら画面右上の「×」をクリックしてダウンロード画面を閉じます。

Proxmox LXCコンテナ

テンプレートの一覧画面に今ダウンロードしたテンプレートが登録されています。

LXCコンテナのインストール

ダウンロードしたテンプレートを使って「debian-12-standard」をインストールしていきます。

ProxmoxでのLXCコンテナインストールはウィザード形式で行っていきます。

画面上部(右上)から「CTを作成」を押下します。

Proxmox LXCコンテナ

全般:コンテナウィザード①

コンテナ作成ウィザードの「全般」タブが表示されます。
dockerでWireGuard環境構築

以下のように入力してください。

ノード 初期値のまま
CT ID 初期値のままでよい
※またはお好きなID
ホスト名 構築するコンテナのホスト名を指定
※本記事では”v-docker”
非特権コンテナ チェック
ネスト チェック
リソースプール 未指定
パスワード コンテナへログインするときのパスワード
パスワードの確認 パスワードと同じものを入力
ssh Public Key 未指定

入力したら「次へ」。

テンプレート選択:コンテナウィザード②

「テンプレート」タブが表示されます。

Proxmox LXCコンテナ

先ほどダウンロードした「debian-12-standard」を選択してください。

ディスク:コンテナウィザード③

「ディスク」タブが表示されます。

proxmoxのLXCコンテナでtailscale環境構築

ディスクを作成するストレージを選択し、「次へ」。

CPU:コンテナウィザード④

「CPU」タブ画面が表示されます。

proxmoxのLXCコンテナでtailscale環境構築

CPUスペックを設定します。

後から変更できるので、ここでは「1 Core」として設定します。

メモリ:コンテナウィザード⑤

「メモリー」タブ画面が表示されます。

proxmoxのLXCコンテナでtailscale環境構築

メモリーも後から変更可能なので、ここでは「512 MB」と設定します。

※もっと小さく「128 MB」でもよかったです・・・

ネットワーク:コンテナウィザード⑥

「ネットワーク」タブ画面が表示されるので、LXCコンテナのネットワーク設定(IPアドレス)を行います。

dockerでWireGuard環境構築

我が家の自宅ネットワークは「192.168.11.0/24」としており、今回のdockerサーバー(debian-12-standard)のIPv4アドレスは「192.168.11.4/24」と設定しました。

また、IPv6アドレスは利用しません。

本記事では以下のように設定しました。

IPv4
アドレス
IPv4 「静的」をチェック
IPv4/CIDR LXCコンテナのIPv4アドレスを設定
※本記事では「192.168.11.4/24」
ゲートウェイ
(IPv4)
自宅ネットワークのゲートウェイを設定
※本記事では「192.168.11.1/24」
IPv6
アドレス
IPv6 「静的」をチェック
IPv6/CIDR IPv6アドレスは使用しないので空白のまま
ゲートウェイ
(IPv6)
IPv6アドレスは使用しないので空白のまま

なお、IPv4アドレス(IPv4/CIDR)をDHCPとして設定することも可能ですが、DHCPからIPv4アドレスを取得する設定の場合はLXCコンテナ起動時にかなり時間がかかります。

よって、「DHCP」を選択しない方が良いです。

DNS:コンテナウィザード⑦

「DNS」タブ画面が表示されます。

proxmoxのLXCコンテナでtailscale環境構築

初期値のままで「次へ」。

確認:コンテナウィザード⑧

「確認」タブ画面が表示されます。

Proxmox LXCコンテナ

設定した内容を確認し「完了」ボタンを押下。

Proxmox LXCコンテナ

しばらくコンテナ作成のタスクが実行されます。

「TASK OK」が表示されたらコンテナ作成完了です。

LXCコンテナの起動と初期設定

メニュー「データセンター⇒LXCコンテナ」に今作成したコンテナが一覧表示されています。

では、このコンテナを起動してみます。

サブメニュー「コンソール」を選んで画面上の「開始」ボタンを押下すると、コンソール画面上でコンテナが起動します。

proxmoxのLXCコンテナでtailscale環境構築

rootユーザーでログインします。パスワードはコンテナ作成時に「全般」タブで設定したパスワードです。

Proxmox LXCコンテナ

モジュールの最新化

ログインしたら、最初にDebianのモジュールを最新化しておきましょう。

### Debianを最新化 ###
apt update && apt -y upgrade

以上でDebian(debian-12-standard)のモジュールが最新化されます。

タイムゾーン(Asia/Tokyo)の設定

インストール直後のLXCはタイムゾーンが世界標準時となっています。

これを「Asia/Tokyo」へと変更設定しておきます。

### TimeZoneを"Asia/Tokyo"へ設定 ###
timedatectl set-timezone Asia/Tokyo

以上でタイムゾーンが「Asia/Tokyo」になります。

引き続き、作成したLXCコンテナ(Debian)へDockerモジュールをインストールしていきます。

LXCコンテナへDockerをインストール

「LXCコンテナでDockerコンテナを動かす」と言うと「1つのDockerコンテナを1つのLXCコンテナで動かす」というイメージになりますが、そうではありません。

LXCコンテナを使ってLinuxサーバーを構築、そのLinuxサーバー(LXCコンテナ)の中にDockerをインストールし、あとはお好きなDockerコンテナを使っていく、という使い方になります。

つまりDockerを動かすサーバーを仮想マシン(VM)として使うかLXCコンテナで使うか、という違いになります。

Debian(LXCコンテナ)へのDockerのインストールは超簡単です。

以下のコマンドをコピペすることで、一発インストールです。

### curlをインストール ###
apt install -y curl

### dockerインストールスクリプトを実行 ###
curl fsSL https://get.docker.com | sh

以上でLXCコンテナを使ってのDockerサーバーが構築完了です。

STEP② Portainer-ce(Dockerイメージ)をインストール

Portainer-ceはオプション(任意)です

Dockerコンテナの起動状態を確認したり停止・再起動などの操作を行うためにPortainer-ceをインストールしておきます。

Dockerコンテナの各種操作をコマンドでできる人は不要ですが、ブラウザで確認・操作したい、という場合にはインストールしておくと便利です。

Simple Docker Management System | Portainer

Portainer-ceのDockerイメージをインストール

Portainer-ceはDockerイメージとして配布されているので、簡単にインストールすることができます。

以下の「docker run」コマンドをコピペするだけで、portainer-ceのDockerイメージをインストールすることができます。

### Portainerをインストール ###
docker run -d \
--name portainer \
-p 9000:9000 \
-p 9443:9443 \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce

インストール後は「http://:9000」または「https://:9443」でPortainer-ce管理画面へアクセスすることができます。

インストール後に初めてアクセスする場合には管理者「admin」に対するパスワード設定が必要ですが、初期値ではパスワードは「12桁以上の英数字」となっています。
※パスワードポリシーは変更可能です。

STEP③ DDNS-Updater(Dockerイメージ)をインストール

DDNS-Updaterはオプション(任意)です

外出先(インターネット側)から自宅への接続はIPv4アドレスではなくドメイン名で接続できると便利です。

すでにダイナミックDNS環境が構築されている場合はそのダイナミックDNSで提供されるドメイン名で良いです。

ダイナミックDNS環境が構築されていない場合には、DDNS-Updater(Dockerイメージ)を使ってダイナミックDNS環境を構築していきます。

Lightweight universal DDNS Updater program | Github

DDNS-Updaterコンフィグファイルの作成

本記事では「/root/updater/data/config.json」として定義ファイル(config.json)を作成していきます。

## カレントディレクトリへ移動と確認
root@v-docker:~# cd
root@v-docker:~# pwd
/root
## DATAディレクトリの作成
root@v-docker:~# mkdir updater
root@v-docker:~# cd updater
root@v-docker:~# mkdir data
root@v-docker:~# chown 1000 data
root@v-docker:~# chmod u+r+w+x data
## config.jsonの作成
root@v-docker:~# touch data/config.json
root@v-docker:~# vi data/config.json

上記手順で作成したコンフィグファイル「config.json」にダイナミックDNSクライアントとしての機能を定義していきます。

標準対応のダイナミックDNS設定

DDNS-Updaterは標準で非常にたくさんのダイナミックDNSサービスに対応しています。

標準対応のダイナミックDNSサービスは以下のリンクから確認することができます。

DDNS-Updater Configuration | Github

そして、標準対応のダイナミックDNSサービスについては、個別に「config.json」の定義内容が具体的に説明されています。

標準対応のダイナミックDNSサービスをご利用の場合には、上記を参考に「config.json」を定義してください。

非標準対応のダイナミックDNS設定(DDNS Now)

DDNS-Updaterは標準対応以外のダイナミックDNSサービスを利用することもできます。

この場合、”Provider”として”custom”を選択指定することで、任意のダイナミックDNSサービスの利用定義を行います。

Custom Provider | Github

本記事で利用するダイナミックDNSサービス「DDNS Now」はその利用方法について以下の記載があります。

IPv4アドレスのアクセス元アドレスでAレコードを更新
“https://f5.si/update.php?domain=ユーザ名&password=パスワードもしくはAPIトークン”

つまり、上記のブラウザインターフェースアクセスにより、アクセス元回線のIPアドレスが登録・更新される、という仕組みです。

また、IPアドレスの登録・更新の結果として、正常に登録・更新された場合には以下のテキストレスポンスが返る、ということです。

レスポンス(テキスト)
OK:SUCCESS
正常に処理完了

この情報をもとに「DDNS Now」の”custom”設定は以下のようになります。

{
  "settings": [
    {
      "provider":      "custom",
      "domain":        "mydomain.f5.si",
      "url":           "https://f5.si/update.php?domain=mydomain&password=mypassword",
      "ipv4key":       "ipv4",
      "ipv6key":       "ipv6",
      "success_regex": "OK:SUCCESS",
      "ip_version":    "ipv4",
      "ipv6_suffix":   ""
    }
  ]
}

これをコンフィグファイル「/root/updater/data/config.json」へ登録します。

provider 個別定義の”custom”と定義
domain ご利用のドメイン名を定義
※”mydomain”部分が登録部分です
url “DDNS Now”へのIPアドレス更新URLを定義
※”mydomain”と”mypassword”をご利用のものに変更
ipv4key “ipv4″と定義
ipv6key “ipv6″と定義
success_regex IPアドレス更新成功時のレスポンステキストを定義
ip_version IPアドレス更新するIPバージョンを定義
※我が家はIPv4のみなので”ipv4″と定義
ipv6_suffix IPv6Suffixを定義
※IPv6使用しないので””(空文字)定義

以上で「DDNS Now」対応のコンフィグファイル作成が完了です。

DDNS-UpdaterのDockerイメージをインストール

では、DDNS-UpdaterのDockerイメージをインストールします。

DDNS-UpdaterのDockerイメージは以下のコマンドのコピペでインストールすることができます。

### DDNS-Updaterをインストール ###
docker run -d \
--name=ddns-updater \
-p 8000:8000/tcp \
-v /root/updater/data:/updater/data \
--restart unless-stopped \
qmcgaw/ddns-updater

注意点は「-v /root/updater/data:/updater/data」部分であり、コンフィグファイル「config.json」を配置しているディレクトリを正しく指定してください。

STEP④ WG-Easy(Dockerイメージ)をインストール

WireGuardのサーバー(待ち受け)側機能をDockerイメージでインストールしていきます。

利用するDockerイメージは「WG-Easy」です。

WG-EasyはWireGuardサーバー機能の一発構築だけでなく、ピア(接続相手)の管理もウェブ管理画面でできる機能もあり、非常に便利なDockerイメージです。

WG-Easy | Github

WG-EasyのDockerイメージをインストール

WG-EasyはDockerイメージとしてのみ提供されています。

WG-EasyのDockerイメージは以下のコマンドを変更してインストールします。

### WG-Easyをインストール ###
docker run -d \
--name=wg-easy \
-e LANG=en \
-e PASSWORD=YOUR_PASSWORD \
-e PORT=51821 \
-e WG_HOST=YOUR_DOMAIN \
-e WG_PORT=51820 \
-e WG_PERSISTENT_KEEPALIVE=25 \
-e WG_DEFAULT_ADDRESS=10.9.0.x \
-v ~/.wg-easy:/etc/wireguard \
-p 51820:51820/udp \
-p 51821:51821/tcp \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--sysctl="net.ipv4.ip_forward=1" \
--restart unless-stopped \
ghcr.io/wg-easy/wg-easy

代表的なパラメーターは以下を参考にして環境に合わせて変更してください。

LANG=en 管理画面(WebUI)の言語を指定します。
※”en”=英語です
※日本語はありません
PASSWORD=password 管理画面(WebUI)へのログイン時パスワードを指定します。
※指定しない場合はパスワードなしでログイン
PORT=51821 管理画面(WebUI)のポート番号を指定します。
WG_HOST=yourdomain.com ダイナミックDNSによるドメイン名を指定します。
※本記事では〇〇〇.f5.si
WG_PORT=51820 WireGuardの待ち受けポートを指定します。
※WireGuard推奨値=51820
WG_DEFAULT_ADDRESS=10.8.0.x WireGuardネットワークのIPアドレス範囲を指定します。
※初期値は10.8.0.0/24
WG_PERSISTENT_KEEPALIVE=25 WireGuard(クライアント側)のKEEP_ALIVE時間(秒)を指定します。
※WireGuardの推奨値は25(秒)

なお、WG-Easyの全パラメーターについての説明は以下のリンクにて確認することができます。

WG-Easy | Github

STEP⑤ ルーターの設定/ポート転送設定

外部(インターネット側)から自宅ネットワークへVPN接続する場合、自宅ルーターにポート転送の設定が必要です。

つまり、外部から自宅ルーターへWireGuardによる接続要求があった場合にはその通信を今回構築したWG-EasyのDockerコンテナへ転送するための設定になります。

この設定は自宅ルーターに対して行います。

OpenWrtルーターでのポート転送設定

我が家で使っているルーター「OpenWrtルーター」でのポート転送設定を行います。

管理メニュー「ネットワーク > ファイアウォール」画面から「ポートフォワーディング」タブ画面を開きます。

dockerでWireGuard環境構築

「追加」ボタンから新規のポート転送(ポートフォワーディング)設定を行っていきます。

dockerでWireGuard環境構築

以下の内容で設定します。

名前 ご自由に
※本記事では”UDP51820″と設定
プロトコル “UDP”を選択設定
※”TCP”のチェックを外す
外部ポート “51820”を設定
※WG-Easyに設定したWireGuardの待ち受けポート
内部IPアドレス “192.168.11.4/24″を選択設定
※v-docker(LXCコンテナ)のIPアドレスを設定
内部ポート “51820”を設定
※WG-Easyに設定したWireGuardの待ち受けポート

設定後、「保存」ボタンで設定を保存します。

dockerでWireGuard環境構築

一覧画面で内容を確認し「保存&適用」ボタンを押下してシステム反映します。

以上でOpenWrtルーターでのポート転送(ポートフォアーディング)設定は完了です。

STEP⑥ WireGuardクライアント設定

WireGuardのクライアントアプリをインストールし、自宅ネットワークへWireGuardによるVPN接続を行ってみましょう。

WireGuardのクライアントアプリは以下のWireGuard公式サイトのリンクよりダウンロード・インストールします。

WireGuard Installation | WireGuardプロジェクト

WindowsPCからのWireGuard接続

WireGuardアプリのインストール

WireGuard設定ファイルの作成

dockerでWireGuard環境構築

dockerでWireGuard環境構築

dockerでWireGuard環境構築

dockerでWireGuard環境構築

通信許可 WireGuardの有効化(オン:右へスライド)/一時停止(オフ:左へスライド)
QRコード スマホ用クライアントアプリ用のQRコード表示
ダウンロード WireGuard定義ファイルのダウンロード
削除 WireGuard定義の削除

自動生成された(ダウンロードした)WireGuard定義ファイルの内容は以下のようになっています。

dockerでWireGuard環境構築

秘密鍵・公開鍵・事前共有鍵は自動生成してくれ、以下の内容になっています。

Interface(ピア/クライアント側)設定
PrivateKey クライアントの秘密鍵(自動生成)
Address クライアントのWireGuard IPアドレス
※WG-Easyの”WG_DEFAULT_ADDRESS”で変更可
DNS “1.1.1.1”CloudFlareのDNSを使用
※WG-Easyの”WG_DEFAULT_DNS”で変更可
Peer(ピア/サーバー側)設定
PublicKey サーバーの公開鍵(自動生成)
PresharedKey 事前共有鍵(自動生成)
AllowedIPs “0.0.0.0/0,::/0″が設定
※すべての通信がサーバー経由となる設定
※WG-Easyの”WG_ALLOWED_IPS”で変更可
PresistentKeepalive “25秒”に設定
※WG-Easyの”WG_PERSISTENT_KEEPALIVE”で変更可
Endpoint “〇〇〇.f5.si:51820″が設定
※WG-Easyの”WG_HOST”/”WG_PORT”で変更可

dockerでWireGuard環境構築

dockerでWireGuard環境構築

WireGuard接続

AndroidスマホからのWireGuard接続

WireGuardアプリのインストール

WireGuard設定ファイルの作成

WireGuard接続

まとめ、Proxmoxでdockerコンテナを使う

本記事では外出先からいつでも自宅ネットワークへ接続できるVPN環境を構築してきました。

VPN環境構築に必要となる「WireGuard(VPN)」「DDNS-Updater(DDNSクライアント)」「Portainer-ce(Docker管理)」の環境をすべてDockerコンテナで構築してみました。

アプリコンテナと言われるDockerを使えば必要な機能を簡単に一発インストールすることができ、その機能の組み合わせにより目的とする環境構築がとても簡単にできてしまいます。

WireGuard環境構築の優れもの「WG-Easy」

WireGuardはインストールも簡単だし接続も簡単で、まさに次世代VPNと呼ぶにふさわしいプロトコルです。

ただ、ピア(接続先)が増えてくると接続ごとに必要となるWireGuardネットワーク(IPアドレス)の管理や秘密鍵・公開鍵の管理などが面倒になってきます。

WG-EasyはDockerコンテナを導入するだけでWireGuardサーバー(接続待ち)側の環境が構築できるだけでなく、ピアごとの鍵管理などもやってくれる仕組みまでが含まれるDockerアプリです。

WireGuardを使って自宅ネットワークへの接続環境を構築するならWG-Easyは非常におすすめのアプリコンテナと言えます。

注意点!DockerによるVPNでは拠点間VPNは構築できない

WG-Easyを使うことでピア(接続相手)の管理もやってくれるWireGuard環境が構築できてとても便利です。

ただし、WG-EasyはDockerコンテナとしての提供のみであることからちょっと注意も必要です。

WG-Easyを使ってのWireGuard環境ではネットワークとネットワークを接続する拠点間VPNは構築できません。

拠点間VPNの場合には相手ネットワークへの静的ルーティングをデフォルトゲートウェイへ登録する必要があります。

これがDockerアプリ利用の場合には「IPアドレスとポート番号でルーティング」という必要があり、これは一般的な静的ルーティングでは実現できません。

よって、一般的にはDockerを使ってのVPN環境(WireGuard含む)では拠点間VPNの環境構築はできません。

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