Turnoutは、MacをWireGuardサーバーにwg-quickと同じやり方でつなぐ、ネイティブアプリです。

フックは実行され、ルートはあなたのまま。トンネルがどのネットワークインターフェイスから出ていくかも、あなたが選べます。

近日公開

最初の公開版を準備しています。それまではダウンロードできるものはありません。公開を知りたい方は、GitHubリポジトリをWatchするか、Releasesページをご覧ください。

接続中のトンネルを表示したTurnoutのメインウインドウ。経路はトンネルから、出ていくネットワークインターフェイスを経てサーバーまで続き、両方向に通信が流れています。
各トンネルには、リアルタイムの経路が表示されます。トンネル、出ていくネットワークインターフェイス、そしてサーバーです。サーバーが応答すると線が実線になり、パケットは通信量に合わせた速さで線の上を動きます。

構成ファイルはwg-quickのとおりに

Turnoutは、wg-quickで使っている.confファイルをそのまま読み込み、macOS上のwg-quickと同じ手順で、同じシステムツールを使って適用します。

PreUp PostUp PreDown PostDown
フックが実行されます。%iはトンネルのutunインターフェイスに、%Iはトンネル名に置き換えられます。ファイルのフックは、管理者が承認してから実行されます。その仕組み。
AllowedIPs
トンネルにルーティングされ、より具体的なものが優先されます。フルトンネルではデフォルトルートを置き換えず、0.0.0.0/1と128.0.0.0/1(とIPv6の半分ずつ)を使います。サーバーのアドレスは物理ゲートウェイ側に残るので、自分のトンネルに入り込むことはありません。
Table
autoとmainは上記のとおりにルーティングし、offはルーティングテーブルをあなたに任せます。
DNS
トンネルの接続中は、DNSサーバーと検索ドメインがネットワークサービスに設定され、接続を解除すると元の設定に戻ります。
MTU
書かれた値か、wg-quickと同じ計算で求めた値(出口インターフェイスのMTUから80を引いた値)を使います。

ネットワークインターフェイスを選ぶ

wg-quickの形式にはない2行です。#@で始まるのでwg-quickはコメントとして扱い、同じファイルをそのままwg-quick upでも使えます。

[Interface]
PrivateKey = …
Address = 10.8.0.2/32
DNS = 10.8.0.1
#@ BindInterface = en0
#@ Route = 192.168.0.0/16 dev en0

[Peer]
PublicKey = …
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = vpn.example.com:51820
#@ BindInterface = en0
暗号化された通信は、ほかのインターフェイスがデフォルトルートを持っていても、常にen0から出ていきます。サーバーへのルートもen0を通ります。
#@ Route = 192.168.0.0/16 dev en0
これらのネットワークはトンネルを通らず、en0自身のゲートウェイから出ていきます。カンマで区切って、必要なだけ並べられます。
AllowedIPs
それ以外はすべてトンネルに入ります。

接続中のトンネルの出口インターフェイスは、メインウインドウの経路から変更することもできます。Turnoutは接続を解除し、変更を保存して、もう一度接続します。

ネットワークの変化についていく

ゲートウェイ、インターフェイス、リンクが変わったときや、Macがスリープから復帰したとき、Turnoutは物理ネットワークを通るトンネルのルートを現在のゲートウェイに付け直し、自動MTUを計算し直し、DNSを適用し直します。

トンネルを固定したインターフェイスが一度なくなって戻ってくると、トンネルはそこに固定し直して、もう一度ハンドシェイクします。インターフェイスが戻らなければ、サーバーへのルートはブラックホールになり、ハンドシェイクがトンネル自身に入り込むことはありません。トンネルを通らないルートは、インターフェイスが戻るまで待機します。

自動で接続

トンネルには、スケジュール、Wi-Fiネットワークの一覧、またはその両方を設定できます。

スケジュールの時間帯が始まるとTurnoutはトンネルを接続し、終わると接続を解除します。一覧のネットワークにMacが接続するとトンネルが接続され、離れると接続が解除されます。その間に手動で行った操作はそのまま保たれ、ルールを変えただけで接続や接続解除が起きることはありません。

#@ Schedule = Mon-Fri 09:00-18:00
#@ OnWiFi = Office

ルールは構成ファイルの中の行で、トンネルのページから設定します。Turnoutは開いている間だけルールに従って動くので、“ログイン時に開く”を用意しています。Wi-Fiルールには位置情報へのアクセスが必要です。macOSはWi-Fiネットワークの名前を位置情報として扱うためです。Turnoutはルールを設定するときにアクセスを求め、起動時に求めることはありません。

トンネルの自動接続の設定:週ごとのスケジュールと、接続するWi-Fiネットワーク。
トンネルのスケジュールとWi-Fiネットワークは、そのトンネルのページで設定します。

ファイルを崩さないエディタ

トンネルはフォームでもテキストでも編集でき、いつでも切り替えられます。

変更は関係する行だけを書き換えるので、コメントや並び順はそのまま残ります。問題は行番号付きで一覧され、問題がなくなるまで“保存”はできません。新しいトンネルには、新しく生成した鍵ペアが付きます。

トンネルの構成をフォームで表示したTurnoutのエディタ。
フォームとテキストは、同じファイルの2つの表示です。

.confファイルや.zipをウインドウにドロップするか、“ファイル” › “ファイルから読み込む…”を選ぶか、コピーした構成を“ファイル” › “クリップボードから新規トンネル…”で貼り付けます。公式のWireGuardアプリが書き出したzipはまとめて開きます。すべてのトンネルを確認し、不要なものを外して、残りを一度に読み込めます。

“ファイル” › “トンネルを書き出す…”はその逆です。トンネルごとに.confを1つずつ入れたzipを、公式アプリが書き出し、読み込むのと同じ構成で作ります。各トンネルの“書き出す…”は、そのトンネルのファイルだけを保存します。

zipの中の複数のトンネルを一覧した読み込みシート。それぞれ、読み込むか外すかを切り替えられます。
読み込むトンネルはそれぞれが支線です。本線に入れるか、外しておくかを選びます。

何も残さない

TurnoutがルートやDNSに加える変更は、すべて変更する前に記録されます。

トンネルの接続中にMacがクラッシュしたり電源が落ちたりしても、バックグラウンドサービスは次の起動時に残った変更を元に戻し、それが終わるまでトンネルを接続しません。“Turnout” › “ネットワーク設定を修復…”で、いつでも同じことができます。

アンインストールの経路はひとつです。アプリから始めても、インストーラから始めても、先に中身を読めるシェルスクリプトから始めても同じです。すべてのトンネルの接続を解除し、ルートとDNSを元に戻し、バックグラウンドサービスをログイン項目から外し、アプリ、ログ、環境設定を削除します。保存済みのトンネルは、削除を選ばない限り残ります。アプリからアンインストールすると、ライセンスでそのMacが使っていた枠も空きます。それぞれの方法で削除されるもの

Turnoutではないもの

  • キルスイッチはまだありません。Turnoutはトンネル外の通信を遮断しません。トンネルが切れている間、Macは通常のネットワークを使います。
  • VPNプロバイダではありません。サーバーはご自身で用意するか、プロバイダやネットワーク管理者から受け取った構成を使ってください。
  • NetworkExtensionは使っていません。トンネルはTurnout自身のバックグラウンドサービスで動きます。だからフックが実行でき、ルートがあなたのままなのです。そのため“システム設定” › “VPN”には表示されません。

Macに対して行うこと

Turnoutはrootとして動くバックグラウンドサービスをインストールします。wg-quickと同じツールでアドレス、ルート、DNSを変更し、構成はrootしか読めないフォルダに置き、構成のフックは管理者が承認してから実行します。どれもご自身で確かめられます。

netstat -rn                         # 追加されたルート
networksetup -getdnsservers Wi-Fi   # 設定されたDNSサーバー
cat /Applications/Turnout.app/Contents/Resources/uninstall.sh

TurnoutがMacに対して行うこと

ダウンロードとインストール

近日公開

最初の公開版を準備しています。それまではダウンロードできるものはありません。公開を知りたい方は、GitHubリポジトリをWatchするか、Releasesページをご覧ください。

1つのライセンスでMac 3台

US$19の買い切りで、Mac 3台に使えます。Turnout 1のアップデートはすべて含まれます。まずは試してください。7日間無料で使え、希望すればさらに7日間延長できます。アカウントもカードも不要で、試用期間中はライセンスの確認も行いません。

Mac 3台:あなたのMac、家族のMac、または同じ組織内のMacに使えます。支払いと税金の処理、領収書の送付はPolarが行います。支払いが済むとすぐにPolarのページにライセンスキーが表示されるので、コピーしてTurnoutに貼り付けてください。キーはPolarの購入履歴ページにも残ります。合わなければ、14日以内なら理由を問わず返金します。