
gotatun v0.9.2
RustによるユーザースペースWireGuard®実装
GotaTun
ユーザー空間での WireGuard® 実装であり、BoringTun のフォークです。
ライセンス
特に明記されていない限り、このリポジトリ内のすべてのソースコードは Mozilla Public License バージョン 2.0 の条項に従います。このライセンスのコピーは "LICENSE" ファイル、または https://www.mozilla.org/MPL/2.0/ にあります。
2026年3月5日より前に行われたコントリビューションは、旧 BSD 3条項ライセンスの下でライセンスされています。このライセンスのコピーは "LICENSE-CLOUDFLARE" ファイルにあります。
コントリビューション
明示的に別段の定めをしない限り、MPL-2.0 ライセンスで定義されているように、あなたが本作品への inclusion を意図して提出したコントリビューションは、追加の条項や条件なしに、上記のライセンスの下でライセンスされるものとします。
ビルド
- ライブラリのみ:
cargo build --lib --no-default-features --release [--target $(TARGET_TRIPLE)] - 実行ファイル:
cargo build --bin gotatun --release [--target $(TARGET_TRIPLE)]
インストール
デフォルトでは、実行ファイルは ./target/release フォルダに配置されます。手動で任意の場所にコピーするか、cargo install --bin gotatun --path . を使用してインストールできます。
Nix
実行ファイルをビルドするには、単に nix build .#gotatun を実行します。最終的なバイナリは result/bin/gotatun に配置されます。
実行
仕様に従い、トンネルを開始するには次を使用します:
gotatun [-f/--foreground] INTERFACE-NAME
その後、トンネルは通常の WireGuard トンネルと同様に wg やその他のツールを使用して設定できます。
また、環境変数 WG_QUICK_USERSPACE_IMPLEMENTATION を gotatun に設定することで、wg-quick と組み合わせて使用することも可能です。例:
sudo WG_QUICK_USERSPACE_IMPLEMENTATION=gotatun WG_SUDO=1 wg-quick up CONFIGURATION
Linux で wireguard カーネルモジュールがインストールされている場合、wg-quick は WG_QUICK_USERSPACE_IMPLEMENTATION を無視することに注意してください。
テスト
このプロジェクトのテストにはいくつかの要件があります:
sudo: トンネルの作成に必要です。cargo testを実行すると、パスワードの入力を求められます。- Docker: こちらからインストールできます。Ubuntu/Debian を使用している場合は、
apt-get install docker.ioを実行できます。
サポートされているプラットフォーム
| ターゲットトリプル | バイナリ | ライブラリ |
|---|---|---|
| x86_64-unknown-linux-gnu | ✓ | ✓ |
| aarch64-unknown-linux-gnu | ✓ | ✓ |
| riscv64gc-unknown-linux-gnu | ✓ | ✓ |
| aarch64-apple-darwin | ✓ | ✓ |
| x86_64-pc-windows-msvc | ✓ | ✓ |
| x86_64-pc-windows-gnullvm | ✓ | ✓ |
| aarch64-pc-windows-msvc | ✓ | ✓ |
| aarch64-pc-windows-gnullvm | ✓ | ✓ |
| x86_64-linux-android | ✓ | |
| aarch64-linux-android | ✓ | |
| aarch64-apple-ios | ✓ |
他のターゲットでも動作する可能性がありますが、テストはこれらのみを対象としています
Linux
x86-64 および aarch64 アーキテクチャをサポートしています。動作は wireguard-go と同一であるべきですが、以下の違いがあります:
gotatun は起動時に権限をドロップします。権限がドロップされると、fwmark を設定することはできません。wg-quick を使用する場合など fwmark が必要な場合は、--disable-drop-privileges を付けて実行するか、環境変数 WG_SUDO=1 を設定してください。
sudo setcap cap_net_admin+epi gotatun を使用して、実行ファイルに CAP_NET_ADMIN ケーパビリティを付与する必要があります。sudo は不要です。
macOS
動作は wireguard-go と同様です。具体的には、インターフェース名は明示的なインターフェース名として utun[0-9]+、またはカーネルに利用可能な最小のものを選択させる場合は utun である必要があります。インターフェース名として utun を選択し、環境変数 WG_TUN_NAME_FILE が定義されている場合、カーネルが選択した実際のインターフェース名がその変数で指定されたファイルに書き込まれます。
UAPI拡張
wg 設定プロトコルの拡張については UAPI を参照してください。
監査
本プロジェクトでは独立したセキュリティ監査が実施されています。 audit ディレクトリを参照してください。
WireGuardはJason A. Donenfeldの登録商標です。GotaTunはJason A. Donenfeldによる後援または承認を受けていません。