# 5 分で VPN サーバー立てる! wg-easy の使い方

余っている VPS サーバーがあるので、VPN サーバーをやってみたいと思ってやってみました。

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

VPN サーバーとは
セキュアな通信を暗号化、転送するためのサーバーである。

# VPN を使うメリット

  • セキュリティ
    • データが暗号化されるため、パブリック環境のネットワーク使っても安全
  • プライバシー
    • 通信元のユーザーの IP アドレスが検知されにくくなる
    • トラッキングやターゲット広告の追跡回避できる
  • 地域制限回避
    • 海外のサーバー使うことで、地域特有な閲覧制限を回避できる

# VPN サーバーを構築

余っている Ubuntu サーバーがあるので、WireGuard VPN 入れてみましたが、設定の複雑さに負けて、wg-easy (opens new window) という WireGuard VPN の管理を簡素化するためのパッケージを使うようにしました。

# Docker をインストール

Ubuntu に Docker がなかったので、まずは Docker インストール

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

# Docker コマンドで wg-easy インストール&起動

docker run --detach \
  --name wg-easy \
  --env WG_HOST=1.2.3.4 \
  --env PASSWORD_HASH='$Pxwnn3BxhlDlxxnb63KhDei7' \
  --env PORT=32767 \
  --env WG_PORT=32766 \
  --volume ~/.wg-easy:/etc/wireguard \
  --publish 32766:32766/udp \
  --publish 32767:32767/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

env 編集が必要

  • WG_HOST サーバー IP に合わせる
  • PASSWORD_HASH パスワードのハッシュを作成
    • このパスワードはウエブ UI の管理画面をログインする際に使う
  • PORT WG_PORT publish は環境に合わせる

PASSWORD_HASH はどうやって作成する?

docker コマンドでできる

docker run -it ghcr.io/wg-easy/wg-easy wgpw YOUR_PASSWORD
# PASSWORD_HASH='$2b$12$coPqCsPtcFO.Ab99xylBNOW4.Iu7OOA2/ZIboHN6/oyxca3MWo7fW'

PASSWORD_HASH= の内容を --env PASSWORD_HASH にコピペ

docker run --detach   --name wg-easy   --env WG_HOST=1.2.3.4   --env PASSWORD_HASH='$Pxwnn3BxhlDlxxnb63KhDei7'   --env PORT=32767   --env WG_PORT=32766   --volume ~/.wg-easy:/etc/wireguard   --publish 32766:32766/udp   --publish 32767:32767/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
# 3cff4e63bdab990031d021dd837ad2433fe98f14a5914efd419fa55d0374a9f5

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:32766->32766/udp, :::32766->32766/udp, 0.0.0.0:32767->32767/tcp, :::32767->32767/tcp   wg-easy

# 立ち上がったらブラウザーでアクセス

  • 設定したホストでアクセス
  • ポートも必要
  • ログインパスワードはハッシュ前のやつ
  • ログインしたら+ New でクライアント追加
  • 有効無効化、QR コード、設定ダウンロードなどいろいろできる
  • スマホから wireGuard の APP をインストールして簡単に繋がる
2024-11-22
  • server
  • vpn

関連記事

robots.txt の書き方
積水ハウス 個人情報流出 SQL インジェクション攻撃か
ZeroSSL で無料 SSL できるけど Let's Encrypt と比較
ジェネレーティブ AI と大規模言語モデル(LLM)を学ぶためのリソース
XZ Utils 事件対応
Ubuntu で Web サーバーを構築する手順
メールサーバー移行と POP & IMAP 設定
Docker Supervisor 使ってバッチ処理
よく使う WSL コマンド
自宅サーバー構築!  Nextcloud で NAS クラウドストレージ
no such file or directory: /usr/share/zsh/vendor-completions/_docker
oh my zsh 使うべし
AWS CloudWatch ログ監視で Lambda 処理
AWS SES メール開封確認  DB に集計
Vim 操作とショートカット
DDNS 無料ダイナミック DNS サービス 4 つ
Nginx 基本設定
SPF メール送信なりすまし対策
Windows Mac Linux hosts ファイル場所
AWS Unresolved resource dependencies [AWSEBV2LoadBalancer] エラー
ディスク容量を確認する df コマンド
Laravel Address already in use の原因
content-security-policy 設定
AWS Elastic Beanstalk php.ini 設定変更
AWS Elastic Beanstalk 環境設定
AWS のタイムゾーンを UTC 協定世界時から JST 日本標準時に変更
Docker の基本的な使い方
Amazon DynamoDB 制限調査
AWS 504 Gateway Timeout エラー対応
Shell と Bash のいろいろ
Mac ターミナル SSH 接続設定
Elastic Beanstalk \$\SERVER['REMOTEADDR'] 取得できない
crontab 設定いろいろ
AWS EC2 の amazon-linux-extras の話
デプロイツール Capistrano
解決! xserver php バージョンアップした時に ssh 環境に反映されない
youtube 見れるように vpn サーバー建ててみた
xserver に vim インストール
xserver に nodejs インストール
レンタルサーバーなら xserver おすすめ理由
Docker command でドッカー練習する時のメモ
Windows10 Home に Docker 入れた時のメモ
Centos7 Webserver 構築の時のメモ