Назад к обновлениям
New releaseSep 2, 2026

gotatun v0.9.2

Реализация WireGuard® в пользовательском пространстве на Rust

Поделиться

GotaTun

Реализация WireGuard® в пользовательском пространстве и форк BoringTun.

Лицензия

Весь исходный код в этом репозитории подчиняется условиям Mozilla Public License версии 2.0, если не указано иное. Копию этой лицензии можно найти в файле "LICENSE" или по адресу https://www.mozilla.org/MPL/2.0/.

Вклад, внесённый до 5 марта 2026 года, лицензируется по старой лицензии BSD 3-clause. Копию этой лицензии можно найти в файле "LICENSE-CLOUDFLARE".

Вклад

Если вы явно не заявите об ином, любой вклад, намеренно представленный вами для включения в работу, как определено в лицензии MPL-2.0, будет лицензирован в соответствии с вышеуказанными условиями без каких-либо дополнительных условий.

Сборка

  • Только библиотека: 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

Затем туннель можно настроить с помощью wg как обычный туннель WireGuard или любым другим инструментом.

Также можно использовать с wg-quick, установив переменную окружения WG_QUICK_USERSPACE_IMPLEMENTATION в значение gotatun. Например:

sudo WG_QUICK_USERSPACE_IMPLEMENTATION=gotatun WG_SUDO=1 wg-quick up CONFIGURATION

Обратите внимание, что wg-quick проигнорирует WG_QUICK_USERSPACE_IMPLEMENTATION в Linux, если у вас установлен модуль ядра wireguard.

Тестирование

Для тестирования этого проекта есть несколько требований:

  • 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 невозможно. Если требуется fwmark, например при использовании wg-quick, запускайте с --disable-drop-privileges или установите переменную окружения WG_SUDO=1.

Вам нужно будет предоставить исполняемому файлу возможность CAP_NET_ADMIN с помощью: sudo setcap cap_net_admin+epi gotatun. sudo не требуется.

macOS

Поведение аналогично поведению wireguard-go. В частности, имя интерфейса должно быть utun[0-9]+ для явного имени интерфейса или utun, чтобы ядро выбрало наименьшее доступное. Если вы выберете utun в качестве имени интерфейса и определена переменная окружения WG_TUN_NAME_FILE, то фактическое имя интерфейса, выбранное ядром, записывается в файл, указанный этой переменной.

Расширения UAPI

См. UAPI для расширений протокола конфигурации wg.


Аудиты

В проекте проводились независимые аудиты безопасности. См. каталог audit.


WireGuard является зарегистрированным товарным знаком Jason A. Donenfeld. GotaTun не спонсируется и не одобряется Jason A. Donenfeld.

Категории