Fact-checked by Grok 2 weeks ago

WireGuard

WireGuard is a fast, modern, and secure open-source (VPN) protocol that implements a layer-3 secure tunnel using state-of-the-art , operating over to create encrypted connections between devices with minimal configuration overhead. Designed for simplicity akin to SSH key exchanges—where peers authenticate via public keys—WireGuard features a compact codebase of approximately 4,000 lines, enabling high performance and ease of auditing while supporting both and traffic. Initiated by security researcher Jason A. Donenfeld in 2016, WireGuard's development emphasized replacing complex legacy VPN solutions like and with a leaner alternative that prioritizes cryptographic rigor and implementation efficiency. The employs the pattern for , leveraging elliptic curves for Diffie-Hellman, ChaCha20 for symmetric encryption, and Poly1305 for message authentication, ensuring and resistance to common attacks without agility to minimize vulnerabilities. First publicly released on December 9, 2016, it gained traction through rigorous efforts and independent audits, culminating in its upstream integration into the starting with version 5.6 in March 2020 as a native module. Beyond Linux, WireGuard offers cross-platform compatibility through official userspace implementations for Windows, macOS, BSD, , and , making it widely adopted by VPN providers for its low latency, high throughput, and straightforward peer-to-peer or site-to-site setups. Its connectionless design avoids persistent state management, reducing resource usage and enhancing mobility, though it trades off some features like built-in for deliberate simplicity. As of 2025, WireGuard continues to evolve with ongoing contributions to its repositories, focusing on performance optimizations and broader ecosystem integration while maintaining its core principles of security and usability.

Protocol Fundamentals

Cryptographic Mechanisms

WireGuard employs a deliberately minimal and fixed set of , selected for their security, performance, and resistance to side-channel attacks, without support for cipher agility to reduce the attack surface. These include for key generation and exchange, ChaCha20 for encryption, Poly1305 for authentication, and BLAKE2s for hashing and key derivation, all integrated within the Noise protocol framework. Curve25519, an elliptic curve designed for high-speed cryptography, is used to generate public-private key pairs consisting of 32-byte keys and to perform Diffie-Hellman key exchanges. Each peer maintains a static long-term private key, from which the corresponding public key is derived, while ephemeral key pairs are generated per session for forward secrecy. This curve provides 128 bits of security and is preferred for its constant-time operations, minimizing timing attacks. For symmetric encryption of data packets, WireGuard utilizes the , which operates on 32-byte keys and 96-bit nonces to produce a keystream that is XORed with the . ChaCha20 is chosen for its efficiency on resource-constrained devices and software implementations that avoid dependencies. Integrity and authenticity of encrypted payloads are ensured through Poly1305, a one-time that uses a 32-byte key to compute a 16-byte tag over the and associated data. The combination of ChaCha20 and Poly1305 forms an scheme similar to AEAD constructions. Key derivation and hashing operations rely on BLAKE2s, a fast, secure producing 32-byte digests from 32-byte keys, used in the protocol's key material generation within the Noise framework. WireGuard adapts the Noise_IK handshake pattern, which authenticates the initiator using a static key and incorporates both static and ephemeral Diffie-Hellman exchanges to derive session keys, ensuring and . These primitives contribute to the handshake process by providing the foundational building blocks for secure key agreement. All WireGuard communications occur over , with port 51820 serving as the conventional default for both incoming and outgoing traffic to simplify and rules.

and Session Establishment

WireGuard employs a concise based on the Noise_IK pattern from the Noise Protocol Framework to establish secure sessions between peers. The process begins when an initiator, such as a client, seeks to connect to a responder, typically a . The initiator generates a fresh pair using and constructs a initiation message of type 1. This message includes a sender index, the initiator's ephemeral public key (unencrypted), the initiator's static public key (encrypted), an encrypted TAI64N timestamp for replay protection, and two tags: one computed over the message contents using a key derived from the initiator's static private key and the responder's static public key via a Diffie-Hellman exchange for and , and another using a for mitigation. The encryption for the static key and timestamp uses keys derived from the static-static Diffie-Hellman . This allows peer while preventing unauthorized alterations. Upon receiving the initiation message, the responder verifies the first MAC tag using its own static private key and the initiator's static public key (pre-configured). If valid, the responder generates its own pair and computes shared secrets via Diffie-Hellman exchanges involving static and ephemeral keys. The responder then sends an encrypted response message of type 2 containing a sender index, receiver index (the initiator's index), its ephemeral public key (unencrypted), an empty encrypted payload, and two MAC tags derived from the shared secrets. The encryption and MACs ensure only authenticated peers can process it, mitigating man-in-the-middle attacks by binding ephemeral keys to long-term identities. This single round-trip exchange authenticates both parties using their static keys. Following successful exchange, both peers derive the initial session keys for encrypting and authenticating subsequent data packets. These keys are generated using BLAKE2s as the in an HKDF-like construction from the handshake's final hashing state, producing a base key from which sending and receiving keys are extracted. A chaining key is also derived to facilitate future , promoting by ensuring compromised session keys do not affect prior communications. The session remains active until is triggered, which occurs automatically every 120 seconds or after transmitting 2^{60} data packets, whichever comes first; at that point, either peer can initiate a new using fresh ephemeral keys while retaining the same static keys for continuity. This timer-based and message-count-triggered mechanism balances and by limiting the exposure window of any single key set.

Networking Aspects

Interface and Packet Handling

WireGuard functions as a kernel-level virtual , such as wg0, operating at layer 3 to handle packets in a manner akin to a TUN device, integrating seamlessly into the host's networking stack without requiring user-space daemons for core operations. The protocol's packet structure features a 16-byte header for data messages, comprising a 1-byte type field indicating the message category (e.g., handshake initiation or data), 3 reserved bytes, a 4-byte receiver for peer , and an 8-byte counter for sequencing and construction, followed by the of the encrypted inner packet and a 16-byte Poly1305 tag. The fixed WireGuard overhead is thus 32 bytes. Traffic is determined by the AllowedIPs configuration per peer, which populates the kernel's with entries directing packets destined for specified prefixes through the corresponding peer's , leveraging crypto-key to associate destination addresses with the appropriate keys for encapsulation and transmission over . WireGuard natively supports and dual-stack operation, enabling v4-in-v6 and v6-in-v4 encapsulation as needed, and handles packets by forwarding them through the virtual interface when is configured on the host. A key networking feature is support, allowing automatic peer re-association upon detection of changes—such as during mobile network handoffs—without necessitating re-initiation or key re-derivation, thereby preserving active sessions. However, this mechanism lacks additional , potentially allowing a man-in-the-middle to impersonate peers by altering source addresses, as noted in considerations.

MTU and Overhead Management

WireGuard incurs a protocol overhead of 60 bytes for IPv4 tunnels and 80 bytes for tunnels. This consists of a 32-byte WireGuard overhead—comprising a 16-byte header (1 byte for the packet type, 3 reserved bytes, 4 bytes for the receiver index, and 8 bytes for ) plus 16 bytes for the (MAC) tag—plus the UDP header (8 bytes) and (20 bytes for IPv4 or 40 bytes for ). To prevent IP fragmentation on typical Ethernet networks with a 1500-byte MTU, WireGuard recommends setting the interface MTU to 1420 bytes for both IPv4 and IPv6 configurations. This conservative value accounts for the maximum overhead of 80 bytes, ensuring compatibility across diverse network paths even if IPv4 is used, where the actual overhead is lower at 60 bytes. WireGuard supports Path MTU Discovery (PMTUD) by setting the Don't Fragment (DF) bit on outgoing UDP packets, allowing the system to dynamically detect and adjust to the lowest MTU along the path through ICMP feedback. In low- or high-latency environments, such as mobile networks or satellite links, the fixed overhead can reduce effective throughput by increasing the ratio of non-payload bytes, necessitating more packets to transmit equivalent data volumes and amplifying transmission delays. For instance, on a 100 kbps link, the 80-byte overhead per packet represents about 6.4 kbps of wasted at full utilization, exacerbating inefficiencies compared to protocols with lower overhead. Operators should configure the MTU explicitly on the WireGuard interface during setup, such as via the MTU = 1420 directive in wg-quick configuration files, to align with the underlying network's capabilities. If PMTUD fails due to blocked ICMP "fragmentation needed" messages (type 3, code 4), oversized packets may be dropped silently, resulting in blackhole routes where traffic appears to vanish without error indication; mitigation involves lowering the MTU manually to a safe value like 1280 bytes or enabling (MSS) clamping on the interface to cap payload sizes proactively.

Advanced Features

Pre-shared Key Integration

WireGuard supports an optional (PSK) mechanism, which introduces a 32-byte symmetric key shared between peers to provide additional and layers beyond the core . This PSK defaults to a sequence of 32 zero bytes if not explicitly configured, ensuring seamless compatibility with existing setups while allowing optional enhancement. The PSK integrates into the WireGuard handshake process by salting the chaining key during key derivation, specifically in the responder's second message, where it is mixed via operations—such as HMAC(temp, preshared_key)—to influence the generation of session keys. This salting protects against certain cryptanalytic attacks on the elliptic curve used in WireGuard's and mitigates risks from compromised static private keys by binding the session to the pre-shared secret. It also offers forward secrecy enhancements against potential threats that could retroactively compromise static keys. As detailed in the and session establishment, the PSK does not alter the fundamental flow but augments the protocol variant employed by WireGuard. Common use cases for PSK include defending against static key compromise in scenarios where long-term keys might be exposed, and providing post-quantum resistance in environments anticipating advances in that target . For instance, in high-security deployments like enterprise VPNs, PSK can thwart attacks that exploit weaknesses in implementations without requiring a full overhaul. Configuration of the PSK is handled through the wg command-line tool, which allows administrators to add or update it for a specific peer without restarting the interface or disrupting ongoing sessions. The syntax involves specifying the interface, the peer's base64-encoded public key, and the PSK path, as in: wg set <interface> peer <base64-public-key> preshared-key <file-path>. The PSK itself is typically generated using wg genpsk and must be identically set on both endpoints of the peer connection to enable its use. This approach maintains the protocol's minimalism, as the PSK is optional and requires no changes to the core WireGuard codebase or runtime behavior when absent.

Extensibility Mechanisms

WireGuard's incorporates a single-byte message type in its packet headers, which identifies the four current message types: handshake initiation, handshake response, handshake cookie reply, and data packets. This design reserves space for additional message types, enabling the introduction of new packet formats or functionalities without disrupting for existing implementations. The protocol's architecture emphasizes modularity by separating the cryptographic primitives—such as key exchange via Noise_IK and symmetric encryption with —from the responsible for packet handling and . This separation facilitates independent upgrades to cryptographic components, such as replacing algorithms for post-quantum , while maintaining the core transport mechanics intact. Configuration options further enhance extensibility through support for persistent keepalives, where peers can specify an interval (e.g., every 25 seconds) to send empty data packets, ensuring and connection liveness in firewall-restricted environments. Custom peer settings, including dynamic endpoint updates via the Endpoint directive in configuration files, allow administrators to adapt peer addresses and ports without reconfiguring the entire tunnel. The project's outlines potential enhancements for broader applicability, including tools for to enable peer discovery and multi-hop topologies, which could extend WireGuard's utility beyond point-to-point tunnels. While core transport precludes native fallback, the design supports wrapper tools like udp2raw for encapsulation in restricted networks; similarly, handling relies on underlying configurations rather than protocol-level changes, though future integrations may address Layer 2 extensions.

Implementations and Platforms

Official Kernel and User-space Versions

WireGuard's primary official implementation for integrates directly into the as a module, available since version 5.6 released in March 2020. This module provides high-performance packet handling and is accompanied by userspace tools such as wg for interface management and wg-quick for simplified configuration and activation of tunnels. These tools enable seamless setup on distributions, leveraging the 's native networking stack for efficiency. For non-Linux platforms, WireGuard offers an official user-space daemon called wireguard-go, implemented in Go to run without kernel dependencies using generic tunneling mechanisms like TUN/TAP devices. This cross-platform implementation ensures compatibility across operating systems, though it may incur higher overhead compared to kernel-native versions due to userspace processing. Official mobile applications are available for and , utilizing native platform APIs to establish VPN tunnels with features like always-on connectivity and on-demand activation. The app, distributed via the , integrates with Apple's Network Extension framework for secure tunnel management. Similarly, the app from the Store employs the VpnService API to handle routing and encryption in the background. On Windows and macOS, WireGuard relies on user-space implementations for broad compatibility, with optional extensions where supported to optimize . The Windows client uses a user-mode like for packet interception, supporting versions from onward. For macOS, the app from the employs the Network Extension framework in user space, ensuring seamless integration without requiring custom modules. Configuration across all implementations uses a simple INI-style , typically with sections like [Interface] for local settings (e.g., private , listen ) and [Peer] for remote endpoints (e.g., public , endpoint address, AllowedIPs for ). This format promotes uniformity, allowing configurations to be shared and managed via tools like wg-quick without platform-specific adjustments.

Third-party and Commercial Integrations

WireGuard has been integrated into various router firmware distributions, enabling seamless VPN functionality on embedded networking devices. , a popular open-source firmware for routers, includes official packages for WireGuard installation and configuration, allowing users to set up server and client interfaces directly through its web interface or command line. Similarly, , a free and open-source firewall and router platform based on , includes native WireGuard support, facilitating site-to-site and remote access VPNs. , another open-source firewall distribution, added native WireGuard support in June 2025, providing a lightweight VPN solution with automated peer management and integration into its core services. Several commercial VPN providers have adopted WireGuard as a core , often as the default option for its speed and simplicity. Mullvad VPN prioritizes WireGuard for all connections, offering it as the primary across its applications and configurations to ensure low-latency, secure tunneling. IVPN similarly defaults to WireGuard for its services, providing easy setup guides and static workarounds to enhance and reliability. NordVPN's NordLynx is a customized implementation built on WireGuard, incorporating double to address concerns while delivering high-performance connections available on all major platforms. At the operating system level, WireGuard enjoys broad support beyond kernels. devices can utilize the official WireGuard app from the Store, which leverages the protocol's kernel integration available since for efficient VPN operations. On , WireGuard is accessible through the official app in the , enabling on-demand VPN configurations with full integration into the system's network extensions. includes WireGuard in its base system starting from release 13.2. Developers can embed WireGuard into custom applications using available libraries in multiple languages. The official wireguard-tools provide a single-file C library for interacting with kernel modules or userspace implementations, suitable for low-level integrations. For Go-based projects, the wgctrl-go library offers high-level bindings to manage WireGuard interfaces and peers programmatically. In , implementations like BoringTun deliver a userspace WireGuard engine optimized for performance and safety, while wireguard-rs provides a unified for cross-platform control. Community-driven forks and adaptations extend WireGuard's utility to specialized environments, particularly embedded systems with resource constraints. The wireguard-lwip project ports WireGuard to the lightweight IP stack , enabling its use in memory-limited microcontrollers without dynamic allocation. Another variant, wireguard-fpga, implements the in hardware using low-cost FPGAs like the Artix-7, achieving wire-speed encryption for high-throughput embedded networking. These forks maintain compatibility with the core while optimizing for specific hardware needs, such as real-time processing in devices.

Security and Audits

Known Vulnerabilities and Mitigations

In 2019, a vulnerability (CVE-2019-14899) was disclosed, enabling network-adjacent attackers to infer active VPN-tunneled connections and potentially hijack them through behaviors affecting WireGuard and other protocols; this was mitigated via kernel patches and configuration updates. As of 2025, no major security breaches have been reported for the WireGuard protocol itself. The protocol's minimalist design significantly reduces the , with its core implementation comprising approximately 4,000 lines of code compared to around 600,000 lines in stacks. This brevity facilitates thorough auditing and limits opportunities for implementation flaws. WireGuard incorporates built-in mitigations such as a mechanism, which generates compact reply messages smaller than packets to counter and denial-of-service attacks without revealing details. Additionally, initiations are strictly rate-limited, occurring only once every two minutes per to thwart flooding attempts. Recommended best practices include regular rotation of private keys—ideally every few months or upon suspected compromise—to limit exposure from key compromise. Administrators should UDP ports (default 51820/UDP) to restrict access to authorized peers only, preventing unauthorized attempts. Configurations should avoid default or predictable endpoints, opting instead for dynamic or obfuscated addressing to evade targeted reconnaissance.

Audit History and Best Practices

WireGuard's security has been rigorously evaluated through formal cryptographic analyses and verifications, given its compact of under 4,000 lines, which facilitates thorough review. These efforts, rather than exhaustive third-party code audits of the core protocol, have focused on proving key properties like , , and resistance to common attacks. The (OTF) has provided ongoing support for WireGuard's security enhancements since 2019, funding development initiatives aimed at improving resilience and accessibility for users in restrictive environments. In 2018, researchers Benjamin Dowling and Kenneth G. Paterson conducted a computational of the protocol, confirming its robustness against key-compromise impersonation attacks and demonstrating equivalence to other secure protocols under standard cryptographic assumptions. A subsequent mechanized proof in 2019 by Paul-Laurent Lévy, Bruno Blanchet, and Karthikeyan Bhargavan used the CryptoVerif tool to verify WireGuard's Noise-based handshake, establishing properties such as perfect and post-compromise security in model. Implementations integrating WireGuard have also received targeted reviews; for instance, Cure53's 2020 audit of VPN's client applications, which utilize WireGuard, identified several minor issues related to and , all of which were promptly remediated by the developers. Further OTF-backed reviews and formal analyses extended through 2024, incorporating feedback to refine the protocol's defenses without uncovering critical flaws. For secure deployment, best practices emphasize layered protections beyond the protocol's built-in . Enabling pre-shared keys (PSKs) is recommended for high-security environments, as they provide an additional symmetric secret that enhances resistance to certain downgrade or impersonation attacks even if long-term keys are compromised. Administrators should routinely monitor system logs for anomalies, such as repeated failures, which may indicate denial-of-service attempts or misconfigurations. Integrating WireGuard interfaces with host firewalls, like on , is crucial to enforce strict inbound and outbound rules, limiting exposed ports (typically 51820) and segmenting traffic to prevent lateral movement in case of breaches. WireGuard inherently guarantees perfect via ephemeral Diffie-Hellman key exchanges in its IK , ensuring that session keys remain secure even if long-term private keys are later exposed. To address emerging threats, which could undermine like , ongoing research proposes hybrid key exchanges combining classical and post-quantum algorithms (e.g., ML-KEM), allowing seamless upgrades while maintaining compatibility and performance. These future-proofing measures, supported by community efforts, position WireGuard for long-term resilience without requiring immediate protocol overhauls.

Adoption and Reception

Performance Evaluations

WireGuard has demonstrated superior performance in various benchmarks, particularly in throughput and speed. In 2025 evaluations, it achieved up to 2-3 times the speed of on comparable hardware, routinely exceeding 500 Mbps on gigabit links and scaling to multi-gigabit rates. For instance, tests on Protectli appliances reported WireGuard sustaining 4.6-5.01 Gbps unidirectional throughput with low overhead. On modern servers, it can handle over 10 Gbps, as shown in Tailscale's optimizations where implementations saturated 10 Gbps links with minimal configuration. The protocol's efficiency stems from its low resource demands, including reduced CPU utilization attributed to the cipher, which performs efficiently in software without relying on hardware acceleration like AES-NI. This results in CPU usage often below 10-20% at high loads, compared to higher demands from alternatives using more complex . On mobile devices, WireGuard exhibits minimal battery drain due to its lightweight design, with studies indicating it consumes less power than heavier protocols like during extended use. Key performance factors include its UDP-based architecture, which minimizes by avoiding TCP's retransmission overhead, enabling sub-10 ms added delay in low-jitter networks. The compact , under 4,000 lines, not only aids through faster audits but also contributes to efficient behavior by reducing context-switching and . In real-world deployments, WireGuard excels in mobile roaming scenarios, maintaining stable connections during network handoffs with quick reconnections.

Comparisons with Other Protocols

WireGuard presents a simpler design than OpenVPN, relying on public-key cryptography without the need for certificates or complex public key infrastructure (PKI), which streamlines authentication and configuration for users. In contrast, OpenVPN often requires certificate management for secure setups, enabling greater flexibility but increasing administrative overhead, particularly in legacy environments where custom configurations are common. WireGuard's lean architecture, with approximately 4,000 lines of code, also contributes to faster deployment and lower maintenance compared to OpenVPN's larger, more modular codebase. Performance-wise, WireGuard outperforms in throughput and latency due to its kernel-level integration and efficient , achieving up to 75% higher throughput in benchmarks while remains constrained by its user-space implementation. However, WireGuard's exclusive use of for transport limits its applicability in networks that block traffic, whereas supports both and modes, offering better compatibility for restrictive firewalls or legacy systems. On , WireGuard employs modern defaults like for key exchange and for encryption, reducing misconfiguration risks inherent in 's broader cipher options. Compared to , WireGuard features a significantly leaner —about 4,000 lines versus IPsec's over 400,000—resulting in easier auditing, reduced , and simpler setup without the intricate or mode negotiations typical of IPsec. This simplicity enhances usability, especially on devices, where WireGuard's quick handshakes and low overhead deliver better and reconnection speeds than IPsec's more resource-intensive processes. , as an IETF , provides stronger compliance with requirements like granular controls and across diverse hardware, but its complexity often leads to errors. WireGuard's key advantages include modern cryptographic defaults that prioritize without user intervention and avoidance of dynamic IP negotiation pitfalls, such as complications seen in or certificate revocation in . Its stateless design further eliminates session state management issues common in stateful protocols like . Drawbacks encompass its UDP-only operation, which can fail in UDP-blocked environments, and the absence of built-in obfuscation features for evading , unlike some configurations. By 2025, WireGuard has become the preferred protocol for speed and ease in commercial VPN services, with providers like and adopting it for consumer-facing applications due to its low and high throughput. In enterprise settings, retains dominance for compliance with standards like and seamless integration with existing infrastructure, though hybrid deployments incorporating WireGuard for remote access are increasingly common.

Development History

Initial Creation and Early Releases

WireGuard was conceived in 2015 by Jason A. Donenfeld, a security researcher and kernel developer known as ZX2C4, who sought to address the complexities and vulnerabilities inherent in established VPN protocols such as and . Motivated by his background in exploitation and cryptographic vulnerabilities, Donenfeld aimed to create a simpler alternative that prioritized ease of auditing, high performance, and robust security without the bloat of legacy systems. The project began as a solo effort, with Donenfeld sharing early prototypes privately with a small group of cryptographers for feedback. WireGuard was first publicly announced on the Linux Kernel Mailing List on June 28, 2016, with its source code made available via repository, and the first snapshot release (v0.0.20161209) occurring on December 9, 2016, when Donenfeld announced WireGuard on the (LKML) and made the source code available via his repository at git.zx2c4.com. This initial version implemented a kernel-space virtual interface for , focusing on core tunneling functionality with under 4,000 lines of to enhance auditability. By 2017, alpha versions emerged with accompanying basic userspace tools, such as wg(8) for , enabling initial testing and deployment on standard distributions. These early releases emphasized a minimalist codebase, drawing inspiration from the straightforward model of SSH while incorporating modern like for and ChaCha20 for symmetric . Development in this phase was primarily self-funded by Donenfeld through his personal resources and consultancy work at , supplemented by growing community contributions as interest built around the project's open-source ethos. This grassroots support allowed for iterative improvements without formal backing, aligning with WireGuard's philosophy of simplicity and accessibility for developers and users alike.

Major Milestones and Integrations

WireGuard achieved a significant milestone with its inclusion in the version 5.6, released on March 29, 2020, following an extensive review process that culminated in maintainer merging the code into the mainline source tree in January 2020. This integration marked the protocol's transition from user-space implementations to native kernel support, enabling broader adoption across Linux distributions without requiring additional modules. Cross-platform availability expanded rapidly with official mobile applications. The app was released on December 20, 2018, providing native support for managing WireGuard tunnels on Apple devices. The app followed in early 2020, with its initial stable version leveraging integration for improved performance. Similarly, the Windows client reached stable release in 2020, evolving from beta versions to offer full-featured tunnel management via a user-friendly interface. In 2025, WireGuard saw further enhancements tied to kernel updates and firewall integrations. Linux kernel 6.12, released on November 17, 2024, incorporated performance optimizations that benefited WireGuard implementations, including reduced overhead in high-throughput scenarios. Additionally, IPFire's Core Update 195, released on June 23, 2025, introduced native WireGuard support, allowing seamless configuration of tunnels within the 's web interface. Development received crucial backing from the (OTF), which provided grants exceeding $100,000 between 2019 and 2024 to fund security audits, cross-platform ports, and overall resilience improvements for the protocol. This support helped address potential vulnerabilities and expand accessibility in restrictive environments. Efforts toward have included discussions within the IETF on enhancing VPN , with WireGuard referenced in drafts surveying transport protocols to inform future integrations with established standards like . These conversations aim to facilitate broader ecosystem compatibility without altering WireGuard's core design.

References

  1. [1]
    WireGuard: fast, modern, secure VPN tunnel
    WireGuard aims to be as easy to configure and deploy as SSH. A VPN connection is made simply by exchanging very simple public keys – exactly like exchanging SSH ...
  2. [2]
    Protocol & Cryptography - WireGuard
    WireGuard uses the Noise_IK handshake from Noise, building on the work of CurveCP, NaCL, KEA+, SIGMA, FHMQV, and HOMQV. All packets are sent over UDP.
  3. [3]
    [PDF] Next Generation Kernel Network Tunnel - WireGuard
    WireGuard is a secure network tunnel, operating at layer 3, implemented as a kernel virtual network interface for Linux, which aims to replace both IPsec for ...
  4. [4]
    What Is WireGuard? - Palo Alto Networks
    WireGuard is a modern VPN protocol designed to establish secure connections, known for simplicity, speed, and state-of-the-art cryptography.
  5. [5]
    WireGuard Basics - Thomas-Krenn-Wiki-en
    Oct 22, 2019 · WireGuard was created by Jason A. Donenfeld, also known as "zx2c4". The first release 0.0.20161209 was released on December 09, 2016.
  6. [6]
    WireGuard/wireguard-linux-compat: Mirror only. Official ... - GitHub
    WireGuard was merged into the Linux kernel for 5.6. This repository contains a backport of WireGuard for kernels 3.10 to 5.5, as an out of tree module.
  7. [7]
    Known Limitations - WireGuard
    WireGuard is a protocol that, like all protocols, makes necessary trade-offs. This page summarizes known limitations due to these trade-offs.
  8. [8]
    Repositories - WireGuard
    The following is a list of official and supported WireGuard projects, along with their status and maintainer. Most repositories are hosted on git.zx2c4.com ...
  9. [9]
    Quick Start - WireGuard
    Quick Start. You'll first want to make sure you have a decent grasp of the conceptual overview, and then install WireGuard. After that, read onwards here.Compilation from Source Code · Known Limitations · Presentations
  10. [10]
    [PDF] Formal Verification of the WireGuard Protocol
    The WireGuard protocol consists of several mechanisms: an authenticated key exchange, a cookie MAC system for mitigating denial of service attacks, an elegant ...
  11. [11]
    Routing & Network Namespaces - WireGuard
    WireGuard uses a UDP socket for actually sending and receiving encrypted packets. This socket always lives in namespace A – the original birthplace namespace.
  12. [12]
    [WireGuard] Header / MTU sizes for Wireguard - ZX2C4
    Dec 11, 2017 · The overhead of WireGuard breaks down as follows: 20-byte IPv4 header or 40 byte IPv6 header, 8-byte UDP header, 4-byte type, 4-byte key index, 8-byte nonce.
  13. [13]
    wg-quick(8) - Linux manual page - man7.org
    Running up adds a WireGuard interface, brings up the interface with the supplied IP addresses, sets up mtu and routes, and optionally runs pre/post up scripts.
  14. [14]
    WireGuard Performance Tuning - Pro Custodibus
    Dec 9, 2022 · Many Ethernet connections have an MTU (Maximum Transmission Unit) of 1500, meaning that each Ethernet frame can carry up to 1500 bytes of ...Tuning · Packet Fragmentation · Negotiated Mss
  15. [15]
    Assign a WireGuard Interface | pfSense Documentation
    Sep 25, 2024 · The appropriate MTU varies depending on the MTU of the underlying circuit. WireGuard overhead is approximately 80 Bytes for IPv6 packets and 60 ...
  16. [16]
    Resolve IPv4 Fragmentation, MTU, MSS, and PMTUD Issues ... - Cisco
    This document describes how IPv4 Fragmentation and Path Maximum Transmission Unit Discovery (PMTUD) work.Missing: WireGuard | Show results with:WireGuard
  17. [17]
    wg(8) - Linux manual page
    ### Syntax for Setting Pre-Shared Key Using `wg set`
  18. [18]
    [PDF] A Cryptographic Analysis of the WireGuard Protocol
    Abstract. WireGuard (Donenfeld, NDSS 2017) is a recently proposed secure network tunnel operating at layer. 3. WireGuard aims to replace existing tunnelling ...
  19. [19]
    Project Todo - WireGuard
    It is possible to build a mesh network out of WireGuard using WireGuard as the building block. Write a tool that builds meshes and has peers discover each other ...
  20. [20]
    [PDF] WireGuard Linux Kernel Integration Techniques
    Nov 8, 2017 · WireGuard is a formally verified secure tunneling protocol written and designed with the Linux Kernel as its primary op- erating context.
  21. [21]
    Installation - WireGuard
    WireGuard can be installed on Windows via installer, macOS via app store, Ubuntu with `sudo apt install wireguard`, Android via Play Store, and iOS via app ...Quick Start · WireGuard Windows client · Android client · Cross-platform Interface
  22. [22]
    Cross-platform Userspace Implementation - WireGuard
    While WireGuard has initially been developed for the Linux kernel, for maximum performance, it may run in userspace using a separate implementation. Currently ...
  23. [23]
    WireGuard/wireguard-go: Mirror only. Official repository is ... - GitHub
    This is an implementation of WireGuard in Go. Usage Most Linux kernel WireGuard users are used to adding an interface with ip link add wg0 type wireguard.Missing: daemon | Show results with:daemon
  24. [24]
    WireGuard - App Store - Apple
    Rating 4.3 (870) · Free · iOSWireGuard is a fast, modern, and secure VPN tunnel. This app allows users to manage and use WireGuard tunnels. The app can import new tunnels from archives ...Missing: Android | Show results with:Android
  25. [25]
    WireGuard - Apps on Google Play
    Rating 4.3 (16,654) · Free · AndroidThe official app for managing WireGuard VPN tunnels. Updated on. May 31, 2025 ... Visit https://git.zx2c4.com/wireguard-android/log/ for changes.Missing: iOS | Show results with:iOS
  26. [26]
    wg - set and retrieve configuration of WireGuard interfaces
    wg is the configuration utility for getting and setting the configuration of WireGuard tunnel interfaces.
  27. [27]
    [OpenWrt Wiki] WireGuard server
    Oct 5, 2025 · Table of Contents · 1. Installing packages · 2. Restarting services · 3. Add WireGuard Network Interface · 4. Configure the WireGuard Network ...
  28. [28]
    Connect pfSense, OPNsense, MikroTik & OpenWrt in One Click
    May 8, 2025 · Once your RAG is set up, you generate a WireGuard configuration file specifically for your router. Navigate to the Remote Access tab in your ...<|separator|>
  29. [29]
    WireGuard - www.ipfire.org
    Aug 24, 2025 · WireGuard is a modern, open-source VPN protocol designed for simplicity. Unlike other VPN solutions, such as OpenVPN or IPsec, WireGuard is very lightweight.
  30. [30]
    Best Wireguard VPN (as of October 2025) - All Things Secured
    Oct 1, 2025 · Mullvad has a reputation as being one of best VPNs in terms ... WireGuard VPN providers include Mullvad VPN, ProtonVPN, AirVPN, and OVPN.
  31. [31]
    WireGuard Setup guide for OpenWrt - IVPN
    In your router's webUI, navigate to System - Software , click Update lists . In the Filter field, type WireGuard, locate and install the wireguard-tools ...
  32. [32]
  33. [33]
    WireGuard support and deployment - IANIX
    Here's a list of software and things that use or support the state of the art WireGuard VPN by Jason A. Donenfeld.
  34. [34]
    Embedding into Applications - WireGuard
    The WireGuard Project's client applications have been designed with maximum reusability in mind, such that it is possible to create custom applications that ...
  35. [35]
    BoringTun, a userspace WireGuard implementation in Rust
    Mar 27, 2019 · It is called BoringTun, and is a userspace implementation of the WireGuard® protocol written in Rust.
  36. [36]
    DefGuard/wireguard-rs: Rust library providing unified ... - GitHub
    A multi-platform Rust library providing a unified high-level API for managing WireGuard interfaces using native OS kernel and userspace WireGuard protocol ...
  37. [37]
    WireGuard Implementation for lwIP - GitHub
    This project tackles the problem of using WireGuard® on embedded systems in that it is: malloc-free so fits into a fixed RAM size; written entirely in C; has ...
  38. [38]
    chili-chips-ba/wireguard-fpga - GitHub
    Full-throttle, wire-speed hardware implementation of Wireguard VPN, using low-cost Artix7 FPGA with opensource toolchain.<|control11|><|separator|>
  39. [39]
    WireGuard / CVE-2019-14899: How secure the protocol really is?
    Aug 21, 2020 · CVE-2019-14899 allows an attacker to probe TCP connections and inject packets into unencrypted streams, by the OS merging trusted and untrusted ...
  40. [40]
    [PDF] FUZZVPN: Finding Vulnerabilities in OpenVPN - USENIX
    Aug 12, 2025 · Equipped with the MSC, we created FUZZVPN to perform systematic adversarial testing with malformed configurations, replay attacks, resilience to ...
  41. [41]
    WireGuard VPN — Is It Still Private, Secure, and Free in 2025?
    Rating 4.0 (2) May 25, 2025 · WireGuard is known for being secure, fast, and free, but it logs your IP address. Thankfully, you can take advantage of WireGuard's strong security features.The Best Wireguard Vpns... · 3. Ipvanish -- No Connection... · Faqs About Wireguard
  42. [42]
    WireGuard VPN review: A new type of VPN offers serious advantages
    Aug 26, 2018 · WireGuard is a new type of VPN that aims to be simpler to set up and maintain than current VPNs and to offer a higher degree of security.
  43. [43]
    WireGuard VPN explained - IONOS
    Feb 14, 2023 · In comparison, the code size of an implementation of OpenVPN or IPsec is around 100,000 to 600,000 lines. A smaller code base is inherently ...
  44. [44]
  45. [45]
    OPNsense Wireguard: Setup and Configuration - zenarmor.com
    Jul 17, 2025 · In this guide, we walk you through the complete setup of WireGuard on OPNsense, a powerful open-source firewall and routing platform.<|control11|><|separator|>
  46. [46]
    Hardening Your WireGuard Security: A Comprehensive Guide
    Oct 20, 2025 · This guide shows how to harden a WireGuard VPS – understanding what the protocol secures (and what it doesn't), locking down the host, adding a ...
  47. [47]
    WireGuard | OTF - opentech.fund
    Open Technology Fund Logo · Get Support · Funds · Internet Freedom Fund · Rapid ... WireGuard. Building a more secure, accessible and resilient WireGuard VPN ...
  48. [48]
    [PDF] Pentest-Report Mullvad Apps, Clients & API 05.2020 - Cure53
    Jun 3, 2020 · This report describes the results of a thorough security assessment of the Mullvad complex. Carried out by Cure53 in May and June 2020, the ...
  49. [49]
    WireGuard | OTF - opentech.fund
    Mar 18, 2024 · Building a more secure, accessible and resilient WireGuard VPN protocol. Virtual Private Networks (VPN) are used around the world as both an ...
  50. [50]
    Security tips for WireGuard VPN - Ubuntu Server documentation
    You can add another layer of cryptographic protection to your VPN with the PreSharedKey option. Its use is optional, and adds a layer of symmetric-key ...
  51. [51]
    Chapter 8. Setting up a WireGuard VPN | Red Hat Enterprise Linux | 9
    ... mtu 1420 qdisc noqueue state UNKNOWN group ... You can configure the WireGuard server by creating a configuration file in the /etc/wireguard/ directory.
  52. [52]
  53. [53]
    [New] VPN Performance Results (Wireguard, IPSec, OpenVPN)
    Sep 19, 2025 · Wireguard ; VP6630, 4.8Gbps (4800 Mbps), 25.7 ; VP6650, 4.6 Gbps (4600 Mbps), 25.7 ; VP6670, 5.01 Gbps (5010 Mbps), 25.7 ; FW2B, 280 Mbps, 25.7.
  54. [54]
    Surpassing 10Gb/s with Tailscale: Performance Gains on Linux
    Apr 13, 2023 · Tailscale joins the 10Gb/s club on bare metal Linux, and wireguard-go pushes past (for now) the in-kernel WireGuard implementation on that hardware.
  55. [55]
    WireGuard VPN Guide - zenarmor.com
    Jun 30, 2021 · WireGuard is an open-source, free, fast, modern VPN using cutting-edge cryptography, designed for various platforms, and is a new VPN protocol.
  56. [56]
    Does a VPN Drain Battery Life in 2025? - Privacy Affairs
    Jul 1, 2024 · The WireGuard protocol, on the other hand, is lightweight and draws less power. The IKEv2 protocol will give you better stability on cellular ...
  57. [57]
    WireGuard – A Modern-Day VPN Protocol - SonicWall
    Nov 28, 2022 · The lightweight design and reliance on UDP deliver faster throughput speeds and reduced latency when compared to any other VPN protocols. As ...
  58. [58]
    WireGuard VPN in 2025: Fast and Secure, but Not Private?
    Jan 3, 2025 · WireGuard is a VPN protocol that promises faster speeds and improved security. Unfortunately, it also has some privacy drawbacks.Missing: extensions | Show results with:extensions
  59. [59]
    WireGuard VPN | Contabo Blog
    Oct 24, 2025 · WireGuard is designed to provide secure and efficient networking. Its codebase is minimal, which reduces complexity and simplifies auditing. It ...How Wireguard Works · Key Features · Performance And Reliability
  60. [60]
    PPTP vs IPSec IKEv2 vs OpenVPN vs WireGuard - IVPN
    Verdict. WireGuard® is an excellent choice and may be the best protocol for high speeds. WireGuard® promises better security and faster speeds compared to ...
  61. [61]
    Performance - WireGuard
    In theory WireGuard should achieve very high performance. There are still a few things to be done for that to happen.
  62. [62]
    IPsec vs. WireGuard | Tailscale Comparison Matrix
    WireGuard is a more modern, simpler VPN protocol than IPsec, as well as being more secure by default. As of 2021, most operating systems support WireGuard ...
  63. [63]
    Comparing IPsec and WireGuard for Enterprise Networks
    Jul 24, 2025 · Choosing between IPsec and WireGuard? This guide compares the two VPNs on speed, security, and setup to help you make the right network ...What Is Wireguard? · Ipsec Vs Wireguard: Key... · Security Features Of Ipsec...
  64. [64]
    RFC 8922 - A Survey of the Interaction between Security Protocols ...
    For example, newer protocols such as WireGuard make unique design choices that have implications for and limitations on application usage. In contrast ...Missing: comparison | Show results with:comparison
  65. [65]
    Wireguard vs IPSec | Products - IONOS Cloud Documentation
    Aug 1, 2024 · Performance: WireGuard typically outperforms IPSec in terms of connection speed and resource efficiency. Ease of Use: WireGuard is easier to set ...WireGuard · Internet Protocol Security (IPSec)
  66. [66]
  67. [67]
  68. [68]
    The rise of WireGuard for remote access VPNs - HPE Community
    Apr 25, 2025 · WireGuard emerged around 2015. Looking back on two decades of IPSec, the designers targeted the development of a simpler, faster, and more secure alternative.Missing: extensions | Show results with:extensions
  69. [69]
    Evolution of WireGuard in 2025: The Future of VPN Protocols
    Oct 29, 2025 · Explore WireGuard's journey from experimental protocol to mainstream VPN technology - discover its impact on VPN performance, security, ...
  70. [70]
    netdev - Searching for mentor - writing kernel-space VPN & more
    Jul 3, 2015 · ... 2015 02:46:38 +0200 From: "Jason A. Donenfeld" <Jason@...c4.com> To ... Powered by Openwall GNU/*/Linux · Powered by OpenVZ.
  71. [71]
    How Jason a. Donenfeld Created Secure VPN WireGuard, Included ...
    Jan 16, 2021 · Donenfeld started the project in 2015, and spent years building an open-source community to support WireGuard. He spoke with Business Insider ...Missing: openwall letter
  72. [72]
    WireGuard Gives Linux a Faster, More Secure VPN - WIRED
    Mar 2, 2020 · WireGuard, created by security researcher Jason A. Donenfeld, is smaller and simpler than most other VPN software. The first version of ...
  73. [73]
    [RFC] WireGuard: next generation secure network tunnel
    Jun 28, 2016 · Hi Dave & Folks, Today I'm releasing WireGuard, an encrypted and authenticated tunneling virtual interface for the kernel.
  74. [74]
    [PDF] WireGuard - Fast, Modern, Secure VPN Tunnel
    Mar 31, 2017 · ▫ Modern primitives: Curve25519, Blake2s, ChaCha20, Poly1305,. SipHash2-4. ▫ Lack of cipher agility! Page 25. Crypto. ▫ Key secrecy.
  75. [75]
    ZX2C4
    The portal for geek projects of Jason A. Donenfeld, also known as ZX2C4.Missing: creation | Show results with:creation<|control11|><|separator|>
  76. [76]
    Linux Kernel 5.6 Officially Released with Built-In WireGuard Support
    Mar 30, 2020 · Linus Torvalds announced the release of the Linux 5.6 kernel series, the first to ship with built-in WireGuard support.
  77. [77]
    Linus Torvalds pulled WireGuard VPN into the 5.6 kernel source tree
    Jan 29, 2020 · Linus Torvalds pulled WireGuard VPN into the 5.6 kernel source tree. The last likely hurdle to inclusion in the Linux kernel itself is cleared.Missing: milestones: date
  78. [78]
    WireGuard for iOS - now in the App Store
    Dec 20, 2018 · WireGuard for iOS - now in the App Store. Jason A. Donenfeld Jason at zx2c4.com. Thu Dec 20 02:04:34 CET 2018.
  79. [79]
    WireGuard APK Version History - APK4Fun.com
    WireGuard App Version History. WireGuard v1.0.20231018 APK (Latest Version APK). ▻ Updated: October 18, 2023. ▻ What's New in Version 1.0.20231018: Visit ...
  80. [80]
    WireGuard for Windows 0.3.1 is the release you've been waiting for
    Nov 25, 2020 · WireGuard for Windows 0.3.1 is the release you've been waiting for. Unprivileged users can start and stop WireGuard tunnels via the UI now.
  81. [81]
    Linux Kernel 6.12 Released: Key Features and Improvements
    Dec 12, 2024 · Explore the latest features of Linux Kernel 6.12, including real-time processing, improved hardware support, and enhanced security.Missing: WireGuard | Show results with:WireGuard
  82. [82]
    IPFire 2.29 - Core Update 196 released
    Jul 22, 2025 · IPFire 2.29 includes WireGuard improvements, kernel update to Linux 6.12.34, updated GCC, modernized console, and many updated packages.
  83. [83]
    [PDF] ANNUAL REPORT - public - opentech.fund
    This report covers the activities supported by Open Technology Fund. (OTF), with a small number of exceptions for highly sensitive projects, from October 2019 ...
  84. [84]
    draft-pauly-taps-transport-security-01 - IETF Datatracker
    ... WireGuard offers no extensibility, negotiation, or cryptographic agility. 3.8.1. Protocol description WireGuard is a simple VPN protocol ... message types ...<|separator|>