この記事は、ご自身のサービス設定をお持ちの方向けです。まず端末側とリモートPeer側のパラメータを区別し、情報の入手元に沿ってWireGuardの各項目を入力します。最後に「ハンドシェイクできるか」「通信できるか」「目的のアドレスにアクセスできるか」の3段階で問題を切り分けます。本文中のアドレスとポートは書式の説明用であり、接続に使える情報ではありません。
入力前に、端末側とリモート側の情報を分ける
WireGuardの設定は、端末とリモートPeerの間に暗号化トンネルを作るためのものです。ShadowrocketはAppleプラットフォーム向けの有料アプリで、iPhoneやiPadではApp Storeから入手できます。システム要件はApp Storeの掲載内容をご確認ください。アプリを購入しても、接続先のサービスが利用できるようになるわけではありません。入力を始める前に、ご自身が利用するサービスの管理画面または管理者から、この端末専用の設定情報を入手してください。
特に混同しやすいのが、方向の異なる2つの鍵です。PrivateKeyは端末側の秘密鍵で、端末で使用し、厳重に保管する必要があります。リモートPeerのPublicKeyには、リモート側から提供された値を入力します。またリモート側では、この端末のPrivateKeyに対応する公開鍵を登録して、Peerを識別できるようにする必要があります。リモート側の公開鍵を端末の秘密鍵欄にコピーしたり、両方の欄に同じ文字列を入力すれば接続できると考えたりしないでください。
役割ごとに設定情報の入手元を確認
端末側
PrivateKey:この端末で使用する秘密鍵です。公開情報として共有しないでください。Address:この端末に割り当てられたトンネル内のアドレスです。通常はプレフィックス長を含みます。DNS:サービス設定でDNSサーバーが指定されている場合は、その指示に従って入力します。
リモートPeer側
PublicKey:リモート側の公開鍵です。端末側の公開鍵ではありません。Endpoint:リモート側に接続するためのホスト名またはIPアドレスとUDPポートです。AllowedIPs:このPeerに転送する宛先アドレスの範囲です。サービス設定に従ってください。
要点:元の設定情報を「端末側」と「リモート側」に分けて照合します。重要な項目が不足している場合は、値を推測せず、設定の提供元に確認してください。
標準的なWireGuard設定ファイルがある場合は、[Interface]と[Peer]を見分けます。通常、前者には端末側のパラメータ、後者にはリモート側のパラメータが記載されています。アプリ画面の項目配置が設定ファイルのグループ分けと異なっても、パラメータの所属先は変わりません。設定ファイル全体をPrivateKeyやEndpointの欄に貼り付けないでください。
PrivateKey・PublicKey・Endpoint・MTUの役割
PrivateKeyは、この端末がWireGuardのハンドシェイクに参加するために使います。対応する公開鍵は、リモート側の設定に登録する必要があります。これは機密情報です。問題を調べる際は、入力欄を間違えていないか、別の端末の情報と混同していないかを確認できますが、スクリーンショットや公開の質問に原文を載せてはいけません。この秘密鍵を変更すると端末側の公開鍵も変わるため、リモート側の登録も合わせて更新する必要があります。
PublicKeyは接続先のリモートPeerを指定します。値が間違っていると、ホスト名とポートが正しくても、双方の識別情報が一致せず正常にハンドシェイクできません。Endpointはリモート側への接続先で、一般的には「ホスト名:ポート」の形式です。例として書式のみを示すと、vpn.example.com:51820のようになります。51820はUDPポートの例にすぎません。実際の値はご自身のサービス設定をご確認ください。
MTUは、トンネル内を通る1つのパケットの最大サイズを制限します。値が大きすぎると、通信経路によっては小さなリクエストは通る一方、大きなページの表示やファイル転送が止まることがあります。小さすぎる場合は通信のオーバーヘッドが増えます。1420はよく試される開始値ですが、すべてのネットワークに適した値ではありません。まずは設定の提供元が指定する値を使用してください。ハンドシェイクが成功していることを確認し、大きなデータの転送時に問題が限られる場合にのみ、提供元の案内に沿って少しずつ調整し、変更前後の結果を記録してください。
Add Serverで情報の入手元に沿って入力
手動入力は、WireGuard専用の設定情報をすでに入手していて、各項目を個別に確認したい場合に適しています。利用中のサービスが購読URLしか提供していない場合は、その購読内容に利用可能なWireGuard設定が含まれているか、まず確認してください。購読リンクはEndpointではないため、URL全体をリモートアドレス欄に入力することはできません。以下は手動で追加する手順です。実際に表示される項目は、アプリの現在の画面でご確認ください。
追加画面を開く
Shadowrocketの
Homeを開き、右上の+をタップしてAdd Serverを表示します。TypeでWireGuardを選択してください。端末側の項目を入力
手元の設定情報に沿って
PrivateKeyと、この端末に割り当てられたAddressを入力します。設定でDNSが明示されている場合は、その値も入力してください。例示用のアドレスを、実際に割り当てられたアドレスとして使用しないでください。リモート側の項目を入力
リモート側の
PublicKey、Endpoint、AllowedIPsを、それぞれ対応する欄に入力します。設定にPresharedKeyが含まれている場合は、元の情報どおりに入力してください。記載がない場合、値を推測して作らないでください。MTUを確認
設定情報に
MTUが指定されている場合は、その値を優先してください。指定がなければ、初回接続前に複数の項目を同時に変更せず、画面で設定可能な初期値を使用します。保存してテスト
保存後、
Homeに戻り、追加した項目を選択して接続を有効にします。初回の有効化時は、システムの案内に従ってVPN構成の追加を許可してください。その後、接続状態を確認し、実際にアクセスできるかテストします。
AllowedIPsは、元の設定と一文字ずつ照合してください。Peerが受け付ける宛先アドレスの範囲を示します。0.0.0.0/0はIPv4アドレス全体、::/0はIPv6アドレス全体を表しますが、これらの範囲を使うかどうかは、利用中のサービス設定によって異なります。ShadowrocketのGlobal Routingとは別の設定です。前者はWireGuard Peerの宛先範囲を指定し、後者は現在のモードに応じてアプリがリクエストを処理する方法を決めます。
ハンドシェイクに失敗したら、アドレス・識別情報・通信経路の順に確認
「スイッチがオン」と「WireGuardのハンドシェイクが完了」は同じ意味ではありません。まず、保存したばかりのWireGuard項目が選択されていることを確認し、リモート側から実際に応答があるかを調べます。管理画面やサービス提供元の診断情報に最終ハンドシェイク時刻が表示される場合は、判断材料として使えます。画面にその指標がない場合、スイッチの色だけで成功したと判断しないでください。
ハンドシェイクが始まらない場合、まず確認すること
まず、Endpointのホスト名、コロン、UDPポートを照合し、利用中のサービスが指定する接続先を入力しているか確認します。別の利用可能なネットワークに切り替えて再度試してください。特定のネットワークでのみ失敗する場合は、そのネットワークから該当するUDP接続先に到達できるかを優先して確認します。
アドレスが正しいのに失敗するのはなぜ?
リモート側のPublicKey、端末側のPrivateKey、必要に応じてPresharedKeyを一つずつ照合します。設定の提供元に、リモート側へこの端末に対応する公開鍵が登録されているか確認してください。また、端末のAddressがリモート側の記録と一致しているかも確認します。
ネットワークを変えると接続できることがある場合の調べ方
どのネットワークで失敗するか、同じ設定が別のネットワークではハンドシェイクできるかを記録します。サービス設定でPersistentKeepaliveが指定されている場合は、値が正しく入力されているか確認してください。この設定は、アドレス変換を経由する接続でマッピングの維持に役立つ場合がありますが、鍵やポートの誤りを直すものではありません。
ハンドシェイクは成功するのに、Webページが最後まで読み込めない場合
小さなリクエストと大きなページをそれぞれ試し、AllowedIPs、DNS、Global Routingを確認します。大きなデータの転送だけが止まる場合は、現在のMTUを記録してから少しずつ調整してください。一度に変更する設定は1つだけにします。
問題を切り分けるには、比較条件をそろえることが重要です。同じ設定、同じ宛先を使い、変更するのは設定項目1つ、またはネットワーク条件1つだけにしてください。鍵、ポート、ルーティングモード、MTUを同時に変更すると、アクセスが回復しても原因を特定できません。ご自身の設定提供元に問い合わせる際は、エラーが起きた手順、ネットワークの種類、テスト結果を伝えれば十分です。PrivateKeyの原文は絶対に添付しないでください。
ハンドシェイク成功後は、振り分けの問題と通信の問題を切り分ける
ハンドシェイクの成功が示すのは、両端で必要なネゴシエーションが完了したことだけです。すべての宛先アドレスがトンネル経由になること、DNSが期待どおりに名前を解決すること、接続先のサービスが必ず利用できることまでは保証しません。まずHomeでConnectivity Testを使って状況を確認し、宛先を明確に指定して再テストします。特定の宛先だけ失敗する場合は、その宛先がAllowedIPsの範囲内か、現在のGlobal Routingがリクエストを選択中の接続に渡しているかを確認してください。
Config
推奨設定内のルールに従って、リクエストの接続先を決めます。特定の宛先を調べるときは、その宛先に一致したルールと最終的なアクションを確認してください。WireGuardのハンドシェイクが成功しただけでは、ルールの適用結果は判断できません。
適した用途:日常的にルールに沿って使い、振り分け結果を個別に確認する場合。
Proxy
リクエストを一時的に選択中のプロキシ接続へ送ります。現在のルール経路に問題があるかを切り分ける際に使えます。テスト前に、WireGuardの設定自体が接続可能であることを確認してください。
適した用途:ルールによる振り分けと接続自体を短時間で比較する場合。
Direct
リクエストを直接接続します。このモードのままでは、宛先へのアクセス結果をWireGuardの通信が正常かどうかの判断材料にできません。
適した用途:直接接続との比較を行い、テスト後に必要なモードを再確認する場合。
Configを使用している場合、DOMAIN-SUFFIX、GEOIP、IP-CIDR、FINALなどのルールキーワードは、それぞれドメインのサフィックス、地理情報、IPアドレス範囲、最終的なフォールバック判定に関係します。まずテスト対象がどのルールに一致したかを確認してから、WireGuardを調べる必要があるか判断してください。すべての宛先で通信できない場合はPeerのパラメータを優先して見直し、一部のドメインだけ失敗する場合はDNSの応答、ルールの一致結果、宛先アドレスの範囲を比較します。
テストが終わったら、一時的に変更したGlobal Routing、MTU、DNSの設定を、検証済みの値に戻してください。秘密鍵の原文を含めずに、障害の記録も保存しておきます。次に「ハンドシェイクはできるのにアクセスできない」という問題が起きたとき、ネットワーク、宛先、設定変更を照合できるため、各項目の用途を一から推測する必要がありません。
正規の入手先を確認してから設定を続ける
Shadowrocketの入手先はApp Storeです。開発者はShadow Launch Technology Limited、アプリIDは932747118です。アプリは買い切り型です。接続に必要なサービス情報は、ご自身でご用意ください。このページは公式の使い方ガイドです。購入前にApp Storeの掲載情報をご確認ください。
正規アプリの確認ページへ 使い方を見る