--- [article] title = "【備忘録】 個人用サーバに WireGuard を導入する" description = "個人用サービスのセルフホストに使っているサーバに WireGuard を導入する作業をしたメモ" tags = [ "note-to-self", "wireguard", ] [[article.revisions]] date = "2024-02-03" remark = "公開" [[article.revisions]] date = "2024-02-17" remark = "80 番ポートについて追記" ---
はじめに

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

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

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

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

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

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

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

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

[Peer] PublicKey = <サーバの公開鍵> AllowedIPs = <サーバの外部 IP アドレス>/32 Endpoint = <サーバの外部 IP アドレス>:51820 ]]> [Peer] PublicKey = <サーバの公開鍵> AllowedIPs = <サーバの外部 IP アドレス>/32 Endpoint = <サーバの外部 IP アドレス>:51820 ]]>

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

WireGuard の設定

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

ListenPort = 51820 [Peer] PublicKey = <クライアント 1 の公開鍵> AllowedIPs = 10.10.1.2/32 [Peer] PublicKey = <クライアント 2 の公開鍵> AllowedIPs = 10.10.1.3/32 ]]>

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

ファイアウォールの設定

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

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

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

接続する

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

追記: 80 番ポートについて

Let's Encrypt でサーバの証明書を取得している場合、80 番ポートを空けておく必要がある。気づかないうちに証明書が切れないよう注意。