sing-box とは何ですか#
sing-boxは、次世代の汎用プロキシプラットフォームであり、Xray-coreと clash に対抗しており、さまざまなプロトコルをサポートしています(その名の通り)そして、非常に強力なパフォーマンスを持っています。
sing-box クライアント#
現時点では、sing-box の公式のグラフィカルユーザーインターフェース(GUI)クライアントは次のプラットフォームをサポートしています:
- Android:sing-box for Android
- iOS/macOS/Apple tvOS:sing-box for Apple platforms
一方、Windows デスクトップ版はまだ開発中ですが、次のようなサードパーティの GUI クライアントもあります:
ただし、これらのクライアントの利用性は低く、多くのエアポート(空港)が提供するリンクは直接使用できず、追加の学習コストも必要です。公式の Windows GUI クライアントはまだ開発中ですが、NON-GUI は完全にサポートされています。CLI の使用基盤を持つ方にとって、この記事は Windows での sing-box cli のエレガントな使用をサポートします。
sing-box のインストール#
sing-box cli をインストールするための 2 つの方法を提供します:
- Release から Windows の実行可能ファイルを直接ダウンロードする:https://github.com/SagerNet/sing-box/releases/latest
- パッケージマネージャを使用してインストールする
最初の方法については、詳細な説明は必要ありませんが、注意する必要があるのは、すべての AMD64 アーキテクチャには 2 つのバージョン(darwin、linux、および windows のすべて)があることに気付いたかもしれないことです。1 つは「amd64」とだけ表示されており、もう 1 つは「amd64v3」と表示されています。どちらを選択すればよいですか?
これは、GO 1.18 で導入されたアーキテクチャレベルです。異なる点は、コンパイラが使用できる命令セットです:
- GOAMD64=v1(デフォルト):ベースライン。すべての 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 が含まれます。
簡単に言えば、レベルが高いほど使用可能な命令も新しくなり、コンパイルされたコードのパフォーマンスがわずかに向上する可能性がありますが、互換性は低くなります。CPU がどの命令セットをサポートしているかわからない場合は、「amd64」を使用すれば間違いありません。
2 番目の方法は、Windows プラットフォームのパッケージマネージャを使用してインストールすることです。たとえば、Scoop、Chocolateyなどのパッケージマネージャを使用する方法は、公式ドキュメントを参照してください。
# Scoopを使用する場合
scoop install sing-box
# Chocolateyを使用する場合
choco install sing-box
この方法の利点は、sing-box の更新などについて心配する必要がないことです。これらのことは、パッケージマネージャが代わりに行ってくれます。
sing-box サービスの設定#
毎回ターミナルを開いて sing-box を使用するのは面倒ですので、Windows のサービスとして設定するのが最善です。これにより、再起動するたびに手動で実行する必要がなくなります。これらの作業を Windows に任せましょう!この目的を達成するために、WinSWを使用します。これは、任意の実行可能ファイルを Windows サービスとして設定できるツールです。
まず、ディレクトリを作成します。ここではディレクトリを sing-box と呼びます。次に、WinSW-x64.exeをダウンロードし、このディレクトリに配置し、名前をwinsw.exe
に変更します。そして、winsw.xml
を作成し、このファイルを使用して sing-box を設定します。注意!これらの 2 つのファイルの名前は必ず同じである必要があります。そうしないと、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://your-subscription-link" 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://your-subscription-link 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 のシームレスな使用と、サブスクリプションの自動更新が実現されました。