24 ms·
WireGuardNT, a high-performance WireGuard implementation for the Windows kernel
- nixcraft 5y agoI would like to see 2FA (app or security key) support built into WireGuard. Otherwise, it is perfect as compared to the OpenVPN mess.
- atonse 5y agoTailscale solves all these problems, including SSO. Can you tell I’m a very happy customer?
- deskamess 5y agoDo you have any Windows systems in your network? I am looking to restrict RDP sessions to a closed Wireguard network.
- atonse 5y agoWe did for a couple new people and then replaced them with Macs (for irrelevant reasons). But while they were on Windows, Tailscale worked perfectly on their machines too.
- jagger27 5y agoIsn’t that just a roundabout way of asking for PSK support (which it already has)?
- yobert 5y agoThink of wireguard as the plumbing. There will be a plethora of things available on top of wireguard that will enable all sorts of easy authentication options. (For example, TailScale.)
- vbezhenar 5y agoHow this plumbing is expected to be implemented? For example Cloudflare Warp uses Wireguard for its VPN solution, but all key exchanges and other stuff happens via HTTPS REST calls. Is it expected for any non-trivial implementation to build a different "control" protocol? For me it sounds like a dangerous approach. While wireguard protocol will be safe and audited, those additional proprietary protocols will hinder cross-platform usage (for example you had to use reverse-engineered Cloudflare Warp implementation for Linux until recently and I guess that BSDs will use it forever) and might expose security vulnerabilities on their own.
- corty 5y agoYes, you are exactly right. Wireguard is a typical example of a thing I'd call myopic-cryptographer-protocol. Solve one problem in the minimal fashion that can be called proof-of-concept, do it in a maybe-more-secure way and call it done. Everything else, like proper key distribution and user management, which you need for a real-world deployment that isn't just a personal toy, is left as an exercise to the reader. All the readers will screw up in different ways, after which the myopic cryptographer will explain that his protocol was of course perfect and there is nothing wrong with it, you are just holding it wrong...
- kook_throwaway 5y agoThat's one way to look at it. Another would be "Do one thing and do it well", which is Unix philosophy. https://en.m.wikipedia.org/wiki/Unix_philosophy https://en.m.wikipedia.org/wiki/Unix_philosophy
- phkahler 5y agoAnother might be that existing VPN solutions will gut the bottom of their stack and use WireGuard for that, thereby reducing complexity and increasing performance.
- 5y ago
- anonymousiam 5y agoWireGuard is not MFA, but the user's private key could probably be stored in a smart-card instead of on disk. Software changes would need to be made so the key is read from the card instead of specified in the wgx.conf file. To achieve true MFA, it would need either a password, TOTP, or SMS in addition to the stored keys.
- corty 5y agoNope, can't. Storing a Wireguard key on a Smartcard isn't possible, because current cards do not support the key format and algorithms Wireguard uses. Only RSA and ECDSA on NIST curves are available on Smartcards. And "reading" the key from the card would make the card useless, the important feature of a smartcard is that it doesn't ever make the key available for reading. Instead, the key is used for signing or decrypting _on the card_ only. If you can really read a key off of a smartcard, sue the manufacturer and never use the key or card again.
- pat2man 5y agoTechnically if the card could sign fast enough, you could sign packets on the card.
- pritambaral 5y agoWireGuard seems to use symmetric key crypto for packet encdec. The card would need to sign only the handshake, which occurs "every few minutes"[1] and "is done based on time, and not based on the contents of prior packets"[1]. 1: https://www.wireguard.com/protocol/ https://www.wireguard.com/protocol/
- corty 5y agoYou only need to sign the packets in the key exchange on the card. The normal payload packets are protected by symmetric algorithms based on the ephemeral symmetric key generated in the key exchange, no need (and no use) to involve the smartcard there.
- the8472 5y ago
- idorosen 5y agoWireGuard itself doesn't even handle its existing authentication fully -- you are expected to exchange peer public keys out of band. There are several projects that try to tackle this public key exchange. I think what you're asking for, indirectly, is support for certificate authority style authentication similar to how SSH CAs work, so that wireguard could authenticate tunnels using certificates with signed pubkeys instead of statically configured pubkeys themselves for each peer. If the wireguard core included any kind of timed partial delegation of authority through key signatures (similar to what SSH allows now with cert-authority/CertificateFile), that'd be enough to build SMS/HOTP/TOTP 2FA, security keys, and much more on top of it.
- drexlspivey 5y agoAdding features like this that should be implemented on a different layer is the perfect way to turn it to the OpenVPN mess
- EwanToo 5y agoPritunl has wireguard support and works well for this
- stjohnswarts 5y agoI think you'll have to use other options for that. I don't see them ever implementing 2FA as that is outside the goals of the project. They want to keep it has slim, performant, and on target as possible.
- Panino 5y agoVery impressive performance: > While performance is quite good right now (~7.5Gbps TX on my small test box), not a lot of effort has yet been spent on optimizing it > Jonathan Tooker reported to me that, on his system with an Intel AC9560 WiFi card, he gets ~600Mbps without WireGuard, ~600Mbps with wireguard-go/Wintun over Ethernet, ~95Mbps with wireguard-go/Wintun over WiFi, and ~600Mbps with WireGuardNT over WiFi. Congratulations to Simon and Jason! Very happy WireGuard user here.
- brian_herman 5y agoYes, I am gonna reinstall wireguard on my raspberry pi again. This is amazing news. And I will try and getting my windows server ryzen pc to be a router so I can benchmark all four configs.
- eptcyka 5y agoIf you're running a recent enough kernel, it's technically already there, maybe without the userspace tools.
- alexellisuk 5y agoHave you checked out some of the other options for remote access to your Raspberry Pi, like Tailscale (no affiliation) and inlets https://johansiebens.dev/posts/2020/11/quake-iii-arena-k3s-and-a-raspberry-pi/ https://johansiebens.dev/posts/2020/11/quake-iii-arena-k3s-a...?
- jve 5y agoPeople always compare bandwidth which is important. Has anyone done any comparisons how latency is affected between various VPN implementations?
- zekica 5y agoWireguard adds fixed latency as it doesn't do any buffering except for the one packet it is currently working on. The only exception is initial handshake which adds 1rtt for the first packet being sent.
- zinekeller 5y agoWhile the driver can be licensed under GPLv2 (all kernel drivers needs to be signed by Microsoft*, and VirtIO is a precedent¤ that you can do it), I'm not sure if the header should be licensed under GPLv2, mainly because it would stifle Wireguard adoption. * In ordinary conditions. Test-sign mode does exist. ¤ ... for example, these Red Hat versions: https://www.catalog.update.microsoft.com/Search.aspx?q=Red%20Hat https://www.catalog.update.microsoft.com/Search.aspx?q=Red%2...
- vetinari 5y agoYou can get them here: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/ https://fedorapeople.org/groups/virt/virtio-win/direct-downl... packaged in a nice iso, ready to use for iso store of your hypervisor. (It might be also slightly newer; v204 is 100.85.104.20400).
- Denvercoder9 5y agoThe header is dual-licensed under GPLv2 and MIT.
- shawnz 5y agoVirtIO changed license from GPL to BSD so that it could be signed by Microsoft. See here: https://github.com/virtio-win/kvm-guest-drivers-windows/commit/d9da33e851c15e23dce8e926d7652dcb7b357e16 https://github.com/virtio-win/kvm-guest-drivers-windows/comm...
- benbristow 5y agoI've had good experiences using Tunsafe compared to the official client. Get full gigabit speeds from a decent VPN provider.
- karmanyaahm 5y agofancy! i'll ask my friends on windows to test this
- kzrdude 5y agoWhat is WireGuard, is it a new protocol? Or a new algorithm for implementing an existing thing? (Or something else)
- nicoburns 5y agoIt's a VPN protocol whose USP is being dramatically simpler than OpenVPN, which should mean that it is both easier to use and more secure (and consensus seems to be that it generally delivers on both of those fronts).
- Denvercoder9 5y ago> It's a VPN protocol whose USP is being dramatically simpler than OpenSSL What? WireGuard is a VPN protocol (and implementation), while OpenSSL is an implementation of TLS. They're not competing with each other, and you can't compare them.
- freedomben 5y agoGP probably meant OpenVPN
- cosmosgenius 5y agoi think it was meant to be openvpn instead on openssl
- nicoburns 5y agoYep, got the wrong Open* software. Not sure how I managed that.
- deleted 5y ago[deleted]
- basch 5y agodramatically simpler than IPsec. IPSec is Internet Layer, while TLS/SSL (OpenSSL) are Application Layer
- bob1029 5y agoThis is exciting to me. I have tripped over every VPN technology listed on Wikipedia at one point or another during my career. Always open to something better. I think IPSec or OpenVPN are probably the opposite of what WG is offering here... Microsoft's SSTP offering is actually not causing me any major frustration at the moment. I almost like using it. But, seeing these other comments telling tales of 600 megabit VPN wifi experiences... I'll check it out for sure.
- midasuni 5y agoI had an sstp tunnel refuse to establish a few weeks ago. WireGuard was fine. Turns out the provider was MITMing tcp/443 traffic
- planetafro 5y agoWouldn't they need a cert/custom CA on your box to do that?
- SahAssar 5y agoThey could just block all tcp/443 traffic that they couldn't MITM, that's not uncommon in those kinds of setups.
- agolliver 5y agoThey need their custom CA on your box for your machine to accept the traffic by default, otherwise you'll get a big ugly untrusted cert error on every https/ssl connection, but some apps will let you ignore those (eg: curl --insecure) I worked at a company that did this and it was a massive headache, every time I wanted to set up a new VM things would fail until I remembered I had to install their CA. I was an intern at the time, and they gave me some work that required an app that I couldn't configure to use their CA for the life of me. After a lot of failed troubleshooting I and ended up just running a SSH server on my home PC and creating a SOCKS proxy through that.
- no_time 5y agoYes. My university was using Fortigate back in the day and it had 3 behaviours -Allow with no mitm (trusted sites) -Block with no way around it(all residental IPs, pornsites) -Allow but mitm the connection. The browser would present the classic ERR_UNKNOWN_ISSUER warning that most people would ignore. I couldn't figure out what criteria decided that a certain site needs the mitm treatment.
- aborsy 5y agoIn some networks, I only have outgoing tcp ports 80 and 443. Does anyone have experience with udp2raw or udptunnel?
- Datagenerator 5y agoYou might want to use [1] 1) https://github.com/lrvl/tunnel-wireguard-udp2tcp https://github.com/lrvl/tunnel-wireguard-udp2tcp
- corty 5y agoThat is a first step, but what you really want to do (and what most commercial VPN solutions are doing) is tunneling the VPN via https. Preferably with a real-looking web server at one end, so that "firewall solutions" have something to look at and scan for evil keywords. Oh, and you might have to disguise the traffic pattern as something that looks like http, so frequent reconnects. And the payload has to be web-like so that a MitM-proxy sees something like http, so an one direction is a POST, the other is the respective response, and if you cannot do persistent connections because the proxy kills them you'll have to poll at least in one direction. Yes, this is supremely ugly, but unfortunately entrenched and expected by now. I've been to customers with intrusive filtering/scanning setups like that who then recommended their favourite commercial VPN vendor to get around that filtering...
- PhantomGremlin 5y agoThis is just insane. Everything except WWW is blocked, so everything must pretend to be WWW???!!! So can anyone explain the purpose of the "source port" and "destination port" fields in the TCP header? :-)
- corty 5y agoSeems you missed the "big web revolution" between 2000 and now. Corporate/school/uni firewall madness filters everything but http(s), so each and every protocol has to be somehow http(s). That is why there are almost exclusively webmail providers anymore. Why stuff like videoconferencing must be http-based. Why we do everything by emulating better protocols via polling a webserver for xml or json responses. Yes, it is insane.
- roozbeh18 5y agoWireGuard is so good, sometimes I forget I am on vpn and only realize it when downloading a large file that my speed is capped by my home speed.
- AlexanderTheGr8 5y agoI am curious. Which VPN do you use for daily activities?
- daxcurzon 5y agoMullvad is a popular WireGuard provider and well respected by HN users. I usually get about 700-800mbps on my home gigabit connection when using WireGuard and Mullvad. There are at least several other providers out there. Ideally you can find one where their nearby servers use the same IX as your ISP and/or peer with your ISP.
- ec109685 5y agoAny thought if Windows will embed this natively similar to how Linux pulled WireGuard into the kernel?
- Macha 5y agoNot in its current form: https://git.zx2c4.com/wireguard-nt/tree/COPYING https://git.zx2c4.com/wireguard-nt/tree/COPYING
- YPPH 5y agoLicensing issues aside, do we really want to rely on Microsoft to keep it up to date? I can imagine it becoming quickly outdated, particularly in enterprise skews. I think it's best left to the Wireguard team and not Redmond.
- corty 5y agoThere is no "outdated", wireguard has no extensibility on purpose. You might just have to wait for wireguard2. And security patches will be delivered in the usual Microsoft fashion, 8 tuesdays after the exploit started circulating.
- YPPH 5y agoIn Jason's post, he says: >While performance is quite good right now [...] not a lot of effort has yet been spent on optimizing it, and there's still a lot more performance to eek out of it, I suspect, especially as we learn more about NT's scheduler and threading model particulars. [emphasis added] Are you suggesting that these performance improvements will be contained in 'wireguard2'? Surely there will be improvements to the codebase, even if they don't involve fixing defects that undermine fundamental security assumptions.
- corty 5y agoNo, I think not. I guess that is an area where one would miss out without updates, but on the other hand, performance is already "good enough" for most endpoints. Of course, for operating a VPN concentrator you always want more performance, but then again, you won't do that on windows I guess.
- 1-6 5y agoStill patiently waiting for a WireGuard implement to appear on Asuswrt-Merlin.net
- jiggawatts 5y agoFor reference, I've never seen the built-in Windows VPN protocols exceed ~70 Mbps in any scenario. Maybe it's possible with a crossover cable between two Mellanox 100 Gbps NICs, using water-cooled and overclocked CPUs, but not over ordinary networks with ordinary servers. I have gigabit wired Internet to a site with gigabit Internet. Typical performance of SSTP or IKEv2 is 15-30 Mbps. That's 1.5% to 3% max utilisation of the available bandwidth, which is just... sad. It's not the specific site either, other vendor VPNs can easily achieve > 300 Mbps over the same path. It's a year and a half into the pandemic, there are record numbers of people working from home, and Microsoft is the world's second biggest company right now. Meanwhile, volunteers put together a protocol in their spare time that is not only more secure but can also easily do 7.5 Gbps! That needs to be repeated: At least ONE HUNDRED TIMES faster than the "best" Microsoft can offer to their hundreds of millions of enterprise customers that are working from home. Someone from Microsoft's networking team needs to read this, and then watch Casey Muratori's rant about Microsoft's poor track record with performance: https://www.youtube.com/watch?v=99dKzubvpKE https://www.youtube.com/watch?v=99dKzubvpKE
- 1vuio0pswjnm7 5y ago"... with a crossover cable..." Many years ago, I once brought a crossover cable from home to the office to do some data transfer from a workstation to a company-issued laptop. The IT department issuing the laptop, being lovers of all things Microsoft, claimed crossover cable was "obsolete" due to auto-sensing used by Windows. I am just another dumb end user, I do not work in IT, but I still get faster data transfer between two computers with crossover cable than by going through a third computer, or God forbid, over Wifi. Sounds like crossover cable is not "obsolete" after all. Who would have thought. Microsoft's customers, e.g., IT departments, are arguably complicit in the sad "state-of-the-art" you describe. The best software I have ever used was written by volunteers. Money can't buy everything. As Microsoft has shown, it can certainly buy customers.
- compressedgas 5y agoHave you tried connecting two computers with just a patch cable? With the auto-sensing Ethernet ports, it works as if the cable were a crossover cable.
- YPPH 5y agoThe Wireguard team are simply brilliant. It's incredible how they have developed low-level, cross-platform solutions across Linux, OpenBSD, FreeBSD and now Windows. I think they are truly exceptional programmers. It's hard to think of people who have come anywhere close to such an achievement.
- fomine3 5y ago"NT" suffix for WinNT port looks somewhat classical, I like it.
- sandGorgon 5y agoanyone know the WSL story here ? will WSL hook into WireguardNT ?
- no_time 5y agoWill it be possible to fall back to the userspace implementation to use obfuscation software like shadowsocks? Or will it be deprecated? Unfortunately the recent popularity means that almost all DPI software recognize the wireguard handshake.
- PhantomGremlin 5y agoalmost all DPI software recognize the wireguard handshake. Why should that matter? How does the DPI software get your keys? Isn't WireGuard data flow completely opaque to anyone or anything between endpoints? If the DPI software blocks WireGuard packets, that's an entirely different discussion. It gets into the area of "technical solutions" to fight "administrative policy".
- d110af5ccf 5y ago> It gets into the area of "technical solutions" to fight "administrative policy". Yes, that's exactly the point. Sometimes that's the best course of action available to you. If the userspace implementation were to be deprecated that could pose difficulties.
- zekica 5y agoWhy would it be an issue? Can't you specify localhost as the endpoint and use the proxy to send it where it needs to go? What is the difference between the implementations?
- no_time 5y agoI like to visualize networks as a series of tubes in my head. Maybe I'm misunderstanding something but I'm imagining a kernel driver that acts as a separate network interface proxying to localhost as a klein bottle[0] esque object [0]: https://en.wikipedia.org/wiki/Klein_bottle https://en.wikipedia.org/wiki/Klein_bottle
- riobard 5y ago
- riobard 5y agoOn one hand I'm super excited for the performance and convenience of in-kernel WireGuard (huray!) On the other I'm sad that once it's accepted into kernel, it won't be possible to add interesting changes (e.g. obfuscation, forward erasure correction, etc). I'm torn apart :P
- combyn8tor 5y agoCan anyone elaborate on how this is implemented? Are they using WFP in some way?