Shadowrocket WireGuardの設定方法:Private Key・Endpoint・MTUなどの各項目を解説

Add ServerのWireGuard項目に沿って、鍵・アドレス・Endpoint・MTU・DNSの意味と、入力ミスで起こりやすい症状を解説します。

この記事の概要

サービスとWireGuard設定をすでに用意しており、パラメータを手動で確認したい方に向けた解説です。まずクライアント側と接続先の情報を分けて整理し、Address、Endpoint、鍵、MTU、DNSの順に確認します。最後に決まった手順でテストし、ハンドシェイク、名前解決、ルールによる経路選択の問題を切り分けます。本文中のアドレスは項目の説明用であり、接続に使える設定ではありません。

1. HomeからWireGuardの項目を追加する

ShadowrocketのWireGuard設定には、互いに対応する一連のパラメータが必要です。接続先のアドレスとポートだけでは接続できません。接続先には本機のPrivate Keyに対応する公開鍵を登録し、クライアント用のトンネルアドレスを割り当てる必要があります。この記事では、利用者が自分の正規の設定情報を入手済みであることを前提とし、サービスの入手先については扱いません。

Homeの右上にある「+」をタップしてAdd Serverを開き、まずTypeをWireGuardに設定してから、表示された項目を確認します。フォームによってはサーバーアドレス、ポート、鍵が別々の欄に表示されます。以下ではEndpoint、鍵、トンネルアドレス、高度な設定の順に説明します。項目の配置や任意項目の表示は、現在の画面に従ってください。ほかのプロトコルのPasswordやUUIDをWireGuardの鍵欄に入力しないでください。

  1. 設定を準備する

    自分の設定情報からInterfaceとPeerの項目を確認し、元の内容を別途保存しておきます。PrivateKeyは本機のもの、Peer内のPublicKeyは接続先のものです。取り違えないようにしてください。

  2. タイプを選択する

    Home →「+」→ Add Server → Type → WireGuardの順に開きます。前に使用したプロトコルの項目の意味を引き継がないよう、入力前にタイプを確認してください。

  3. 各項目を入力する

    自分の設定情報に従って、サーバーアドレス、ポート、Private Key、接続先のPublic Key、トンネルアドレスを入力します。MTU、DNS、任意の鍵も、まずは元の値を使用してください。

  4. 保存してテストする

    保存後にHomeへ戻り、追加した項目を選んで接続スイッチをオンにします。初回はシステムの案内に従ってVPN構成の追加を許可し、Connectivity Testで接続を確認してください。

2. Endpoint:接続先のアドレスとポートを分ける

Endpointは、WireGuardの接続先にインターネット経由で到達するための情報で、ホスト名またはIPアドレスとUDPポートで構成されます。元の設定では、vpn.example.com:51820のようにまとめて記載されている場合があります。Add ServerにAddressとPortが別々に表示される場合は、ホスト部分をアドレス欄に、51820をポート欄に入力してください。同じ文字列を両方の欄に貼り付けないでください。

元の記載例ホスト部分ポート部分
vpn.example.com:51820vpn.example.com51820
192.0.2.10:51820192.0.2.1051820
[2001:db8::10]:518202001:db8::1051820

上の表は説明用のドメイン名とアドレスです。実際の接続には使用できません。IPv6アドレスをアドレスとポートをまとめた形式で記載する場合、角括弧で両者を区別します。欄が分かれている場合は、アドレス欄の入力仕様に従ってください。ホスト欄の先頭にhttps://を付けたり、Webページのパスを追加したりしないでください。

51820はよく使われる例示用ポートで、すべてのWireGuardサービスで必須の番号ではありません。ポートは自分の設定情報を確認してください。WireGuardはUDPを使用します。あるアドレスのTCPポートに接続できても、同じ番号のUDPポートが利用可能とは限りません。ドメインを名前解決できない、ポートの入力が間違っている、または現在のネットワークでUDPが制限されている場合、応答がない状態が続くことがあります。ただし、この症状だけで原因を特定することはできません。

3. Private Key、Public Key、任意の鍵

Private Keyは本機の秘密鍵です。秘密鍵から本機の公開鍵が決まり、接続先にはあらかじめその公開鍵を登録しておく必要があります。接続先の設定項目にあるPublic Keyは、通常、サーバーを識別するための相手側の公開鍵を指します。Private Keyから生成した自分の公開鍵を、もう一度入力する欄ではありません。どちらも長いBase64文字列に見えることがあるため、見た目だけで判断しないでください。

32バイト
WireGuardの秘密鍵と公開鍵、それぞれの元データの長さ
44文字
32バイトの鍵を標準Base64でエンコードした場合の一般的な文字数(パディングを含む)
UDP
WireGuardの接続先との通信に使用するトランスポートプロトコル

要点:まず鍵の対応関係を確認し、再生成はその後に検討する

本機のPrivate Keyと接続先のPublic Keyを、それぞれ元の設定情報と照合してください。原因を調べるためだけに秘密鍵を新しく生成しないでください。秘密鍵を変更すると、接続先に登録されているクライアントの公開鍵も更新する必要があります。そうしないと、Endpointが正しくても認証できません。

文字数が合っていても、形式が要件に合っている可能性があるというだけで、鍵が接続先と一致する証明にはなりません。Public Keyの誤入力、Private Keyの不一致、Pre-shared Keyの不一致はいずれも、通信を確立できない原因になり得ます。元の設定情報と項目ごとに照合し、すべての失敗をポートの問題だと決めつけないでください。

4. トンネルアドレス:AddressとEndpointの違い

どちらも「アドレス」を意味する項目でも、役割は異なります。Endpointのアドレスはインターネット上の接続先を見つけるためのものです。一方、InterfaceのAddressは本機がトンネル内で使用するアドレスです。元の設定に10.66.0.2/32と記載されている場合、これはクライアント側の内部アドレスとプレフィックス長を表します。インターネット上のサーバーホスト欄には入力しないでください。

設定項目記載例入力時の判断
Endpointvpn.example.com:51820接続先の入口です。ホストとポートは画面の項目に合わせて分けます。
Interface Address10.66.0.2/32本機のトンネルアドレスです。割り当て済みのアドレスと必要なプレフィックスをそのまま使います。
IPv6 Addressfd00:66::2/128自分の設定でIPv6が割り当てられている場合のみ入力します。
AllowedIPs0.0.0.0/0, ::/0WireGuardのアドレス範囲の設定です。DNSでも鍵でもありません。

上記の例を参考に、トンネルアドレスを自分で決めないでください。同じ接続先を使うクライアント同士では、通常、アドレスの競合を避ける必要があります。別の端末の設定とアドレスをそのまま使うと、通信が断続的に途切れることがあります。複数の端末を同時に使う場合は、サービス側で各端末に割り当てられた個別の設定を使用してください。

AllowedIPsは、Shadowrocketの全体的な経路選択モードと同じものではありません。WireGuardでは、接続先のアドレス範囲を処理するために使われます。一方、アプリの通信をそのサーバーに送るかどうかは、ShadowrocketのGlobal RoutingとConfig内のルールにも左右されます。元の設定にこの項目があり、現在の編集画面に同名の欄がない場合、AddressやDNS欄に貼り付けないでください。現在サポートされている読み込み方法と設定説明を確認してください。

5. MTUとDNS:接続後も問題がある場合の確認方法

MTUは、トンネルインターフェイスで処理するパケットの最大サイズを制限します。値が大きすぎると、外側のカプセル化によって経路上で扱えるサイズを超える場合があります。経路上のフラグメント処理やエラー通知が正常に機能しないと、小さなリクエストは成功する一方、大きなリクエストが停止することがあります。これは調査の手がかりであり、Webページの読み込みが遅いだけで原因と断定できるものではありません。

DNSはドメイン名をアドレスに変換するもので、鍵やポートの誤りを修正するものではありません。元のWireGuard設定にあるDNSは、通常、トンネル内で使用するDNSサーバーを指します。Shadowrocketの実際の名前解決動作は、Config内のDNS設定や関連する経路選択にも影響されます。サーバー項目にDNSアドレスを入力すれば、すべてのドメイン問い合わせが必ず同じ経路を通るわけではありません。

内部DNSのアドレスも、該当するネットワーク経路から到達できる必要があります。「アドレスを指定したテストでは応答するのに、ドメイン名でのリクエストは失敗する」場合は、まず名前解決の結果とDNSへの到達性を確認できます。ただし、Webサイトでは正しいドメイン名やTLS情報が必要なことがあります。ブラウザーでIPアドレスに直接アクセスした結果を、ドメイン名を使った完全なテストの代わりにしないでください。

6. Global Routing:プロトコルの問題とルールの問題を切り分ける

WireGuardの項目を保存した後、Homeでそのサーバーを選択する必要があります。接続スイッチをオンにすると、システムで該当するVPN構成が有効になりますが、接続先から応答があったことを意味するわけではありません。テスト前に通信が実際にその項目へ送られているか確認してください。そうしないと、実際にはDirectで通信しているのに「テストに成功した」と誤認することがあります。

Config

おすすめ

現在の設定ファイルのルールに従って通信を処理します。テスト対象の通信に適用されるポリシーが、確認したいWireGuard項目を実際に指しているか確認してください。DIRECTに一致したリクエストでは、その項目が使えることを検証できません。

適した用途:パラメータの確認後、既存のルールに従って日常的に通信を振り分ける場合。

Proxy

対象となる通信をプロキシとして処理し、テスト中にルールによる振り分けの影響を一時的に減らせます。選択中のサーバーを確認してください。また、このモードがシステム上のすべての通信制限を回避できるという意味ではありません。

適した用途:Configのルールがテスト経路に影響しているか、一時的に調べる場合。

Direct

通信を直接接続として処理します。現在の基本ネットワークを確認する際に使えますが、直接接続に成功してもWireGuardの鍵、ポート、トンネルアドレスが正しいとは限りません。

適した用途:プロキシを経由しない場合の状態を確認し、比較用の基準を作る場合。

普段Sceneを使用している場合は、現在のSceneで実際に使われているサーバーとルールも確認してから、テスト結果を判断してください。調査が終わったら元のモードに戻します。Settings → On Demandを確認する際は、テスト中にオンデマンド接続の条件によって接続状態が変化しないかを確認してください。On DemandはWireGuardの認証を代行したり、誤ったパラメータを修正したりするものではありません。

Configでは、DOMAIN-SUFFIXはドメインの末尾に一致するルール、IP-CIDRはアドレス範囲に一致するルール、GEOIPはIPアドレスの地理的な割り当てに基づくルール、FINALはそれまでのルールに一致しなかった通信を処理するルールです。ルールは順番に経路選択へ影響します。Home上部のスイッチだけでプロトコルの状態を判断せず、実際に適用されたポリシーを確認してください。

7. 症状ごとに確認し、すべての項目を一度に変更しない

まず安定したネットワークで基準となる状態を記録し、Connectivity Testと実際の通信の両方で確認します。1回の遅延測定だけで、すべての宛先に到達できるとは判断できません。テストに失敗しても、鍵の誤りとは限りません。次の表は確認の順序を決めるためのもので、1つの症状から原因を断定するものではありません。

確認された症状優先して確認する項目次の手順
有効にした後もリクエストがタイムアウトし続けるEndpoint、UDPへの到達性、双方の鍵元の設定情報と照合して1項目ずつ確認します。Wi-Fiとモバイル通信でそれぞれ再テストできます。
ドメイン名でのリクエストが失敗するDNSの結果、名前解決の経路、DNSへの到達性Endpointのドメイン名と接続先ドメイン名の名前解決を区別し、現在のConfigを確認します。
小さなリクエストは成功するが、大きなリクエストは停止する経路上のMTU、パケットロス、接続先の負荷宛先とネットワークを変えずにMTUだけを変更して比較し、結果を記録した後、元の値に戻すか有効な値を維持します。
一部の宛先だけで問題が起きる適用されたルール、IPv4とIPv6の経路同じサーバーが使われているか確認し、すぐに鍵を作り直さないでください。
ネットワークを切り替えた後にのみ問題が起きる新しいネットワークでのUDP、名前解決、接続状態接続を再確立してテストし、2つのネットワークの違いを比較します。

項目がすでに利用中のサブスクリプションに含まれている場合、手動で編集した内容がサブスクリプションの更新後に上書きされることがあります。変更前に元のパラメータを保存し、テスト用の項目とサブスクリプション管理の項目をメモで区別してください。利用中のサービス提供元へ問い合わせる際は、テストしたネットワーク、症状、確認済みの項目名を伝えれば十分です。実際のPrivate Key、Pre-shared Key、サブスクリプションURL全体を公開の記録に載せないでください。

最終確認は、接続先の入口に到達できること、鍵の対応関係が正しいこと、トンネルアドレスが割り当てと一致すること、名前解決の経路が使えること、対象の通信が実際にそのサーバーへ送られていることの順に行います。これらの基本項目を確認してからMTUの調整を検討すれば、詳細設定で基本的な入力ミスを覆い隠すことを防げます。

App Storeの正規アプリを確認する