ShadowrocketのWireGuard設定方法|秘密鍵・Peer公開鍵・Allowed IPs・MTUを解説

WireGuardの鍵ペアとPeerの基本を解説。ShadowrocketでのPrivate Key、Public Key、Pre-shared Key、Allowed IPs、MTUの入力場所と、接続への影響を紹介します。

この記事の概要

HomeでWireGuardを追加する前に、利用中のサービスから提供された設定情報一式を用意します。この記事では、ローカルの識別情報、リモートPeer、アドレス範囲、MTU、接続確認の順に入力方法を説明します。クライアントの秘密鍵とリモートの公開鍵の違いに加え、「保存できた」「VPNアイコンが表示された」「通信できた」はそれぞれ別の状態であることも解説します。既存のサブスクリプションを利用している場合は、インポート後の項目確認にも活用できます。

1. ローカルのInterfaceとリモートPeerを区別する

Homeで既存のWireGuard項目の編集画面を開き、まず元の設定にある[Interface]と[Peer]を分けて確認します。前者はローカルのトンネル識別情報とアドレス、後者は通信相手を示します。Shadowrocketでは同じ編集画面にまとめて表示される場合がありますが、項目の役割は異なるため、表示順にそのままコピーしないでください。

Private Keyにはローカルのクライアント秘密鍵を入力し、リモートPeerに対応するPublic Keyにはサーバーの公開鍵を入力します。サーバー側にも、このクライアント秘密鍵に対応する公開鍵を登録する必要があります。双方の識別情報が正しく対応して初めて、想定どおりの暗号化通信が確立します。クライアントの公開鍵をリモート公開鍵の欄に入力しても、形式が正しいだけでは本人確認できません。

32バイト
WireGuardの鍵の元の長さ。設定では通常Base64形式で表されます
UDP
WireGuardの外側の通信に使うポート。リモートの待受ポートと一致させます
51820
例としてよく使われるポートであり、すべてのサービスで固定されているわけではありません

元の設定でEndpoint = 203.0.113.10:51820と表示されている場合、Addressにはリモートアドレス、Portにはポート番号を入力します。このアドレスは文書用の例示範囲に属しており、実際の接続には使えません。[Interface]のトンネルアドレスをリモートAddressに入力しないでください。また、よく見かけるポート番号だからといって、サービス提供元が指定した別のポートを置き換えないでください。

2. HomeでWireGuardを追加して各項目を保存する

Homeの右上にある+をタップし、Add Serverを開いてTypeをWireGuardに設定してから各項目を入力します。以下は手動確認の順序です。画面のレイアウトによって一部の詳細項目が折りたたまれている場合もあるため、表示内容は現在の編集画面で確認してください。元の設定にあるキー名とフォームの項目名は完全には一致しないことがあります。たとえば、PresharedKeyはPre-shared Keyに対応します。

  1. 種類を選択

    Home → + → Type → WireGuardの順に開きます。先にプロトコルを選択してから情報を入力し、WireGuardの鍵を別のプロトコルのPassword欄に入れないようにします。

  2. 接続先を入力

    PeerのEndpointをAddressとPortに分けて入力します。元の値にIPv6アドレスが含まれる場合は、フォームの指定に従ってアドレスとポートを別々に入力し、ポート区切り用の角括弧を通常のアドレス値に含めないでください。

  3. 識別情報を入力

    Private Keyにはローカルの秘密鍵を、Peerに対応するPublic Keyにはリモートの公開鍵を入力します。元の設定にPre-shared Keyが含まれている場合は、双方で合意した同じ値を入力します。

  4. アドレスを確認

    InterfaceのAddressをローカルトンネルアドレスの項目に対応させ、IPv4、IPv6、プレフィックス長を確認します。MTUは既存の設定値を入力してください。ローカルトンネルアドレスをDNSやリモートサーバーのアドレスとして使わないでください。

  5. 保存して接続を確認

    保存後、Homeに戻って該当項目を選び、接続を開始します。初回にシステムのVPN構成追加許可が表示されたら、内容を確認して許可します。その後、該当項目を経由することが明確なリクエストで接続を確認してください。保存できたことだけでは、接続可能とは判断できません。

3. Private Key、Public Key、Pre-shared Keyの対応関係

編集画面で鍵を確認する際は、元の設定全体からコピーし、前後の空白や改行、末尾の文字の欠落を避けてください。Private Key、Public Key、Pre-shared Keyは、いずれも似た長さのBase64文字列で表示されることがありますが、見た目が似ていても互換性はありません。サーバーの秘密鍵をクライアントにコピーしてはいけません。クライアントに必要なのはサーバーの公開鍵です。

ローカルの識別情報

Private Key
このクライアントの識別情報に使うローカル秘密鍵です。
クライアント公開鍵
ローカル秘密鍵から生成され、サーバーにこのクライアントPeerを登録するために使います。
Interface Address
トンネル内のアドレス。たとえば文書上の例では10.66.0.2/32ですが、実際の値は既存の設定で確認してください。
変更時の影響
ローカル秘密鍵を変更した場合、サーバー側にも新しいクライアント公開鍵を登録する必要があります。

ローカル秘密鍵はローカルの識別情報にのみ使用します。他の利用者に渡したり、問題調査用のスクリーンショットに含めたりしないでください。

リモートPeer

Public Key
通信相手の識別に使う、リモートサーバーの公開鍵です。
Pre-shared Key
任意で設定する追加の共有鍵です。有効にする場合は両端で同じ値にします。
Endpoint
リモートから到達可能なホストアドレスとUDPポートです。AddressとPortに対応します。
Allowed IPs
このPeerに関連付ける宛先または送信元アドレスのプレフィックス範囲であり、接続先アドレスではありません。

元の設定にPre-shared Keyがない場合は、値を自分で作って入力しないでください。

調査記録には、項目の有無、アドレスプレフィックス、ポートなど必要な情報だけを残し、Private Key、Pre-shared Key、サブスクリプションURL全体は隠してください。Public Keyは秘密鍵ではありませんが、特定の設定を識別する手がかりになることがあります。公開の場で共有する際も、必要最小限の情報にとどめてください。

4. Allowed IPsとGlobal Routingの役割

利用中のWireGuard設定で、[Peer]内のAllowedIPsを確認します。これはPeerに関連付けるIPプレフィックスを示します。送信時は、このPeerに渡せる宛先範囲を選び、受信時はPeerが使用できる内側の送信元アドレスを制限します。実装によっては、これを基にルートが作成されるため、単なるメモ項目として扱わないでください。

Shadowrocketでは、まずGlobal RoutingとConfigのルールで各リクエストに使うポリシーを決め、そのうえでWireGuard項目が対象の通信を処理できるかを確認します。両者は別のレイヤーです。WireGuardの編集画面にAllowed IPsがある場合は元の値と照合してください。項目がない場合はAddress、Public Keyなど無関係な欄に入力せず、元の設定のルーティング動作がConfigのルールにすべて自動で反映されるとも考えないでください。

設定値対象範囲確認ポイント
0.0.0.0/0IPv4の全宛先範囲IPv6は含まれません。また、Shadowrocketのすべてのリクエストが必ずこの項目を使うという意味ではありません。
::/0IPv6の全宛先範囲トンネルアドレス、リモート側の転送設定、通信経路がIPv6に対応している必要があります。
10.66.0.0/24指定したIPv4サブネットアドレス範囲の例にすぎません。利用者に実際に割り当てられたネットワークの代わりにはなりません。

Home → Global Routingで確認するときは、以下の2つの設定方法で「項目自体が使えるか」と「ルールでその項目が選ばれているか」を切り分けられます。通常の利用方法は既存の設定に合わせてください。Global RoutingのDirectはプロキシ項目を経由せず、Sceneは状況に応じた選択に使います。どちらもAllowed IPsのアドレス範囲とは別のものです。

Config:既存のルールに従う

推奨

現在のConfigにあるルールとポリシーに従ってリクエストを処理します。DOMAIN-SUFFIX、GEOIP、IP-CIDR、FINALがどのポリシーを指定しているかを確認し、対象のリクエストで該当するWireGuard項目が選択されることを確かめてください。

適したケース:ルール設定があり、宛先ごとに通信を振り分けて日常利用する場合。

Proxy:ルールの影響を切り分ける

一時的に現在選択中のプロキシを使ってリクエストを確認し、Configのルール選択による影響を減らします。この方法でも、鍵の誤り、到達できない接続先、リモート側の転送設定の問題は解決しません。また、あらゆる種類の通信が使えるようになるわけではありません。

適したケース:選択中の項目を短時間確認し、検証後に元の設定へ戻す場合。

5. MTUの設定:まず元の値を維持し、経路の問題を確認する

WireGuardの編集画面でMTUを見つけたら、まず既存の設定値を維持してください。MTUはトンネル内の1つのIPパケットのサイズを制限します。WireGuardの外側のカプセル化にも追加の領域が必要となるため、トンネル内で使えるサイズは通常、基盤となるリンクのMTUより小さくなります。Wi-Fiやモバイル回線の値をそのまま流用しないでください。

接続は確立できて短いリクエストも完了するのに、大きな応答だけ停止する場合に限り、経路MTUを原因候補の一つとして検討します。「サイトが開かない」というだけではMTUの問題とは判断できません。DNS、リモート側の出口、ルーティングの選択でも似た症状が起こります。よく見かける1420は調整の出発点にすぎず、すべてのネットワークに適用できる固定値ではありません。

6. 症状別の確認:保存できてもアクセスできない場合

Homeで保存したWireGuard項目を選択したら、まず接続スイッチと、実際のリクエストに使われているポリシーを確認してから、通信結果を調べます。システムにVPNアイコンが表示されるのは、該当するネットワーク拡張機能が動作中であることを示すだけで、リモート側とのハンドシェイク完了を意味しません。WireGuardはアイドル時に通信が継続して発生するとは限らないため、再現可能なテストリクエストを自分で送信してください。

確認された症状優先して確認する項目次に行うこと
保存時に項目の形式エラーが表示される鍵が欠けていないか、ポートが数字か、アドレス形式が正しいかを確認します。元の設定と照合しながら各項目を貼り付け、余分な空白を削除します。鍵を新たに作らないでください。
接続後、リクエストがタイムアウトし続けるEndpoint、UDPでの到達性、リモート公開鍵、サーバーに登録されたクライアント公開鍵を確認します。設定値を変えず、利用可能な別のネットワークでもう一度テストし、利用中のサービス提供元にハンドシェイク記録を確認してもらいます。
リモート側でハンドシェイクを確認できてもアクセスできないローカルトンネルアドレス、Allowed IPs、リモート側の転送設定、出口設定を確認します。まずアドレスの割り当てを確認し、宛先に到達できない問題とドメイン名の名前解決の失敗を切り分けます。
一部のドメインだけ失敗し、ほかのリクエストは正常DNSの結果、Configで適用されたポリシー、IPv4とIPv6の経路の違いを確認します。同じ宛先の名前解決と接続の記録を照合し、鍵の問題と決めつけないでください。
小さな応答は正常だが、大きな応答が停止する経路MTU、パケットロス、リモート側の回線状況を確認します。元の値を記録してから、MTUだけを変えて比較します。1回のリクエストだけで結論を出さないでください。

Settings → On Demandで自動接続の条件を確認します。手動で切断しても条件によって再接続され、テスト状況を誤認することがあります。On Demandは接続を開始するタイミングを制御するもので、WireGuardの設定値を修正する機能ではありません。確認が終わったらGlobal RoutingとOn Demandを元の状態に戻し、有効だった設定値を記録してください。

7. 保存前の最終確認とクライアントの入手方法

項目の編集画面に戻り、以下のチェックリストで最終確認してから設定を保存します。既存のサブスクリプションから追加した項目は、次回更新後も重要な値がサーバー側と一致しているか確認してください。手動で変更した値とサブスクリプションの内容の違いは、利用者自身で記録・管理する必要があります。

Shadowrocketを入手するには、まず当サイトの正規アプリ確認ページを開き、その後App Storeに進みます。開発元はShadow Launch Technology Limited、アプリIDは932747118です。Shadowrocketは買い切りのクローズドソース商用アプリです。アプリの購入と通信サービスの契約は別であり、接続設定は利用者がすでに使っているサービスから提供されます。主にiPhoneとiPadで利用できます。ほかのApple製デバイスとの互換性およびシステム要件は、App Storeの掲載内容をご確認ください。

App Storeの正規アプリはこちら開発元とアプリIDを確認