
WS4Wは、WindowsでWireGuardサーバーエンドポイントを実行および管理できるデスクトップアプリケーションです。
Henry Changの投稿、WindowsでWireGuard VPNサーバーのセットアップ方法に触発された私の目標は、複雑なステップの多くを自動化および簡素化するアプリケーションを作成することでした。まだプラグアンドプレイソリューションではありませんが、このアイデアは、スクリプトを実行せず、レジストリの変更、またはコントロールパネルの入力なしに、1つずつ前提条件の各手順を実行できることです。
最新リリースはこちらから入手できます。インストーラーをダウンロードして実行します。
注:アプリケーションは、管理者として実行することを要求します。レジストリ、Windowsサービス、WG.EXEコールなどのすべての微調整により、アプリケーション全体を昇格させる方が簡単です。
インストーラーを導入する前に、WS4Wはポータブルアプリケーションとして配布されました。ポータブルバージョン(1.5.2以前)には、インストーラーバージョンへの自動アップグレードパスはありません。アップグレードするには、ダウンロードしたポータブルバージョンを削除して、インストーラーをダウンロードするだけです。構成設定は失われません。
以下は、このアプリケーションを使用して自動的に実行できるタスクです。

このステップは、https://download.wireguard.com/windows-client/wireguard-installer.exeからWindows用のWireGuardの最新バージョンをダウンロードして実行します。インストールすると、WS4Wから直接アンインストールできます。

ここでは、サーバーエンドポイントを構成できます。これらの各フィールドの意味については、WireGuardドキュメントを参照してください。秘密鍵と公開キーは、それぞれwg genkeyとwg pubkey [private key]を呼び出すことによって生成されます。 (オプションで独自の秘密鍵を提供できます。)
注:サーバーのネットワーク範囲は、ホストシステムのIPアドレスまたはLANネットワーク範囲と競合しないことが重要です。
サーバーエンドポイントの構成ファイルの作成/uDpatingに加えて、サーバー構成の編集は、 ScopeAddressレジストリ値( HKLMSYSTEMCurrentControlSetServicesSharedAccessParameters )も更新します。これは、インターネット共有機能を使用する際にWireGuardアダプターに使用されるIPアドレスです(ここで説明します)。したがって、サーバー構成のアドレスプロパティは、クライアントの許容アドレスと、インターネット共有の実行時にWindowsがWireGuardアダプターに割り当てるIPを決定するのに役立ちます。注インターネット共有が最初に実行された時点で、IPアドレスはScopeAddressから取得されます。つまり、構成内でサーバーのIPアドレスが変更されている場合(したがって、 ScopeAddressレジストリ値が更新されます)、WireGuardインターフェイスは目的のサーバーIPを正確に反映しなくなります。したがって、WS4Wはインターネットを再株するように促します。キャンセルされた場合、インターネットの共有は無効になり、手動で再利用する必要があります。
重要:ルーターでポート転送を構成する必要があります。サーバーエンドポイントポート(デフォルト
51820)に向けられたすべてのUDPトラフィックをサーバーのLAN IPに転送します。すべてのルーターが異なるため、ここで特定のガイダンスを提供することは困難です。例として、Verizon Quantum Gatewayルーターでポート転送ルールがどのように見えるかを以下に示します。
エンドポイントプロパティをパブリックIPv4、IPv6、またはドメインアドレスに設定し、その後に転送したポートを使用する必要があります。 Detect Public IP Addressボタンは、ipify.org APIを使用してパブリックアドレスを自動的に検出しようとします。ただし、可能であれば、DDNSのドメイン名を使用することをお勧めします。そうすれば、パブリックIPアドレスが変更された場合、クライアントは再構成なしでサーバーエンドポイントを見つけることができます。

ここでは、クライアントを構成できます。アドレスは手動で入力することも、サーバーのネットワーク範囲に基づいて計算することもできます。たとえば、サーバーのネットワークが10.253.0.0/24の場合、クライアント構成は10.253.0.2が有効なアドレスであると判断できます。範囲の最初のアドレス(この例では、 10.253.0.1 )はサーバー用に予約されていることに注意してください。 DNSはオプションですが、推奨されます。 DNS検索ドメインを追加できます(DNSサフィックスとも呼ばれ、詳細をご覧ください)。最後に、秘密鍵、公開キー、およびPresharedキーは、 wg genkey 、 wg pubkey [private key] 、およびwg genpskを使用して生成されます。 (独自の秘密鍵を指定できます。Presharedキーはオプションであり、生成されたユニークなクライアントであり、サーバーの構成と共有されます。詳細については#34を参照してください。)
WireGuardに少し癖があるため、クライアントPresharedキーを削除してサーバー構成を同期する場合、WireGuardはクライアントがPSKに接続することを期待します。したがって、WS4Wでは、クライアントからプレシャ化されたキーフィールドをクリアすることはできません。代わりに、PSKを削除するためにクライアントを削除して再作成します。
構成したら、QRコードを介して選択したクライアントアプリに構成を簡単にインポートするか、 .confファイルをエクスポートします。

セキュリティのために、サーバー上のクライアントのプライベートキーを保持したくない場合があります。その場合、クライアント構成を保存する前に、秘密のキーフィールドをクリアできます。ただし、留意すべきことは2つあります。
サーバーとクライアントが構成されたら、トンネルサービスをインストールすることができます。これにより、 wireguard /installtunnelserviceコマンドを使用してWireGuard用の新しいネットワークインターフェイスが作成されます。設置後、トンネルもWS4W内で直接除去することができます。これはwireguard /uninstalltunnelserviceコマンドを使用します。
このステップを完了した後、WireGuardのクライアントは、サーバーで成功した握手を実行する限り得ることができるはずです。
注:トンネルサービスのインストール後にサーバーの構成が編集された場合、トンネルサービスは
wg syncconfコマンドを介して自動的に更新されます(新しく保存されたサーバー構成が有効な場合)。これは、クライアントの構成にも当てはまります。多くの場合、サーバーの構成を更新する更新が行われます(たとえば、新しいクライアントが追加された場合、サーバー構成はこの新しいピアに注意する必要があります)。
トンネルサービスがインストールされた後でも、一部のプロトコルがブロックされる場合があります。ネットワークプロファイルをPrivateに変更することをお勧めします。これにより、ネットワーク上のWindowsの制限が容易になります。
また、このステップでは、Windowsタスクを作成して、ネットワークをブートで自動的にプライベートにすることができます。ドロップダウンを介してタスクを無効にする場合があります。
注:共有インターネット接続がドメインネットワークから発信されるシステムでは、WireGuardインターフェイスが共有ドメインネットワークのプロファイルをピックアップするため、このステップは必要ありません。
最後のステップは、WireGuardインターフェイスを介して行われたリクエストがプライベートネットワークまたはインターネットにルーティングできるようにすることです。そのためには、Windowsマシン上の「リアル」ネットワークアダプターの接続を仮想ワイヤーガードアダプターと共有する必要があります。これは、2つの方法のいずれかで実行できます。
最初のオプションは、一部のシステムでのみ使用できます(以下を参照)。 2番目のオプションは必要に応じて使用できますが、いくつかの注意事項があります(インターネット接続がWireGuardアダプターと共有されている場合、他のアダプターと共有できません。#18を参照)。インターネット共有で複数の問題が報告されているため、利用可能な場合はNATルーティングを使用する必要があります。
これらのオプションは相互に排他的です。
ここでは、WireGuardインターフェイスにNATルーティングルールを作成して、プライベート/パブリックネットワークと対話できるようにすることができます。具体的には、次のコマンドが呼び出されます。
New-NetIPAddressは、WireGuardアダプターで呼び出され、サーバー構成のアドレスプロパティの範囲で静的IPを割り当てます。New-NetNat WireGuardアダプターに新しいNATルールを作成するために呼び出されます。New-NetIPAddressを呼び出すために作成されます。NATルーティングには少なくともWindows 10が必要であり、有効にするオプションは、Windowsの古いバージョンのアプリケーションにも表示されません。ただし、Windows 10を使用しても、NATルーティングが常に機能するとは限りません。 Hyper-Vを有効にする必要がある場合がありますが、アプリケーションにプロンプトが表示されますが、WindowsのPro以上(つまり、ホームではなく)バージョンも必要です。最終的に、アプリケーションがNATルーティングを有効にすることができない場合、代わりにインターネット接続共有を使用することをお勧めします(以下)。 NATルーティングサポートに関する完全な議論については、#30を参照してください。

NATルーティングが利用できない場合は、インターネット共有を使用して、ワイヤガードインターフェイスへのネットワーク接続を提供できます。このオプションを構成するとき、共有するネットワークアダプターを選択できます。ステータスがConnectedいるアダプターでのみ機能し、インターネットまたはLANアクセスを提供するアダプターにのみ役立つ可能性が高いことに注意してください。共有するアダプターを選択するときは、メニュー項目の上にホバリングして、アダプターに割り当てられたIPアドレスを含む詳細を取得して、共有したいものかどうかを判断します。
注:インターネット共有を実行するとき、WireGuardアダプターは
ScopeAddressレジストリ値からIPを割り当てられます(HKLMSYSTEMCurrentControlSetServicesSharedAccessParameters)。この値は、サーバー構成のアドレスプロパティを更新するときに自動的に設定されます。こちらをご覧ください。
Windowsには、再起動後にインターネット共有が無効になる原因となる問題があります。 WireGuardサーバーを無人のままにすることを目的としている場合、再起動後に相互作用が必要ないように、永続的なインターネット共有を有効にすることをお勧めします。
この機能を有効にすると、Windowsで2つのアクションが実行されます。
Internet Connection Sharingサービススタートアップモードは、 ManualからAutomaticに変更されます。HKLMSoftwareMicrosoftWindowsCurrentVersionSharedAccessのEnableRebootPersistConnection regstry値の値は1に設定されています(見つかっていない場合は作成されます)。これらの回避策があっても、再起動後にインターネット共有が無効になる可能性があります。したがって、もう1つのアクションが実行されます。 System BootでWS4W CLIを使用してインターネット共有を無効にし、再確実に可能にするスケジュールされたタスクが作成されます。これは、共有が有効になっていることを保証するのに十分でなければなりません。

トンネルが設置されると、ワイヤガードインターフェイスのステータスが表示される場合があります。これはwg showコマンドを介して実現されます。 Update Liveがチェックされている限り、継続的に更新されます。
ブートタスクの遅延を設定します
この設定により、ブートタスクの遅延を構成できます。これは、ロードが遅いアダプターに依存するタスクに役立ちます。この値を変更した後、タスクを無効にし、再有効にする必要があることに注意してください。

ws4w.exeと呼ばれるポータブルダウンロードには、端末から呼び出されるか、スクリプトから呼び出されるCLIがバンドルされています。 Standard Outに書かれたメッセージに加えて、CLIは、指定されたコマンドの実行の成功に基づいてExitコードも設定します。たとえば、PowerShellでは、 echo $lastexitcodeで出口コードを印刷できます。
注:CLIは、上記と同じ理由で管理者としても実行する必要があります。
CLIには動詞、またはトップレベルのコマンドを使用します。各コマンドには、独自のオプションセットがあります。すべての動詞またはws4w.exe verb --helpのリストのws4w.exe --helpを実行できます。
ws4w.exe restartinternetsharing [--network <NETWORK_TO_SHARE>]--networkオプションは、どのネットワークWS4Wが共有するかを指定するために渡される場合があります。--networkが渡されない限り)。--networkオプションを渡す必要があります。--networkオプションに合格する必要があります。そうしないと、共有するネットワークを知る方法はありません。このコマンドは、永続的なインターネット共有が有効になったときに作成されるスケジュールされたタスクによって使用されます。
ws4w.exe setpathPATH環境変数に追加するように指示されます。このコマンドは、「CLIへの追加パス」オプションが選択されている場合、インストーラーによって使用されます。
ws4w.exe setnetipaddress --serverdatapath <PATH_TO_SERVER_CONFIG>Set-NetIPAddressを呼び出すように指示されます。このコマンドは、NATルーティングが有効になったときに作成されるスケジュールされたタスクによって使用されます。
ws4w.exe privatenetworkこのコマンドは、プライベートネットワークが有効になったときに作成されるWindowsタスクによって使用されます。
まず、利用可能な場合はNATルーティングを使用することをお勧めします。
ただし、インターネット共有を有効にするときに次のエラーメッセージが発生した場合は、次の手順を実行してください。

wg_serverを選択します。注:この問題は、VM用の新しい仮想スイッチを作成した後にトリガーされることがよくあります。マニュアルの回避策は、その後1回のみ必要であり、仮想スイッチには影響しません。
WS4Wはテストされており、Windows Server(2012 R2およびNewer)およびWindowsデスクトップ(10以降)で動作することが知られています。
WireGuardは、Jason A. Donenfeldの登録商標です。
www.flaticon.comからFreepik製のアイコン。