Skip to content

DefGuard/wireguard-rs

Repository files navigation

defguard

defguard_wireguard_rs is a multi-platform Rust library providing a unified high-level API for managing WireGuard interfaces using native OS kernel and userspace WireGuard protocol implementations. It can be used to create your own WireGuard:tm: VPN servers or clients for secure and private networking.

It was developed as part of defguard security platform and used in the gateway/server as well as desktop client.

Supported platforms

  • Native OS Kernel: Linux, FreeBSD (and pfSense/OPNSense), NetBSD, Windows
  • Userspace: Linux, macOS, FreeBSD, NetBSD

Unique features

  • Peer routing - see WGApi docs.
  • Configuring DNS resolver - see WGApi docs.
    • On FreeBSD network interfaces are managed using ioctl.
    • On Linux, handle network routing using netlink.
    • fwmark handling

Windows support

Please note that WireGuard-NT dll file has to be placed under resources-windows/binaries/wireguard.dll path relative to your binary.

Windows development

For Windows development you'll need:

  1. The stable-x86_64-pc-windows-gnu Rust toolchain. Use rustup to change the toolchain:
rustup install stable-x86_64-pc-windows-gnu
rustup default stable-x86_64-pc-windows-gnu
  1. Install MSYS2

  2. Then run this in the MSYS2 terminal:

pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-nasm
  1. Finally add msys to your PATH:
# cmd
set PATH=C:\msys64\ucrt64\bin;%PATH%
# power-shell
$env:PATH = "C:\msys64\ucrt64\bin;" + $env:PATH

More info can be found here.

Examples

Documentation

See the documentation for more information.

Community and Support

Find us on Matrix: #defguard:teonite.com

Contribution

Please review the Contributing guide for information on how to get started contributing to the project. You might also find our environment setup guide handy.

Legal

WireGuard® is registered trademarks of Jason A. Donenfeld.

About

Rust library providing unified WireGuard interface to native/kernel and userspace implementations

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 9