
Rust로 작성된 사용자 공간 WireGuard® 구현
사용자 공간 WireGuard® 구현체이자 BoringTun의 포크입니다.
이 저장소의 모든 소스 코드는 별도의 명시가 없는 한 Mozilla Public License 버전 2.0의 조건을 따릅니다. 이 라이선스의 사본은 "LICENSE" 파일 또는 https://www.mozilla.org/MPL/2.0/에서 확인할 수 있습니다.
2026년 3월 5일 이전에 이루어진 기여는 기존 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 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를 실행하면 비밀번호를 묻는 메시지가 표시됩니다.apt-get install docker.io를 실행하면 됩니다.다른 대상도 작동할 수 있지만, 저희는 이들에 대해서만 테스트합니다.
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는 필요하지 않습니다.
동작은 wireguard-go와 유사합니다. 구체적으로 인터페이스 이름은 명시적인 인터페이스 이름의 경우 utun[0-9]+이어야 하며, 커널이 가장 낮은 사용 가능한 인터페이스를 선택하도록 하려면 utun이어야 합니다. 인터페이스 이름으로 utun을 선택하고 환경 변수 WG_TUN_NAME_FILE이 정의된 경우, 커널이 선택한 실제 인터페이스 이름이 해당 변수가 지정하는 파일에 기록됩니다.
wg 구성 프로토콜의 확장에 대해서는 UAPI를 참조하십시오.
이 프로젝트에 대해 독립적인 보안 감사가 수행되었습니다. audit 디렉터리를 참조하십시오.
WireGuard는 Jason A. Donenfeld의 등록 상표입니다. GotaTun은 Jason A. Donenfeld의 후원이나 보증을 받지 않습니다.
| 대상 트리플 | 바이너리 | 라이브러리 |
|---|
| x86_64-unknown-linux-gnu | ✓ | ✓ |
| aarch64-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 | ✓ |