WireGuard は、高速で小さく、設定も簡単な最新の VPN プロトコルです。VPS で自分用に運用すれば、第三者の VPN 事業者を介さずに、好きな国のサーバーへの暗号化トンネルが手に入ります。このガイドでは Ubuntu 24.04 または Debian 12/13 を使い、すでにサーバーを保護済みであることを前提とします。
1. WireGuard をインストールする
sudo apt update
sudo apt install -y wireguard
2. サーバーの鍵を生成する
cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
umask 077 により、鍵ファイルは root だけが読み取れるようになります。server.key は非公開にしてください。
3. クライアントの鍵を作成する
ノート PC やスマートフォン用の鍵ペアをサーバー上で生成し、後でクライアントの設定をコピーします。
wg genkey | tee client1.key | wg pubkey > client1.pub
4. サーバーの設定を書く
まず、公開ネットワークインターフェースの名前を調べます。
ip route get 1.1.1.1 | awk '{print $5; exit}'
多くの場合は eth0 または ens3 です。/etc/wireguard/wg0.conf を作成し、大文字の値を自分のものに置き換えます。
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ETH_IF -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ETH_IF -j MASQUERADE
[Peer]
# client1
PublicKey = CLIENT1_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32
server.key と client1.pub の内容を指示された場所に貼り付け、ETH_IF をインターフェース名に置き換えます。
5. IP フォワーディングを有効にする
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
6. ファイアウォールを開ける
sudo ufw allow 51820/udp
sudo ufw route allow in on wg0
sudo ufw reload
7. トンネルを起動する
sudo systemctl enable --now wg-quick@wg0
sudo wg show
インターフェースが表示され、クライアントが接続すると最新のハンドシェイクも表示されるはずです。
8. クライアントを設定する
お使いのデバイスで、次のような設定を作成します(Windows、macOS、Linux、iOS、Android 向けの公式 WireGuard アプリは、ファイルまたは QR コードからインポートできます)。
[Interface]
Address = 10.8.0.2/24
PrivateKey = CLIENT1_PRIVATE_KEY
DNS = 1.1.1.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = YOUR_SERVER_IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
AllowedIPs = 0.0.0.0/0, ::/0 を使うと、すべてのトラフィックがトンネルを通ります。プライベートネットワークだけに到達したい場合は、代わりに 10.8.0.0/24 を使います。
9. テストする
- クライアントでトンネルを有効にします。
- サーバーで
sudo wg showを実行し、最近のハンドシェイクがあることを確認します。 - クライアントから「自分の IP アドレスを調べる」ページを開きます。サーバーのアドレスが表示されるはずです。
- プライバシーが目的なら DNS リークを確認し、サーバーに IPv6 がある場合は IPv6 のルールも追加します。
デバイスを追加する
新しいデバイスごとに鍵ペアを生成し、別の [Peer] ブロックを新しいアドレス(たとえば 10.8.0.3/32)で追加して、sudo wg syncconf wg0 <(wg-quick strip wg0) を実行すると、既存の接続を切らずに反映できます。
ロケーションの選択
WireGuard サーバーは、当社のどのロケーションでも動作します。速度を重視するなら近い場所を、トラフィックの送信元にしたい IP アドレスの国があるならその国を選んでください。VPS ロケーションの選び方をご覧ください。個人用のトンネルなら、小さな VPS で十分すぎるほどです。