1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

StylezAdvent Calendar 2024

Day 23

VPN環境をWireGuard&Dockerで構築

Last updated at Posted at 2024-12-23

なぜVPN環境を?

海外出張に行ってきたのですが、海外だと普通にフリーWi-Fiがいっぱいあります。
ただ、さすがにネットワーク環境に不安があるというので一時的にVPN環境を構築してみました。

事前にeSIMを手配していましたが、もしものためにと思って晩酌のお供にVPN環境構築してみました。

VPNサーバー準備

まずはサーバーを用意

AWS上に構築します。
ここら辺は概要だけで細かいところはスキップします。

  • AmazonLinux2023をポチポチして準備
    • とりあえずt3.microで用意(2人同時接続してみたけど問題無かったです)
    • パブリックサブネットに配置
    • パブリックIPは必要(EIPは一時的かどうかで判断してもらえればと)
  • セキュリティグループ準備
    • UDP 51820のインバウンドをOKに
    • SSHポートは自分のIPのみ(セッションマネージャー使うなら不要)

Docker周りのインストール

  • Dockerインストール(コマンドは不要だと思うけど一応)
# インストール&スタート
sudo dnf update -y
sudo dnf install docker -y
sudo systemctl enable docker
sudo systemctl start docker

# 起動確認
sudo systemctl status docker

# ユーザーをDockerグループに追加
sudo usermod -aG docker ec2-user
  • Docker Composeインストール
# インストール&権限設定
DOCKER_COMPOSE_VERSION=v2.26.1
sudo curl -SL https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# バージョン確認
docker-compose --version

通信周りの設定

ここを忘れるとNAT越えしないので要注意

# IPフォワーディング(パケット転送)を永続的に有効
sudo vi /etc/sysctl.conf
# →ファイルを開いてい「net.ipv4.ip_forward = 1」を追記

# 設定反映
sysctl -p

# 上記の永続化をしないで一時的に設定する場合は以下を実行
# sudo sysctl -w net.ipv4.ip_forward=1

# EC2から外にでるように設定
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Docker設定ファイルを用意

公式のイメージを使うのでcompose.ymlのファイルを用意するのみです。
コメントで「★」を付けているところは、適宜変更してください。

compose.yml
services:
  wireguard:
    image: linuxserver/wireguard
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Tokyo
      - SERVERURL=XXX.XXX.XXX.XXX # ★EC2のグローバルIPを指定
      - SERVERPORT=51820 # 利用ポート
      - PEERS=1 # ★接続する人数を指定
      - PEERDNS=8.8.8.8 # ★DNS指定
    volumes:
      - ./config:/config # Docker起動後に設定ファイルなど作られる場所
    ports:
      - 51820:51820/udp
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
    restart: unless-stopped

WireGuard起動!

先ほど、用意した設定ファイルがある場所で起動を実施

# 起動
sudo docker compose up -d

起動後にファイル共有しているconfigディレクトリの下にQRコードのPNGファイルが生成されているので確保してください。
この後のスマートフォンでの設定に利用します。

スマートフォン側の設定

Androidでの設定のみですが、ざっくり書いておきます

  1. GooglePlayでWireGuardアプリを探してインストール
  2. WireGuardアプリを起動して、「+」から前の手順で確保したQRコード読み込み(名前は自由に設定してOK)
  3. WireGuardアプリに接続先が追加されるのでVPNを有効化

これで安心してインターネットが使えます!

最後に一言

実は色々ハマって深夜3時までかかったりしたけど、
これで海外出張中でもアマプラを見ることができました!!

1
0
2

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?