Homing So

Homing So

🎉 哈喽啊~各位
github

如何在 Windows 中優雅的使用 sing-box

什麼是 sing-box#

sing-box 是新一代的通用代理平台,對標 Xray-core 和 clash,並且它支持多種協議(名副其實),並且性能非常強勁。

sing-box 客戶端#

截至目前,sing-box 的官方圖形界面客戶端支持:

而 Windows 桌面端仍在開發中,雖說有第三方圖形化客戶端的支持,例如:

但是這些客戶端的可用性較差,很多機場提供的鏈接無法直接使用,並且還需要額外的學習成本。雖然官方 Windows 的圖形界面客戶端還在開發中,但是 NON-GUI 還是完美支持的。對於有 CLI 使用基礎的朋友,本文可以幫助你在 Windows 上優雅的使用 sing-box cli。

安裝 sing-box#

這裡提供兩種方法安裝 sing-box cli:

第一種方法不需要做過多解釋,唯一要注意的是,你可能已經注意到了所有 AMD64 架構會有兩個版本(darwin、linux 和 windows 都有),一個只標了 amd64,一個是 amd64v3,要如何選擇呢?

這是東西是 GO 1.18 引入的 Architecture Level,不同之處在於編譯器能夠使用到的指令集:

  • GOAMD64=v1 (default): Baseline. 所有 64 位 x86 處理器都能使用
  • GOAMD64=v2: v1 所有的指令集,加上 CMPXCHG16B, LAHF, SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3.
  • GOAMD64=v3: v2 所有的指令集,加上 AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, OSXSAVE.
  • GOAMD64=v4: v3 所有的指令集,加上 AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL.

簡單來說就是 Level 越高,可用指令也就越新,編譯出來的代碼性能可能有一定提升,但是兼容性就越差。如果你不知道你的 CPU 支持什麼指令集,那麼用 amd64 絕對沒錯。

第二種方法就是使用 Windows 平台的包管理器來進行安裝,例如 ScoopChocolatey 等,包管理器安裝方法查看官方文檔就好。

# 如果你使用 Scoop
scoop install sing-box

# 如果你使用 Chocolatey
choco install sing-box

這種方法的優勢是你不用再理會 sing-box 的更新等等瑣事,這些事情包管理器會幫你完成。

配置 sing-box 服務#

如果每次使用 sing-box 都得打開 terminal 的話也太煩人,所以最好是將它配置成一個 Windows 的服務,這樣我們就不用每次重啟還要手動運行了,把這些工作都交給 Windows!為了實現這個目的,我們要用到 WinSW,這是一個可以將任何可執行文件配置成 Windows 服務的工具。

先創建一個目錄,這裡我的目錄就叫 sing-box,然後下載 WinSW-x64.exe,放到這個目錄並將其重命名為:winsw.exe。然後我們創建一個 winsw.xml,通過這個文件對 sing-box 進行配置。注意!這兩個文件的名字一定要相同,否則 WinSW 將無法讀取到配置文件。

然後編輯 winsw.xml,寫入以下內容:

<service>
  <id>sing-box</id>
  <name>sing-box</name>
  <description>This service runs sing-box continuous integration system.</description>
  <download from="https://你的訂閱鏈接" to="%BASE%\config.json" auth="sspi" />
  <executable>C:\Users\homin\scoop\shims\sing-box.exe</executable>
  <arguments>run</arguments>
  <log mode="reset" />
  <onfailure action="restart" />
</service>

這裡解釋幾個參數:

  • <download>:在指定的 <executable> 運行前,WinSW 會從指定的 URL 獲取資源並將其作為文件放到本地。%BASE% 指向 WinSW 的目錄,所以這裡將訂閱鏈接的內容重命名為 config.json 並放到當前目錄下。
  • <executable>:指定要啟動的可執行文件,這裡指定為 Scoop 安裝的 sing-box 的路徑,這個路徑可以在安裝完 sing-box 之後使用:whereis sing-box 獲取。
  • <arguments>:指定要傳遞給可執行文件的參數,這裡傳遞的是 run。因為執行的位置就在當前路徑,所以不需要指定 config.json 的路徑。

完成後,使用 ./winsw.exe -h 可以查看 WinSW 的所有指令:

./winsw.exe -h

現在使用:./winsw.exe install 安裝服務,安裝完成後系統每次重啟都會自動運行 sing-box,但是現在我們先用 ./winsw.exe start 來啟動服務,你將會在當前目錄下看到 winsw.wrapper.log 文件,這個文件包含服務啟動時的日誌,如果一切正常,那麼日誌應該是這樣:

2024-02-07 11:34:16,941 DEBUG - Starting WinSW in console mode
2024-02-07 11:34:19,748 DEBUG - Starting WinSW in console mode
2024-02-07 11:34:19,802 INFO  - Starting service 'sing-box (sing-box)'...
2024-02-07 11:34:20,512 DEBUG - Starting WinSW in service mode
2024-02-07 11:34:20,559 INFO  - Service 'sing-box (sing-box)' started successfully.
2024-02-07 11:34:20,629 INFO  - Downloading: https://你的訂閱鏈接 to C:\Users\homin\workspace\sing-box\config.json. failOnError=False
2024-02-07 11:34:23,004 INFO  - Starting C:\Users\homin\scoop\shims\sing-box.exe run
2024-02-07 11:34:23,043 INFO  - Started process 27484
2024-02-07 11:34:23,063 DEBUG - Forwarding logs of the process System.Diagnostics.Process (sing-box) to WinSW.ResetLogAppender

而目錄中的 winsw.out.log 保存了 sing-box 運行時產生的日誌。

到這裡,我們已經實現了在 Windows 上無感使用 sing-box,並且實現自動更新訂閱。

Reference#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。