+
+

更新履歴

+
    +
  1. + : 公開 +
  2. +
+
+
+

はじめに

+

+ 個人用サービスのセルフホストに使っているサーバに WireGuard を導入する作業をしたのでメモ。 +

+ +

+ 登場するホストは以下のとおり: +

+ +
    +
  • + サーバ (Ubuntu): 10.10.1.1 +
  • + +
  • + クライアント 1 (Windows): 10.10.1.2 +
  • + +
  • + クライアント 2 (Android): 10.10.1.3 +
  • +
+ +

+ 後ろの IP アドレスは VPN 内で使用するプライベート IP アドレス。 +

+
+ +
+

WireGuard のインストール: サーバ

+

+ まずは個人用サービスをホストしている Ubuntu のサーバに WireGuard をインストールする。 +

+ +
$ sudo apt install wireguard
+ +

+ 次に、WireGuard で使用する鍵を生成する。 +

+ +
$ wg genkey | sudo tee /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub
+$ sudo chmod 600 /etc/wireguard/server.{key,pub}
+
+ +
+

WireGuard のインストール: クライアント

+

+ 公式サイトから各 OS 向けのクライアントソフトウェアを入手し、インストールする。次に、設定をおこなう。 +

+ +
# クライアント 1 の場合
+[Interface]
+Address = 10.10.1.2/32
+PrivateKey = <クライアント 1 の秘密鍵>
+
+[Peer]
+PublicKey = <サーバの公開鍵>
+AllowedIPs = <サーバの外部 IP アドレス>/32
+Endpoint = <サーバの外部 IP アドレス>:51820
+ +
# クライアント 2 の場合
+[Interface]
+Address = 10.10.1.3/32
+PrivateKey = <クライアント 2 の秘密鍵>
+
+[Peer]
+PublicKey = <サーバの公開鍵>
+AllowedIPs = <サーバの外部 IP アドレス>/32
+Endpoint = <サーバの外部 IP アドレス>:51820
+ +

+ PrivateKeyPublicKey は鍵ファイルのパスではなく中身を書くことに注意。 +

+
+ +
+

WireGuard の設定

+

+ 一度サーバへ戻り、WireGuard の設定ファイルを書く。 +

+ +
$ sudo vim /etc/wireguard/wg0.conf
+ +
[Interface]
+Address = 10.10.1.1/32
+SaveConfig = true
+PrivateKey = <サーバの秘密鍵>
+ListenPort = 51820
+
+[Peer]
+PublicKey = <クライアント 1 の公開鍵>
+AllowedIPs = 10.10.1.2/32
+
+[Peer]
+PublicKey = <クライアント 2 の公開鍵>
+AllowedIPs = 10.10.1.3/32
+ +

+ 次に、WireGuard のサービスを起動する。 +

+ +
$ sudo systemctl enable wg-quick@wg0
+$ sudo systemctl start wg-quick@wg0
+
+ +
+

ファイアウォールの設定

+

+ 続けてファイアウォールを設定する。まずは WireGuard が使用する UDP のポートを開き、wg0 を通る通信を許可する。 +

+ +
$ sudo ufw allow 51820/udp
+$ sudo ufw allow in on wg0
+$ sudo ufw allow out on wg0
+ +

+ 次に、80 や 443 などの必要なポートについて、wg0 を経由してのアクセスのみ許可する。 +

+ +
$ sudo ufw allow in on wg0 to any port 80 proto tcp
+$ sudo ufw allow in on wg0 to any port 443 proto tcp
+ +

+ 最後に、ufw を有効にする。 +

+ +
$ sudo ufw status
+$ sudo ufw enable
+
+ +
+

接続する

+

+ これで、各クライアントで VPN を有効にすると、当該サーバの 80 ポートや 443 ポートにアクセスできるようになったはずだ。念のため VPN を切った状態でアクセスできないことも確認しておくとよいだろう。 +

+
+