ShadowrocketでWireGuardを設定する際は、まず端末側のInterfaceと接続先のPeerを区別します。端末側のPrivate KeyとトンネルアドレスはInterfaceから、接続先のPublic Key、Endpoint、Allowed IPsはPeerから確認します。この記事では、利用中のサービスと設定情報が手元にあることを前提に、各項目の対応関係、追加手順、接続できない場合の確認順を説明します。記載するアドレスは形式の説明用であり、実際の接続には使用できません。
1. InterfaceとPeerの役割を確認する
WireGuardはアカウントとパスワードでログインするのではなく、鍵ペアで通信相手を識別します。サービスから提供される設定ファイルには、通常 [Interface] と [Peer] の2つのセクションがあります。ここでいう「端末側」はこのクライアント設定を使うデバイス、「接続先」は接続するサーバーを指します。転記する際はこの関係を保ち、Public Keyを見つけても端末側の公開鍵を接続先の公開鍵欄に入力しないでください。
設定セクションから端末側と接続先を見分ける
Interface:端末側の情報
PrivateKey:端末側の秘密鍵です。外部に漏らさないでください。Address:端末に割り当てられたトンネルアドレスです。CIDRプレフィックス長が付く場合があります。MTU:トンネルインターフェースの最大転送単位です。指定されていない場合もあります。DNS:設定ファイルに記載された名前解決用サーバーの情報です。接続先アドレスではありません。
Peer:接続先の情報
PublicKey:接続先の公開鍵です。通信相手の識別に使います。Endpoint:接続先のドメイン名またはIPアドレスとUDPポートです。AllowedIPs:このPeerに対応する宛先IPアドレスの範囲です。PresharedKey:任意の事前共有鍵です。使用する場合は双方で同じ値にします。
各項目の対応は、端末用に提供されたクライアント設定を基準にしてください。サーバー側の設定をそのまま転記しないでください。
たとえば、クライアント設定の Address = 10.66.0.2/32 は、トンネル内で端末が使うIPv4アドレスを示します。一方、Endpoint = 192.0.2.10:51820 は通信時に接続する相手のアドレスです。両者を入れ替えても、正しい接続先にもトンネル内の送信元アドレスにもなりません。
2. Private KeyとPublic Keyの入力先
ShadowrocketのWireGuard編集画面では、Private Keyにはクライアント設定の [Interface] にある PrivateKey を入力し、PeerのPublic Keyにはクライアント設定の [Peer] にある PublicKey を入力します。画面上の項目名にはスペースがありますが、設定ファイル内のキーワードにスペースがないだけで、意味は同じです。
端末側の鍵を確認
- 確認元
- クライアント設定の [Interface]
- Private Key
- PrivateKeyの値を省略せずにコピー
- 端末側のPublic Key
- 端末側の秘密鍵から生成され、接続先への登録に使用
- 取り扱い
- 秘密鍵をスクリーンショット、チャット、公開文書に載せない
秘密鍵を自分で変更すると端末の識別情報も変わるため、接続先に登録されているクライアント公開鍵も更新する必要があります。
接続先の鍵を確認
- 確認元
- クライアント設定の [Peer]
- Public Key
- 該当PeerのPublicKeyを省略せずにコピー
- Preshared Key
- 設定情報に明記されている場合のみ入力
- 対応関係
- 接続先の公開鍵は、現在のEndpointがあるサービスに対応したものを使用
公開鍵と事前共有鍵は別の項目です。相互に置き換えることはできません。
WireGuardの鍵は大文字と小文字を区別します。一般的なテキスト形式は44文字のBase64文字列で、末尾に = が付く場合があります。コピーする際は PrivateKey = のような項目名を含めず、末尾の文字も省略しないでください。形式上の長さが合っていても、サーバーに登録された鍵と一致するとは限りません。
3. Endpoint・トンネルアドレス・MTUの入力
Endpointには接続先のアドレスとUDPポートの両方が含まれます。編集画面でアドレスとポートが別欄になっている場合は、それぞれ分けて入力してください。「アドレス:ポート」を、アドレスのみを受け付ける欄にまとめて入力しないでください。51820はよく使われるポートの例で、すべてのWireGuardサービスで固定されているわけではありません。実際の値は手元の設定情報に従ってください。
| 設定項目 | 形式の例 | 入力・確認のポイント |
|---|---|---|
| Endpoint | 192.0.2.10:51820 |
分けて入力する場合、アドレスは192.0.2.10、ポートは51820です。通信にはUDPを使用します。 |
| IPv6 Endpoint | [2001:db8::10]:51820 |
完全なEndpointでは、角括弧を使ってアドレスとポートを区別します。アドレス専用欄には、その欄が受け付ける形式で入力してください。 |
| Address | 10.66.0.2/32 |
端末側のトンネルアドレスです。画面上でアドレスとプレフィックス長が別欄になっている場合は、それぞれ入力してください。 |
| AllowedIPs | 10.66.0.0/24 |
そのPeerに対応するアドレス範囲です。端末側のアドレスでも、ドメイン名の一覧でもありません。 |
| MTU | 1420 |
単位はバイトです。ここに示す数値は説明用で、あらゆるネットワークに適用できる固定値ではありません。 |
| PersistentKeepalive | 25 |
単位は秒です。定期的にKeepaliveパケットを送る間隔を示します。編集画面に該当項目がある場合は、設定情報に従って入力してください。 |
MTUはトンネル内の1パケットのサイズに影響します。値が大きすぎると、一部の経路で小さなリクエストは通るのに大きなレスポンスが止まることがあります。ただし、DNS、接続先のサービス、パケットロスなどが原因の可能性もあります。サービス指定の値があればそのまま使い、指定がなければアプリの初期値を維持してください。あらゆる不具合に対して、まずMTUを下げるのは避けてください。
- MTUを試験的に変更する場合は、最初に元の値を記録し、一度に変更するのはこの項目だけにします。再接続後、同じテスト先に再度アクセスしてください。
- 現在の値が1420の場合、1380を小幅な調整のテスト値として試せます。改善しなければ、値を下げ続けるのではなく元に戻してください。
- 設定ファイルのDNSアドレスをEndpointに入力しないでください。また、サーバー追加時にファイル内のDNS設定がすべて自動適用されるとは限りません。
4. Allowed IPsとShadowrocketのルールによる振り分けは別の設定
AllowedIPsは、WireGuardでのPeer選択と受信アドレスの検証の両方に関係します。トンネルへ送る通信では、宛先アドレスに対応するPeerを決めるために使います。受信した通信では、復号後の送信元アドレスがそのPeerに許可された範囲内かを確認します。対象はIPネットワークのみで、example.comのようなドメイン名は指定できません。
0.0.0.0/0はすべてのIPv4アドレスを、::/0はすべてのIPv6アドレスを対象にします。ただし、これだけでShadowrocketがすべてのアプリ通信をこのサーバーに送るわけではありません。まずGlobal RoutingのモードとConfigのルールが通信経路に影響し、通信が実際にWireGuardへ送られた後、対象アドレスがそのPeerのAllowed IPsに含まれている必要があります。
Config:ルールに従って通信
推奨現在のConfigにあるルールに従って通信先を選択します。通常の設定に戻す前に、対象の通信が意図したサーバーまたはポリシーグループに向かうルールになっているか、FINALのフォールバック先も確認してください。
適した用途:ルールを用意しており、直接接続とプロキシ経由の通信を明確に分けたい場合。
Proxy:ルールの影響を一時的に切り分ける
適用対象のプロキシルーティング範囲で通信を一律にプロキシ経由にします。Configの振り分けがテストに与える影響を減らせますが、鍵の誤りを修正したり、接続先で実際に到達できるネットワーク範囲を広げたりする機能ではありません。
適した用途:サーバー設定を確認したうえで、ルールに一致せず直接接続になっている可能性を一時的に調べる場合。
Direct:直接接続
通信は直接接続を使います。この状態でインターネット上のWebページを開けても、WireGuardサーバーの設定に成功した証拠にはなりません。また、接続先のプライベートネットワークに到達できるかどうかも判断できません。
適した用途:ローカルネットワークから同じインターネット上のテスト先にアクセスできるか確認する場合。
サービスで 10.66.0.0/24 へのアクセスのみが許可されている場合、インターネット上のWebページを試すためにAllowed IPsを勝手にIPv4・IPv6の全アドレス範囲へ変更しないでください。クライアントが変更を受け付けても、接続先でインターネットへの転送やIPv6ルーティングが提供されていなかったり、必要なアクセス権がなかったりする場合があります。設定情報でアクセスが許可されている宛先を使って接続を確認してください。
5. HomeでWireGuardを追加して接続を確認する
追加する前に元の設定情報を保管し、現在のGlobal Routingも記録してください。Homeのサーバー項目、Configのルールファイル、Settingsのアプリ設定はそれぞれ別のものです。サーバー項目を追加しても、ルールファイルが切り替わるわけではありません。以下では手動入力の手順を説明します。編集画面で利用できる項目は、アプリに表示される内容を確認してください。
-
設定情報を確認
クライアント設定にInterfaceの秘密鍵とアドレス、Peerの公開鍵、Endpoint、Allowed IPsが含まれていることを確認します。Preshared KeyやMTUが指定されている場合は、それも記録し、設定ファイルの一部だけをコピーしないようにしてください。
-
種類を選択
Home → 右上の「+」→ Type → WireGuardの順に進みます。最初にTypeを確認し、WireGuardの公開鍵を別プロトコルのPassword欄に入力しないようにしてください。
-
各項目を入力
端末側と接続先の情報を分けて入力します。Endpointのアドレスとポートを編集画面の該当欄に入力し、Private Key、Peer Public Key、トンネルアドレス、および利用可能な追加項目を確認してください。
-
保存して選択
保存してHomeに戻り、追加したサーバーをタップして左側に選択マークが表示されていることを確認します。現在のルールでポリシーグループを使っている場合は、Homeの既定の選択だけでなく、そのグループで実際に選択されているサーバーも確認してください。
-
接続をテスト
Homeの接続スイッチをオンにします。初回は、システムの案内に従ってVPN構成の追加を許可してください。Connectivity Testでテスト先への接続結果を確認し、サービスでアクセスが許可されている宛先にもアクセスしてみます。
-
設定を元に戻す
トラブルシューティングのためにGlobal Routingを一時変更した場合は、確認後に元のモードへ戻してください。Settings → On Demandでオンデマンド接続の設定を確認し、切り分け中に自動接続や切断が発生して手動テストに影響しないようにします。
6. よくある問題:端末・経路・宛先を順に確認
秘密鍵と公開鍵を入力したのに、タイムアウトするのはなぜ?
まずPublic Keyが端末側の公開鍵ではなく、クライアント設定のPeerから取得したものか確認してください。次にEndpointのアドレス、UDPポート、Preshared Keyを確認します。WireGuardはアカウントログインのように「パスワードが違います」と応答する仕組みではありません。タイムアウトはUDP経路が通らない場合にも起きるため、この症状だけで鍵の誤りと判断しないでください。
Wi-Fiを変えると使えなくなるのはなぜ?
同じサーバー、同じ宛先、同じGlobal Routingのまま、Wi-Fiとモバイル通信をそれぞれ試します。複数の条件を同時に変更しないでください。一方のネットワークだけで失敗する場合は、そのネットワークからのUDP到達性、Endpointの名前解決、経路のMTUを優先して確認し、次にSettings → On Demandでネットワークごとに異なる動作が設定されていないか調べてください。
IPアドレスではアクセスできるのに、ドメイン名では開けない場合は?
まず、どちらのアクセスも同じサービスに接続しているか確認します。次に、現在のConfigのDNS設定とドメインルールを確認してください。IPアドレスへの直接アクセスとドメイン名でのアクセスでは、異なるルールが適用される場合があります。また、TLS証明書の名前が異なることで結果が変わることもあります。この状況だけを根拠に、Peerの公開鍵や接続先ポートを変更しないでください。
同じ設定をiPhoneとiPadの両方で使えますか?
複数端末で使えるかどうかは、利用中のサービスの設定によります。2台で同じ秘密鍵とトンネルアドレスを同時に使うと、接続先が認識する通信エンドポイントが頻繁に切り替わり、一方が復旧するともう一方が切断されることがあります。同時に接続する必要がある場合は、利用中のサービスに端末ごとの識別情報とトンネルアドレスを割り当てられるか確認してください。
Allowed IPsにすべてのアドレスを指定したのに、Webサイトが直接接続されるのはなぜ?
Homeに戻ってGlobal Routingを確認し、次にConfigで現在有効なファイルのDOMAIN-SUFFIX、IP-CIDR、FINALなどのルールと適用先を確認してください。Allowed IPsはアプリレベルの通信振り分けを上書きしません。対象がルールによってDIRECTに送られていれば、このWireGuard経路には入りません。
7. 保存前の最終確認と機密情報の取り扱い
同じ条件で再現できるテストを一度行ったら、元の設定と最終的に使用する値の対応を記録しておきます。手動編集、再読み込み、既存の購読設定の更新後は、実際の項目をもう一度確認してください。ローカルで編集した値が次回の更新後も保持されるとは限りません。接続先や鍵が変更された場合は、利用中のサービスから届いた最新の設定情報を確認してください。
- 識別情報の一致:端末側のPrivate Keyと接続先に登録されたクライアント公開鍵が対になっており、Peer Public Keyが現在の接続先に対応していること。
- アドレスの確認:Endpointは接続先への入口、Addressは端末側のトンネルアドレス、Allowed IPsはPeerに対応するIPネットワークの範囲です。
- 経路を記録:テスト時のネットワーク、Global Routing、選択したサーバー、宛先アドレスを記録し、一度に変更する条件は1つだけにします。
- 元に戻せるようにする:MTU、ルール、接続モードを変更する前に元の値を記録します。テストに失敗したら、変更を重ねるのではなく元に戻してください。
- 機密情報を伏せる:問い合わせる際はPrivate Key、Preshared Key、既存の購読リンクに含まれる認証情報を削除してください。設定ファイルを共有する前にも同じ点を確認します。
ShadowrocketはAppleプラットフォーム向けの有料クライアントで、主にiPhoneとiPadで利用できます。入手先はApp Storeのみで、開発元はShadow Launch Technology Limitedです。アプリは買い切りですが、アプリの購入と通信サービスの契約は別です。システム要件と購入条件はApp Storeの表示をご確認ください。この記事では既存の設定情報の入力と確認方法を説明しており、サービスが許可するネットワークへのアクセス範囲を変更するものではありません。