0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WireGuard VPN を、管理画面( wg-easy )付きで建てる

Last updated at Posted at 2025-06-10

はじめに

この記事を読む前に下記を確認した方がいいかもしれません。
なお OCI だと無料で試せるので OCI を使用しています。

Docker を使わずに WireGuard だけを建てるには(フロントエンドなし)

OCI で IPv6 対応インスタンスを建てるには

フロントエンド wg-easy Ver.15

WireGuard VPN サーバーを、フロントエンド付きで建てる方法です。
wg-easy の特徴

  • 設定ファイルを簡単に量産できる
  • QRコードを発行できる
    • Android / iOS 用の WireGuard も簡単に設定できる
  • その他の設定もすべて GUI 上で変更できる

使用した環境

  • Enterprise Linux ( RHEL, CentOS, Rocky Linux, Alma Linux, Oracle Linux ) 9.5
  • Docker Compose
  • wg-easy Ver.15
    • WireGuard を含む
    • Ver.15 ではUIや内部構造が刷新
      • IPv6 完全対応
      • 過去のバージョンとの互換性はない
      • 過去のバージョンが良い人は Ver.13 を使うといいです

導入

1. Docker コンテナを建てる

Docker が入っていない場合はコチラ(クリック)

1-0. Docker をインストール

# dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# systemctl enable --now docker

1-1. ディレクトリを作る

# mkdir -p /etc/docker/containers/wg-easy_wg0

複数建てることを考慮して"_wg0"を付けています。付けなくてもいいです。

1-2. ディレクトリへ移動する

# cd /etc/docker/containers/wg-easy_wg0

1-3. Docker Compose ファイルをダウンロードする

# curl -OL https://raw.githubusercontent.com/wg-easy/wg-easy/master/docker-compose.yml

1-4. docker-compose.yml を確認&編集する

docker-compose.yml
volumes:
  wg-easy_wg0: # ボリューム名(※)(★)

services:
  wg-easy:
+   environment:
+     - INSECURE=ture # httpでのアクセスを許可(公式はHTTPSリバースプロキシを推奨)
    image: ghcr.io/wg-easy/wg-easy:15
    container_name: wg-easy_wg0 # コンテナ名(※)
    networks:
      wg:
        ipv4_address: 10.42.42.42 # Docker コンテナのネットワーク(※)(*)
        ipv6_address: fdcc:ad94:bacf:61a3::2a # Docker コンテナのネットワーク(※)(*)
    volumes:
      - wg-easy_wg0:/etc/wireguard # マッピングするボリューム名(※)左辺を★と合わせる
      - /lib/modules:/lib/modules:ro
    ports:
      - "51820:51820/udp" # VPN ポートのマッピング(※)
      - "51821:51821/tcp" # GUI 管理画面ポートのマッピング(※)
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv6.conf.all.disable_ipv6=0
      - net.ipv6.conf.all.forwarding=1
      - net.ipv6.conf.default.forwarding=1

networks:
  wg:
+   external: true # 既存の(自分で作った)ネットワークを使うことを明示
+   name: wg0 # ネットワーク名(※)
    driver: bridge
    enable_ipv6: true
-   ipam:
-     driver: default
-     config:
-       - subnet: 10.42.42.0/24
-       - subnet: fdcc:ad94:bacf:61a3::/64

IPAMに任せて Docker ネットワークを作るとネットワーク名が起動する度にランダムに変わるので、この表記を消して自分で作ります。一つのホストマシンで2つ以上建てる場合は(※)項目が重複しないように変更します。

1-5. Docker ネットワークを作る(名前を固定するために必要)

# docker network create \
  --driver=bridge \
  --subnet=10.42.42.0/24 \
  --ipv6 \
  --subnet=fdcc:ad94:bacf:61a3::/64 \
  --opt com.docker.network.bridge.name=wg0 \
  wg0

ここではネットワーク名を wg0 としています。
docker-compose.yml の(*)項目と一致するように作ります。

既に同名のネットワークが存在していて削除する場合はコチラ(クリック)

1-5-1. ネットワークを確認する

# docker network ls

1-5-2. ネットワークを削除する

# docker network rm wg0

1-6. 起動する

# docker compose up -d

Docker Compose は docker-compose.yml がある場所でこのコマンドを使って起動します。

停止コマンドと再起動コマンドはコチラ(クリック)

1-6-1. その他のコマンド

停止

# docker compose down

再起動

# docker compose restart

2. ネットワークの設定

2-1. 概要

[WireGuard クライアント]        [WireGuard サーバー (wg-easy)]        [外部ネットワーク]
        10.8.0.x  <---->     10.8.0.1 (仮想) | 10.42.42.42 (実IP) ----> Internet
                             ↑仮想IF wg0       ↑Dockerブリッジネットワーク

ネットワークはこの様になっています。仮想 IF の CIDR のデフォルトは 10.8.0.0/10 ですが、管理画面で変更できます。

2-2. WAF

環境に応じてポートを開放します。

  • 51820/UDP
    • VPN 通信用
  • 51821/TPC
    • wg-easy フロントエンド用(GUI設定画面用)
      • 見知らぬ人がアクセスできないよう、適切に設定してください

2-3. フォワーディングを有効にする

/etc/sysctl.d/99-sysctl.conf
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1

2-4. 設定を反映させる

# sysctl -p /etc/sysctl.d/

2-5. Firewalld を設定する

# firewall-cmd --permanent --add-port=51820/udp
# firewall-cmd --permanent --zone=public --add-masquerade
# firewall-cmd --permanent --zone=trusted --add-interface=wg0
# firewall-cmd --permanent --zone=trusted --add-forward

上から

  • ポート開放
  • NAT(IPマスカレード)を有効にする
  • wg0 を trusted ゾーンに(IF名は自信で設定したものに読み替えてください)
  • trusted ゾーンからの forward を許可
firewall-cmd command not found (見つからない)と言われた場合はコチラ(クリック)

2-5-1. Firewalld をインストール

# dnf install firewalld -y
# systemctl enable --now firewalld

最小構成の Enterprise Linux(Rocky Linux など)だと入っていない場合があるので導入して立ち上げます。

2-6. firewalld を再読み込み

# firewall-cmd --reload

使ってみる

ブラウザから http://IPアドレス:51821/ へアクセスして管理者登録を済ませます。

image.png

VPN (仮想 IF )の CIDR を変更したい
  • 管理画面の右上メニュー -> Admin Panel -> Interface -> Change CIDR ボタン
    • Hooks の中に Firewall の設定が含まれるため、変更後は必ず Restert Instance をクリックすること
    • 昔は yml ファイルの中で指定していたが、 Ver.15 では無効
Client の AllowedIPs を変更したい
  • 管理画面の右上メニュー -> Admin Panel -> Config

その他の設定も、だいたい Admin Panel の中にあります。

Docker コンテナの初期化

docker-compose.yml に大きな変更を加えるなどしてやり直す場合は、次の手順で一度コンテナを削除します。

ボリューム名の確認
# docker volume ls
ボリューム削除
# docker volume rm ボリューム名

docker-compose.yml を再編集して建て直すときには、このコマンドで既存のコンテナを削除します。

参考

wg-easy Ver.15 公式マニュアル

0
2
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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?