# 5 分で VPN サーバーを構築! wg-easy の使い方

wg-easy は、WireGuard VPN サーバーの構築と管理を簡単にする Docker コンテナです。この記事では、Docker を使用して 5 分で VPN サーバーを構築する方法を解説します。

# この記事の対象読者

  • VPS サーバーを所有している方
  • Docker の基本的な使い方を理解している方
  • 簡単に VPN サーバーを構築したい方
  • WireGuard を使った VPN サーバーに興味がある方

# VPN とは

VPN(Virtual Private Network) は、仮想のプライベートネットワークを構築することで、よりセキュアな通信を確立できる技術です。

VPN サーバー は、セキュアな通信を暗号化・転送するためのサーバーで、クライアントとサーバー間の通信を暗号化して保護します。

# WireGuard とは

WireGuard は、モダンで高速な VPN プロトコルです。以下の特徴があります:

  • 高速: 最新の暗号化技術により、従来の VPN プロトコルより高速
  • 軽量: コードベースが小さく、リソース消費が少ない
  • セキュア: 最新の暗号化アルゴリズムを使用
  • シンプル: 設定が簡単で、管理が容易

# wg-easy とは

wg-easy は、WireGuard の設定と管理を簡素化する Web UI を提供する Docker コンテナです。以下の機能があります:

  • Web UI: ブラウザから簡単に設定・管理
  • QR コード生成: モバイルデバイスへの接続設定が簡単
  • クライアント管理: クライアントの追加・削除・有効化・無効化が簡単
  • 自動設定: 複雑な設定を自動化

注意事項

この記事は教育目的で提供されています。VPN サーバーの構築と利用は、利用する地域の法律と規制を遵守してください。違法な用途での使用は禁止されています。

# VPN を使うメリット

# セキュリティ

  • データの暗号化: パブリック Wi-Fi などの安全でないネットワークでも、データが暗号化されて保護される
  • 中間者攻撃の防止: 通信が暗号化されるため、中間者攻撃から保護される

# プライバシー

  • IP アドレスの隠蔽: 通信元のユーザーの IP アドレスが検知されにくくなる
  • トラッキングの回避: トラッキングやターゲット広告の追跡を回避できる
  • 匿名性の向上: インターネット上の活動をより匿名で行える

# 地域制限回避

  • コンテンツへのアクセス: 海外のサーバーを使用することで、地域特有の閲覧制限を回避できる
  • グローバルなサービス利用: 地域制限のあるサービスやコンテンツにアクセス可能

# その他のメリット

  • リモートアクセス: 自宅やオフィスのネットワークに安全にアクセス
  • 企業ネットワークへの接続: リモートワーク時に企業ネットワークに安全に接続

# 前提条件

  • OS: Ubuntu 18.04+ / Debian 10+ / CentOS 7+(Docker が動作する OS)
  • 権限: root ユーザーまたは sudo 権限
  • Docker: Docker がインストールされていること
  • ネットワーク: サーバーがインターネットに接続されていること
  • ポート: 使用するポートがファイアウォールで開放されていること

# インストール手順

# 1. Docker のインストール

Docker がインストールされていない場合、以下のコマンドでインストールします:

curl -sSL https://get.docker.com | sh
sudo usermod -aG docker $(whoami)

インストール後、ログアウトして再ログインするか、以下のコマンドでグループを反映します:

newgrp docker

# 2. Docker の動作確認

Docker が正しくインストールされたか確認します:

docker --version
docker ps

# 3. サーバーの IP アドレスを確認

VPN サーバーのパブリック IP アドレスを確認します:

curl -4 ifconfig.me
# または
hostname -I

# 4. パスワードハッシュの生成

Web UI の管理画面にログインするためのパスワードハッシュを生成します:

docker run -it ghcr.io/wg-easy/wg-easy wgpw YOUR_PASSWORD

出力例:

PASSWORD_HASH='$2b$12$coPqCsPtcFO.Ab99xylBNOW4.Iu7OOA2/ZIboHN6/oyxca3MWo7fW'

セキュリティの推奨事項

  • 強力なパスワードを使用(12 文字以上、英数字・記号を含む)
  • 生成されたハッシュ値を安全に保管
  • 定期的にパスワードを変更

# 5. wg-easy コンテナの起動

以下のコマンドで wg-easy コンテナを起動します。環境に合わせて値を変更してください:

docker run --detach \
  --name wg-easy \
  --env WG_HOST=YOUR_SERVER_IP \
  --env PASSWORD_HASH='YOUR_PASSWORD_HASH' \
  --env PORT=51821 \
  --env WG_PORT=51820 \
  --volume ~/.wg-easy:/etc/wireguard \
  --publish 51820:51820/udp \
  --publish 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

# 環境変数の説明

環境変数 説明
WG_HOST サーバーのパブリック IP アドレス 1.2.3.4
PASSWORD_HASH Web UI ログイン用のパスワードハッシュ $2b$12$...
PORT Web UI のポート番号 51821
WG_PORT WireGuard のポート番号 51820

重要な設定

  • WG_HOST: サーバーの実際のパブリック IP アドレスに変更してください
  • PASSWORD_HASH: 上記で生成したハッシュ値を使用してください
  • PORTWG_PORT: 使用可能なポート番号に変更してください(デフォルトの 51820/51821 が使用できない場合)

# 6. コンテナの状態確認

コンテナが正常に起動したか確認します:

docker ps

出力例:

CONTAINER ID   IMAGE                     COMMAND                  CREATED         STATUS                            PORTS                                                                                          NAMES
3cff4e63bdab   ghcr.io/wg-easy/wg-easy   "docker-entrypoint.s…"   6 seconds ago   Up 6 seconds (health: starting)   0.0.0.0:51820->51820/udp, :::51820->51820/udp, 0.0.0.0:51821->51821/tcp, :::51821->51821/tcp   wg-easy

コンテナのログを確認する場合:

docker logs wg-easy

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

サーバーのファイアウォールで必要なポートを開放します:

ufw を使用する場合(Debian/Ubuntu):

sudo ufw allow 51820/udp
sudo ufw allow 51821/tcp
sudo ufw reload

firewalld を使用する場合(CentOS/RHEL):

sudo firewall-cmd --permanent --add-port=51820/udp
sudo firewall-cmd --permanent --add-port=51821/tcp
sudo firewall-cmd --reload

iptables を使用する場合:

sudo iptables -A INPUT -p udp --dport 51820 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 51821 -j ACCEPT

# Web UI での管理

# アクセス方法

  1. ブラウザで http://YOUR_SERVER_IP:51821 にアクセス
  2. パスワードハッシュを生成する際に使用した元のパスワード(ハッシュ化する前のパスワード)でログイン

# クライアントの追加

  1. ログイン後、+ New ボタンをクリック
  2. クライアント名を入力(例: my-phone, laptop
  3. 作成されたクライアントの設定を確認

# クライアント設定の取得

各クライアントには以下の方法で設定を取得できます:

  • QR コード: モバイルデバイス用(WireGuard アプリでスキャン)
  • 設定ファイルのダウンロード: デスクトップ用(.conf ファイル)

# クライアントの管理

  • 有効化/無効化: クライアントを一時的に無効化可能
  • 削除: 不要なクライアントを削除
  • 統計情報: データ転送量を確認

# クライアント側の設定

# モバイルデバイス(iOS/Android)

  1. App Store または Google Play で「WireGuard」アプリをインストール
  2. Web UI で生成した QR コードをスキャン
  3. 接続を有効化

# デスクトップ(Windows/macOS/Linux)

  1. WireGuard 公式サイト (opens new window)からクライアントをインストール
  2. Web UI から設定ファイル(.conf)をダウンロード
  3. WireGuard クライアントに設定ファイルをインポート
  4. 接続を有効化

# セキュリティのベストプラクティス

# 1. 強力なパスワードの使用

  • Web UI のログインパスワードは 12 文字以上
  • 英数字・記号を含む複雑なパスワードを使用
  • 定期的にパスワードを変更

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

  • 必要なポートのみを開放
  • 不要なポートは閉じる
  • 可能であれば、特定の IP アドレスからのみアクセスを許可

# 3. 定期的な更新

Docker イメージを定期的に更新:

docker pull ghcr.io/wg-easy/wg-easy
docker stop wg-easy
docker rm wg-easy
# 上記の docker run コマンドを再実行

# 4. ログの監視

コンテナのログを定期的に確認:

docker logs wg-easy

# 5. HTTPS の使用(推奨)

本番環境では、リバースプロキシ(Nginx など)を使用して HTTPS を有効化することを推奨します。

# トラブルシューティング

# 接続できない場合

  1. コンテナの状態確認

    docker ps
    docker logs wg-easy
    
  2. ファイアウォールの確認

    sudo ufw status
    # または
    sudo firewall-cmd --list-ports
    
  3. ポートの確認

    netstat -tuln | grep 51820
    netstat -tuln | grep 51821
    
  4. IP 転送の有効化確認

    sysctl net.ipv4.ip_forward
    # 出力が 1 であることを確認
    

# Web UI にアクセスできない場合

  1. コンテナが起動しているか確認

    docker ps | grep wg-easy
    
  2. ポートが正しく公開されているか確認

    docker port wg-easy
    
  3. ログを確認

    docker logs wg-easy
    

# クライアントが接続できない場合

  1. サーバーの IP アドレスが正しいか確認

    • WG_HOST 環境変数が正しい IP アドレスに設定されているか
  2. ファイアウォールでポートが開放されているか確認

    • UDP ポート 51820 が開放されているか
  3. クライアント設定を再生成

    • Web UI でクライアントを削除して再作成

# コンテナの再起動

docker restart wg-easy

# コンテナの停止と削除

docker stop wg-easy
docker rm wg-easy

# まとめ

この記事では、wg-easy を使用して WireGuard VPN サーバーを 5 分で構築する方法を解説しました。

# 重要なポイント

  1. 簡単な構築: Docker を使用して簡単に構築可能
  2. Web UI: ブラウザから簡単に管理可能
  3. QR コード: モバイルデバイスへの接続が簡単
  4. セキュリティ: 強力なパスワードと適切なファイアウォール設定が重要

# 次のステップ

  • クライアントアプリケーションの設定
  • 定期的なセキュリティ更新
  • ログの監視と分析
  • HTTPS の有効化(リバースプロキシの設定)

# 参考リンク

免責事項

この記事の内容に基づいて実施した結果について、筆者は一切の責任を負いません。VPN サーバーの構築と利用は、利用する地域の法律と規制を遵守してください。

2024-11-22

同じタグを持つ記事をピックアップしました。