概要

外出先からホームサーバー・NAS・オフィスの内部ネットワークに安全に接続するにはVPNが必要です。ポートフォワーディングでサービスをインターネットに直接公開する代わりに、VPNトンネルを通じてまるで同じネットワークにいるかのように接続するのが基本原則です。このブログには性格の全く異なる3つの方式(Tailscale、WireGuard、wg-easy)を扱った記事がありますが、「VPN」という名前は同じでも設定方法・セキュリティモデル・運用負担が全く異なるため、状況に合わせて選ぶ必要があります。

選択基準

方式を選ぶ前に、以下の5つを先に考えてみると役に立ちます。

  • NAT・ファイアウォール環境 — ルーターの内側にあるホームサーバーのようにポート開放が面倒・不可能な環境か、それとも固定IPを直接付けられるクラウドサーバーか。
  • セキュリティモデル — 接続を許可する端末を一つずつ明示的に登録するゼロトラスト方式が必要か、それとも従来型のサーバー・クライアント型VPNで十分か。
  • 運用負担 — サーバーインフラ(鍵管理、ファイアウォールルール、アップデート)を自分で保守する余力があるか、それとも管理型サービスに任せたいか。
  • デバイス・ユーザー数 — 自分一人でノートPC1〜2台が接続できればいいのか、複数人がそれぞれ異なる権限で接続する必要があるのか。
  • 性能 — 大容量ファイル転送のようにスループットが重要か、それともSSH接続程度の軽いトラフィックか。

方式の比較

TailscaleWireGuardwg-easy
サーバー運用不要(マネージド)自分で運用自分で運用(Web UI)
ポート開放ほぼ不要必要(UDP)必要(UDP)
設定の難易度低い高い(CLI・設定ファイル)中程度(Web UI)
きめ細かな制御低い高い中程度
マルチユーザー管理tailnet ACL手動(Peer登録)Web UIで管理
適した状況素早く始めたい個人・小規模チームインフラを全て自分で管理したいWireGuardを楽に管理したい

まず何を見るべきか

実践シナリオ

  • 旅行中にノートPCから自宅NASのファイルを一つだけ確認したい → Tailscale
  • 会社の内部ネットワークにある複数のサーバーをチームメンバーに標準化された方法で開放したい → WireGuard
  • チームメンバー各自がWeb UIでQRコードを使ってWireGuard設定を登録できるようにしたい → wg-easy(ただしMASQUERADE除外設定が必須)

Tailscale — 最も速く始められる方法

各デバイスがアウトバウンド接続のみでtailnetに参加する方式のため、別途ポート開放がほとんど不要です。直接P2P接続ができない場合はDERPリレーで迂回します。tailnet IP、accept-routes、serve/funnelモードまで状況別に整理しました。内部的にはWireGuardプロトコルをそのまま使っているため性能は純正WireGuardと大差なく、代わりに鍵交換・NAT越え・ACL管理をTailscaleが代行してくれる点が核心的な違いです。ノートPC1〜2台からホームサーバー1台に接続する程度であれば、まず試してみるべき方式です。

Tailscale Linuxインストール - 安全なリモートVPN構成

WireGuard — 自分でサーバーを運用する方法

サーバーキーの生成からwg0.confの設定、UDPポートのファイアウォール開放、クライアントPeerの登録、MASQUERADEによる内部ネットワークのルーティングまで全体の流れを整理しました。Tailscaleと異なり、サーバー運用・ファイアウォール管理を自分で行う必要がありますが、インフラを全て自分の手元に置きたい場合に合った方式です。カーネルレベルの実装のためオーバーヘッドがほとんどなく、設定ファイル一つで複数台のサーバー・クライアント構成を再現できるため、インフラを標準化して管理する必要がある状況に特に有利です。

WireGuardのインストールとクライアント接続設定方法

wg-easy — WireGuardをWeb UIで管理する際に生じる問題

wg-easyはWireGuardの設定をWeb UIで楽に管理できますが、デフォルトのMASQUERADE設定のため、サーバーを経由する全てのリクエストの送信元IPがVPNサーバーのIPに書き換わってしまう問題があります。OpenVPNクライアントの実際のプライベートIPをログに残すには、iptablesのNATルールで特定の範囲を除外設定する必要があります。純正WireGuardの設定ファイル管理の負担を減らしてくれる代わりに、このようなWeb UI特有のデフォルト値の問題を別途チェックする必要があるというトレードオフがあります。

wg-easy WireGuard MASQUERADE 除外設定でOpenVPNクライアントIPを維持する方法

まとめ

3つとも結局は「誰がインフラを管理するか」の違いに集約されます。管理をしたくなければTailscale、全て自分で制御したければWireGuard、その中間でWeb UIの利便性を求めるならwg-easy(ただしデフォルト値の確認は必須)です。3つの方式ともこのブログで扱っているので、状況に合った記事から読めば大丈夫です。