Turnout 用原生 App,照 wg-quick 的做法把你的 Mac 連上 WireGuard 伺服器。
你的 hook 照樣執行,路由由你作主,通道要從哪個網路介面出去也由你決定。
即將推出
第一個公開版本正在準備中,在那之前還沒有可以下載的檔案。想第一時間知道,可以關注(Watch)GitHub 儲存庫或它的 Releases 頁面。
設定檔照 wg-quick 的方式執行
Turnout 讀取你原本給 wg-quick 用的 .conf 設定檔,照 wg-quick 在 macOS 上的做法一步步套用,用的也是同樣的系統工具。
PreUpPostUpPreDownPostDown- hook 會執行,
%i換成通道的utun介面,%I換成通道名稱。檔案裡的 hook 要先經過管理者核准才會執行;運作方式。 AllowedIPs- 導入通道,越具體的路由越優先。全通道用
0.0.0.0/1和128.0.0.0/1(以及對應的 IPv6 兩半),而不是取代你的預設路由;伺服器的位址則留在實體閘道上,不會繞進自己的通道。 Tableauto和main照上面的方式設定路由;off則把路由表交給你處理。DNS- 通道連線期間,DNS 伺服器與搜尋網域會設定到你的網路服務上;中斷連線後就恢復成你原本的設定。
MTU- 照設定檔寫的值,或照 wg-quick 的算法:出口網路介面的 MTU 減 80。
選擇網路介面
這兩行是 wg-quick 的格式裡沒有的。它們以 #@ 開頭,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 只在你設定這類規則時才會詢問,啟動時絕不會問。
保留原檔的編輯器
用表單或文字編輯通道,隨時都能切換。
修改只會改寫有動到的那幾行,你的註解和順序都留在原處。問題會連同行號列出,全部解決之後才能儲存。新增的通道會附上一組新產生的金鑰。
把 .conf 檔或 .zip 拖到視窗上、選擇「檔案」›「從檔案匯入⋯」,或用「檔案」›「從剪貼板新增通道⋯」貼上複製的設定檔。官方 WireGuard App 匯出的 zip 會以批次方式開啟:逐一檢查每條通道,略過不要的,其餘一次匯入。
「檔案」›「輸出通道⋯」則反過來:每條通道各一個 .conf,放進同一個 zip,結構和官方 App 匯出與匯入的一樣。單一通道的「輸出⋯」只儲存它自己的檔案。
不留下痕跡
Turnout 對路由和 DNS 的每一項變更,都會先記錄下來才動手。
如果 Mac 在通道連線時當機或斷電,背景服務下次啟動時會復原留下的變更,完成之前不會連線任何通道。「Turnout」›「修復網路設定⋯」也能隨時手動做同樣的事。
解除安裝只有一條路,不論你從 App、從安裝程式,還是從一個可以先讀過內容的 shell 指令稿開始。它會中斷所有通道、恢復路由與 DNS、把背景服務從登入項目移除,並刪除 App、它的記錄檔和偏好設定。已儲存的通道會保留,除非你選擇一併刪除。從 App 解除安裝時,也會空出這部 Mac 在你授權上的名額。各種方式會移除什麼
它不是什麼
- 還沒有 kill switch。Turnout 不會阻擋通道以外的流量。通道中斷時,你的 Mac 會走原本的網路。
- 不是 VPN 服務商。請自備伺服器,或使用服務商、網管給你的設定檔。
- 沒有使用 NetworkExtension。通道在 Turnout 自己的背景服務中執行,hook 能執行、路由由你作主,靠的就是這一點。也因此通道不會出現在「系統設定 › VPN」中。
它對你的 Mac 做了什麼
Turnout 會安裝一個以 root 身分執行的背景服務。它用和 wg-quick 相同的工具修改位址、路由與 DNS,把設定檔放在只有 root 能讀取的資料夾,而且設定檔裡的 hook 要經過管理者核准才會執行。每一項你都能自己檢查。
netstat -rn # 它加入的路由
networksetup -getdnsservers Wi-Fi # 它設定的 DNS 伺服器
cat /Applications/Turnout.app/Contents/Resources/uninstall.sh
下載與安裝
即將推出
第一個公開版本正在準備中,在那之前還沒有可以下載的檔案。想第一時間知道,可以關注(Watch)GitHub 儲存庫或它的 Releases 頁面。
- 從 GitHub 上的最新版本下載安裝程式(
.pkg檔)。 - 打開它並依照步驟進行。Turnout 會安裝到「應用程式」檔案夾,安裝完成後自動開啟。
- 在 Turnout 的視窗中安裝背景服務;macOS 詢問時,在「系統設定 › 一般 › 登入項目與延伸功能」中允許它。
安裝程式已用 Developer ID 簽署,但還沒有經過 Apple 公證,所以 macOS 可能會拒絕打開它。遇到這種情況,請到「系統設定 › 隱私權與安全性」點選「強制打開」,再重新打開安裝程式。
macOS 15 以上 · Apple 晶片與 Intel · 試用 7 天 · US$19 一次買斷,三台 Mac
一份授權,三台 Mac
US$19,一次買斷,可以用在三台 Mac 上,Turnout 1 的每一次更新都包含在內。先試試看:七天免費,需要的話再多七天。不需要帳號,不需要信用卡,試用期間也不做授權檢查。
三台 Mac:你自己的、家裡的,或同一個組織內的。付款和稅務由 Polar 處理,收據也由 Polar 寄給你。付款完成後,Polar 的頁面會立刻顯示你的授權金鑰,複製起來貼進 Turnout 就好;之後在你的 Polar 購買記錄頁面也找得到。不適合你?14 天內可以退款,不問原因。