age123456gpg 12 hours ago

You can create prefixed keys (aka vanity key) for each peer using https://github.com/AlexanderYastrebov/wireguard-vanity-key

    $ wireguard-vanity-key --prefix=mac/
    private                                      public                                       attempts   duration   attempts/s
    Mtvsq5urRK/HRE1EfqTkZ9dtBNNBjSVPbqYBZ/BL4Qw= mac/t3wcAUhyZUti7OM4KsGQ7/V00HPRmzI3agaSplM= 37258118   1s         70119328

    $ wireguard-vanity-key --prefix=ipad/
    private                                      public                                       attempts   duration   attempts/s
    hJXdv5FKyem2WqWzduSaEhEw1H4b+6BGTIqJeYu9H1c= ipad/s6w2nBEDhmuEl/xyLeohEbfc5MWUy5D8dJHgAs= 158299886  2s         69564916
cyphax 12 hours ago

I've had wireguard in a container for a few years, and it's never failed me. I will say it took me a long time to get the firewall part of the configuration right but the configuration is otherwise simple. When I'm on the road I can access all the things I self host, which I don't have to expose anything of to the outside world.

I also really like using qr codes to transfer a configuration to a phone (mostly used by me once when I replaced my phone): https://www.cyberciti.biz/faq/how-to-generate-wireguard-qr-c...

  • SyrupThinker 11 hours ago

    The amount of people here just exposing their network to Tailscale, and recommending others to do the same, is surprising, to say the least.

    I've set up Wireguard on a VPS once six years ago, and nothing needed adjustment since. It is as easy as you make it out to be, and depending on the use case the firewall rules can also be simple.

    If I need to add a new device, which is probably a rarity for the average user, and once a year for me, it takes two minutes to edit two files and restart a service.

    I can see reasons why one would want to use Tailscale, especially in an organization. But just uncritically recommending it for home-lab like setups seems as harmful as pushing people to Cloudflare for everything.

    • FrankPetrilli 11 hours ago

      Inter-node mesh with raw Wireguard is an exercise in patience to say the least; I have a few different colo sites, my house, my phone, LTE/5G hotspots, raspberry pi projects in the field, etc that I want to fully connect together.

      Raw Wireguard is fine for a road warrior or site-to-site VPN setup as is common, but when you want multipoint peer-to-peer connections without routing through what might be a geographically distant point, magic DNS, etc, Tailscale really shines through.

      If you're paranoid, enable https://tailscale.com/kb/1226/tailnet-lock or run https://headscale.net/ on your own as a control server.

      • SyrupThinker 10 hours ago

        For P2P I can totally see the advantage.

        Although at that point I'm sure you, and any similar user, would not actually rely on ad-hoc advice like in this thread, and instead just evaluate what is needed.

        As an aside, personally speaking, headscale solves basically none of my concerns associated with introducing more software, complexity and third parties (the maintainers) into my network setup. Less so because of paranoia towards the software/product itself, and more so because of the increased surface area to attack.

        But I also think that anyone actually bothering to set headscale up probably falls into the aforementioned group of people that actually thinks about their requirements.

  • jazzyjackson 12 hours ago

    whoa that's super useful. I've been trying to figure out what I'm going to do to let my family access my server. What client do you recommend on the phone end? Or does the phone support connecting to wireguard out of the box?

    • zuhsetaqi 12 hours ago

      The best client is from WireGuard. It’s super efficient in my experience. It even supports on demand VPN where you can define network it should activate or deactivate the VPN.

paulgerhardt 12 hours ago

[2019]

(In 2025, using Tailscale simplifies a lot of the configuration and reachability parts. This guide omits a lot of the hurdles one will run into with NAT traversal and the macOS section is a little dated.)

  • dpoloncsak 12 hours ago

    I am a huge proponent of Tailscale, and I've moved my entire stack into my tailnet. Even my steam deck.

    With that said, as another user (th0ma5) pointed out, "The only downside is that the Tailscale organization will be privy to your actions online as well."

    While Tailscale and Wireguard serve the same purpose for most, it is not a direct replacements. To most users, this doesn't matter. To a few, it may be a breach of OpSec

    With all this said, Tailscale reportedly cannot see anything. Per https://tailscale.com/blog/opensource

    "By making the Tailscale clients open, you can see that we don’t collect your private keys. And by making Tailscale’s DERP servers open, you can see that we can’t capture your encrypted traffic. We don’t see your data and we don’t want to. We hope that keeping this code open increases trust and transparency in Tailscale because anyone can review the code and see that Tailscale really works the way we claim."

    • Lammy 11 hours ago

      That's a total red herring. They see the metadata (data about data) of every connection you make. They don't need to capture any encrypted data to tell a whole heck of a lot about you: https://kieranhealy.org/blog/archives/2013/06/09/using-metad...

      • SvenL 10 hours ago

        Exactly, also, as long as there is no way of verifying that the source they opened up is the one they are running, it’s still a trust thing.

torium 12 hours ago

I am also one of those people who "don’t usually do a lot of networking stuff", so here's a question.

The article contains this:

    #replace eth0 with the interface open to the internet (e.g might be wlan0 if wifi)
    PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

However, I use mullvad and the .conf files that they provide contains none of this, and works just fine. It contains just: interface, private key, address, dns and peer public key, allowed ips, entrypoint.

So, which one is right and why?

  • Ingon 12 hours ago

    I have to double check, but I believe this is server-side/exit node configuration. In case of mulvad, something similar might be on their servers.

  • thedanbob 12 hours ago

    Those lines are only needed on the VPN server, not the client(s).

spott 11 hours ago

I have a wireguard server at home, and it is great.

The iPhone and Mac official wireguard clients allow you to set “excluded” wireless SSIDs, so if you are out and about, and not on a SSID that matches one of your excluded SSIDs, you are automatically connected to wireguard.

I have it setup to dump me onto my home network (it doesn’t NAT me behind the wireguard server) so I’m just always on my home network. By default, I only route home network traffic through wireguard, but I’ve also routed everything when I need to.

The whole configuration is in a Nixos configuration file as well, which is nice.

One of these days I should write up something about my homelab…

  • 000ooo000 3 hours ago

    >official wireguard clients allow you to set “excluded” wireless SSIDs, so if you are out and about, and not on a SSID that matches one of your excluded SSIDs, you are automatically connected to wireguard.

    Very neat, thanks for sharing. Hopefully the Android client is the same. A home WG server is next up on my homeland TODO. WG-easy looks to be a good spot to start.

pseudosavant 12 hours ago

I love Wireguard, but if you want to do this, I think there are only two ways that make sense for most users.

The best option is just to use tailscale, either on your router or on a device on the network that is always on, and set it as an exit node. It uses Wireguard under-the-hood, and it way easier to setup.

If you really must use Wireguard directly, get a router like a GL.iNet with OpenWRT that has a Wireguard server built-in. It'll handle creating certs for users, etc.

  • th0ma5 12 hours ago

    Tailscale has some fundamental security assumptions that some people may not like for it to be so reflexively suggested all the time, but also, the last mile of user interface issues plague the whole of cryptography systems.

  • FL410 12 hours ago

    Tailscale is slloowwww and I'm not a big fan of someone else controlling my network. Yeah, tailnet lock at all that, I know, but still...

    • LeoPanthera 12 hours ago

      Tailscale in most cases establishes direct links between the nodes so it can't be any slower than the speed of the network you're already using.

      • FL410 11 hours ago

        And when it doesn't (which is often the case behind NAT), you're at the mercy of their relays which are not particularly fast.

      • The_Fox 12 hours ago

        As someone who previously led development of a commercial VPN system, I assure you, there are about 100 ways for a VPN to go slower than the network hosting it. Unfortunately.

        Two cases I can think of are MTU misconfigurations and constrained CPU on either endpoint, where the node CPU can handle non-VPN network demands but can't handle the VPN demand.

    • moduspol 12 hours ago

      You can use headscale [1] (open source) as the mothership, and all the published clients (AFAIK) support pointing them to an alternative mothership.

      I set it up, and it worked, but regular Tailscale works so well out-of-the-box that I just used that instead of maintaining headscale.

      [1] https://github.com/juanfont/headscale

billy99k 12 hours ago

I love WireGuard and use it when I'm traveling. I bought a cheap Lenovo mini-pc, installed Debian, and use it as a dedicated VPN server.

Apreche 12 hours ago

> If you don’t have a static IP, you’ll probably want to set up dynamic DNS, too.

Setting up Wireguard is easy. THIS is the hard problem that needs solving. I’ve never had a good experience with dynamic DNS. I don’t see any way around this without relying on some sort of hosted/cloud service of some kind.

  • thedanbob 12 hours ago

    I wrote a script that runs periodically on my home server to update DNS (Cloudflare) if my IP changes. In practice, it almost never changes and my ISP's general flakiness is far more of a problem.

  • calgoo 11 hours ago

    I used to use a chronjob + script that queried my external IP and then if it is different from the dns record make an API call to my dns hoster (name.com at the time). For a homelab, run it every 5 or 10 minutes and you'll always have an up to date record that you manage.

  • BikiniPrince 12 hours ago

    I just run a dynamic dns client on OpenWRT. I’ve never had an issue reaching the joke server.

  • lucideer 12 hours ago

    I got an Asus router & installed Merlin. Comes with a Wireguard server & Dyndns support built in, all via a very simple user friendly UI.

baq 12 hours ago

+1 to ’just use tailscale’ crowd. I used to run my own WireGuard server and it’s painful compared to tailscale. Note it isn’t bulletproof, but it’s work in most cases, whereas I’ve had trouble with WireGuard being blocked in places I needed it the most.

  • pkulak 12 hours ago

    +2. I did exactly what's in this article since before Tailscale existed. Then there was this Tailscale thing, but I never moved over because why bother? I've already got my setup. I was creating keys and schlepping them to all the devices in my family. I was fixing broken tunnels on vacation, trying to copy keys from my phone because that was the only device that could connect at the moment. I was manually setting packet MTU sizes because my home network uses PPPOE (yes, those are all things I know now that I wish I didn't). I was disabling the Wifi in my local supermarket because they block UDP and that broke my access.

    Then I signed up for Tailscale on a whim, installed it on my phone and my Home Assistant box and... that was it. After like 15 minutes of sign up and installation I could access my home network. MTU didn't matter. In the supermarket it uses TCP over a DERP server that's 5ms away. Keys are automatically setup. After years of people blabbing on about how great Tailscale is, I finally get it.

  • lucideer 12 hours ago

    If you're looking for a low pain way to run a Wireguard server, an Asus router with Merlin installed is as simple as it gets. UI generates QR codes for clients, & there's even an app.

    • sosborn an hour ago

      FWIW you can do this on stock ASUS firmware too.

  • th0ma5 12 hours ago

    The only downside is that the Tailscale organization will be privy to your actions online as well.

    • Lammy 11 hours ago

      Context: https://tailscale.com/kb/1011/log-mesh-traffic

      “Each Tailscale agent in your distributed network streams its logs to a central log server (at `log.tailscale.com`). This includes real-time events for open and close events for every inter-machine connection (TCP or UDP) on your network.”

    • sgc 12 hours ago

      Use headscale, and problem solved.

mcoliver 11 hours ago

Good writeup. Love wireguard. PiVPN is also worth checking out and supports wireguard. Bundle with PiHole and you never have to see ads again. Even when out and about.

guluarte 12 hours ago
  • pbowyer 11 hours ago

    wg-easy is a great package and tool, and I've used it to spin up VPN servers for small organisations.

    • SpicyUme 5 hours ago

      Do you have any advice about this? Or places to start reading. I think I may have to find someone to help with this for an organization in the near future. I don't deal with this kind of thing very much at all and worry about knowing enough to get into trouble when looking for someone.

webstrand 12 hours ago

This works wonderfully so long as both clients are not behind a NAT. Then you need something like Tailscale, Netmaker, Innernet, etc.

  • hdgvhicv 12 hours ago

    All my home kit is behind a nat on ipv4. I simply poke a hole through to my WireGuard VMs on different UDP ports.

  • jazzyjackson 12 hours ago

    Or put a wireguard server on your own machine that's not behind a NAT, cloud VPS etc

    • webstrand 12 hours ago

      That's what I said? So long as one of the machines isn't behind a NAT, wireguard by itself works great. It just doesn't do hole-punching, you have to use another tool for hole-punching.

westondeboer 12 hours ago

Using mine on an oracle free tier.