WireGuard on noussut muutamassa vuodessa Linuxin oletusvalinnaksi VPN-yhteyksille, ja syy on yksinkertainen: se on nopeampi, kevyempi ja helpompi pystyttää kuin vanhat vaihtoehdot. Tämä opas vie sinut tyhjästä toimivaan WireGuard-palvelimeen 12 vaiheessa. Aikaa kuluu noin 30 minuuttia. Lopuksi sinulla on oma salattu tunneli, jonka läpi kannettava, puhelin ja muut laitteet pääsevät verkkoon turvallisesti, esimerkiksi avoimesta kahvila-WiFistä tai ulkomailta käsin.
Käymme läpi jokaisen komennon, palvelimen ja asiakkaan konfiguraatiot, palomuurisäännöt sekä yleisimmät virheet ja niiden korjaukset. Esimerkit on testattu Ubuntu 24.04 LTS -palvelimella, mutta samat periaatteet toimivat myös Debianissa ja muissa Linux-jakeluissa. Päivämäärä: 13. kesäkuuta 2026.
Miksi WireGuard? Nopeus, kryptografia ja 4 000 riviä koodia
WireGuardin loi Jason A. Donenfeld, ja projekti alkoi vuonna 2016. Ratkaiseva hetki tuli 29. maaliskuuta 2020, kun WireGuard sulautettiin Linux-ytimen versioon 5.6. Tämän jälkeen sitä ei tarvitse asentaa erillisenä ydinmoduulina, vaan se on osa ytimen verkkopinoa. Käytännössä tämä tarkoittaa pienempää viivettä ja parempaa suorituskykyä, koska liikennettä ei tarvitse siirtää käyttäjätilan ja ytimen välillä.
Suorituskykyero vanhaan OpenVPN-protokollaan on selvä. RTINGSin julkaisemassa testissä WireGuard ylsi 353,6 Mbit/s latausnopeuteen ja 366,0 Mbit/s lähetysnopeuteen 90,1 ms viiveellä, kun OpenVPN TCP jäi 44,1 Mbit/s lataukseen ja 39,2 Mbit/s lähetykseen. Toisessa NordVPN-palvelimilla tehdyssä mittauksessa WireGuard saavutti 903 Mbit/s ja OpenVPN vain 222 Mbit/s. Useat riippumattomat testit raportoivat WireGuardin olevan tyypillisesti 3–4 kertaa nopeampi kuin OpenVPN.
Nopeuden lisäksi WireGuardin valtti on yksinkertaisuus. Sen Linux-ytimen toteutus on alle 4 000 riviä koodia, kun OpenVPN ja IPsec koostuvat sadoista tuhansista riveistä. Pienempi koodikanta tarkoittaa pienempää hyökkäyspintaa ja helpompaa tarkastusta. Salaus perustuu nykyaikaisiin algoritmeihin: ChaCha20-Poly1305 liikenteen salaukseen, Curve25519 avaintenvaihtoon, BLAKE2s tiivisteisiin, SipHash24 hajautustauluihin ja HKDF avainten johtamiseen. Kättely valmistuu noin 1,5 edestakaisessa kierroksessa (RTT), eli yhteys muodostuu lähes välittömästi.
WireGuard käyttää julkisen avaimen kryptografiaa samaan tapaan kuin SSH. Jokaisella laitteella on yksityinen ja julkinen avain. Palvelin tuntee asiakkaiden julkiset avaimet ja asiakkaat palvelimen julkisen avaimen. Mitään salasanoja, varmenteita tai monimutkaisia PKI-rakenteita ei tarvita. Jos haluat verrata eri VPN-palveluita ennen oman palvelimen pystyttämistä, lue myös vertailumme NordVPN vs ProtonVPN vs Mullvad.
WireGuardin käyttötapaukset Suomessa ja Pohjoismaissa
Oma WireGuard-palvelin ratkaisee monta arkista ongelmaa. Yleisin on suojautuminen julkisissa verkoissa. Kun yhdistät kannettavan tai puhelimen avoimeen WiFiin esimerkiksi lentokentällä, kahvilassa tai hotellissa, kaikki liikenne kulkee salaamattomana, ellei käytä VPN:ää. WireGuard-tunneli salaa liikenteen päästä päähän palvelimellesi asti, joten samassa verkossa olevat eivät pysty nuuskimaan istuntojasi.
Toinen yleinen tarve on pääsy kotiverkkoon ulkomailta. Jos matkustat ja haluat käyttää kotipalvelintasi, NAS-laitettasi tai kotiautomaatiotasi turvallisesti, WireGuard tarjoaa siihen kevyen ja vakaan tunnelin. Pohjoismaissa, joissa etätyö on yleistä, sama ratkaisu sopii myös pienyrityksen sisäverkon suojattuun etäkäyttöön ilman raskasta yrityks-VPN-laitteistoa. Koska WireGuard kuormittaa konetta vähän ja muodostaa yhteyden lähes välittömästi, se sopii erityisen hyvin mobiilikäyttöön, jossa yhteys katkeilee ja muodostuu uudelleen.
Kolmas käyttötapaus on liikenteen reitittäminen tietyn maan kautta. Jos haluat näyttää internetille suomalaisen IP-osoitteen ollessasi ulkomailla, voit ajaa WireGuard-palvelinta suomalaisella konesalipalvelimella ja reitittää liikenteesi sen kautta. Tämä on hyödyllistä esimerkiksi kotimaisten verkkopankki- ja viranomaispalveluiden käyttöön ulkomailta. Erona kaupalliseen VPN-palveluun on, että hallitset itse koko ketjua: tiedät tarkalleen, kuka palvelimen omistaa ja mitä lokitietoja siitä jää.
Esitiedot ja vaaditut versiot
Ennen kuin aloitat, tarvitset muutaman asian. Tärkeintä on palvelin, jolla on julkinen IP-osoite, jotta asiakkaat löytävät sen internetistä. Edullisin tapa on vuokrata virtuaalipalvelin (VPS) esimerkiksi Hetzneriltä, UpCloudilta tai DigitalOceanilta. Jo halvin, muutaman euron kuukausihintainen palvelin riittää helposti kotikäyttöön, koska WireGuard kuormittaa konetta hyvin vähän.
| Komponentti | Suositeltu versio | Huomiot |
|---|---|---|
| Käyttöjärjestelmä (palvelin) | Ubuntu 24.04 LTS | Myös Debian 12 ja uudemmat toimivat |
| Linux-ydin | 5.6 tai uudempi | WireGuard on mukana ytimessä |
| wireguard-tools | Jakelun uusin versio | Sisältää wg- ja wg-quick-komennot |
| Julkinen IP-osoite | Pakollinen palvelimella | Staattinen tai dynaaminen (DDNS) |
| Avoin portti | UDP 51820 | Avataan palomuurissa ja pilvessä |
| Pääsyoikeudet | sudo / root | Asennus vaatii pääkäyttäjän oikeudet |
| Asiakasohjelma | WireGuard-sovellus | Windows, macOS, Linux, Android, iOS |
Tarvitset myös perustaidot komentorivin käytöstä ja SSH-yhteyden palvelimellesi. Varmista, että palvelimesi käyttöjärjestelmä on ajan tasalla ennen aloittamista. Jos käytät kotipalvelinta dynaamisella IP-osoitteella, harkitse dynaamista DNS-palvelua (DDNS), jotta osoite pysyy tavoitettavissa myös IP:n vaihtuessa. Asiakaslaitteille asennetaan virallinen WireGuard-sovellus, joka on saatavilla kaikille yleisimmille alustoille osoitteesta wireguard.com.
Resurssitarpeet ovat pienet. WireGuard ei vaadi tehokasta palvelinta, vaan jopa kevyt yhden ytimen ja 512 megatavun muistin virtuaalipalvelin riittää useille asiakkaille. Suurin pullonkaula on yleensä palvelimen verkkoyhteyden nopeus, ei laskentateho, koska ChaCha20-Poly1305-salaus on suunniteltu nopeaksi myös ilman erillistä laitteistokiihdytystä. Jos suunnittelet palvelimen ajamista vanhalla Raspberry Pi -laitteella kotona, sekin pärjää helposti tavallisessa kotikäytössä. Varmista vain, että reitittimesi palomuurissa on avattu UDP-portti 51820 ja ohjattu se palvelimelle (port forwarding), jos palvelin on kotiverkon takana.
Vaihe 1: Päivitä järjestelmä ja asenna WireGuard
Aloita kirjautumalla palvelimelle SSH:lla ja päivittämällä pakettiluettelo sekä asennetut paketit. Asenna sen jälkeen WireGuard ja sen työkalut sekä ufw-palomuuri, jota käytämme myöhemmin.
sudo apt update && sudo apt upgrade -y
sudo apt install wireguard wireguard-tools ufw -y
Paketti wireguard tuo mukanaan ytimen kanssa toimivan moduulin metatiedot, ja wireguard-tools sisältää tärkeät wg– ja wg-quick-komennot. Voit varmistaa asennuksen onnistumisen tarkistamalla version:
wg --version
Komento tulostaa asennetun version, esimerkiksi wireguard-tools v1.0.x. Jos saat virheen “command not found”, asennus ei onnistunut, ja sinun kannattaa tarkistaa, että käytät tuettua Ubuntu- tai Debian-versiota. Koska WireGuard on osa Linux-ydintä versiosta 5.6 alkaen, erillistä ydinmoduulia ei tarvitse kääntää nykyaikaisilla jakeluilla.
Vaihe 2: Luo palvelimen avainpari (Curve25519)
WireGuard tunnistaa laitteet julkisen avaimen kryptografialla. Luo ensin hakemisto ja aseta sille tiukat oikeudet, jotta vain pääkäyttäjä voi lukea avaimet.
sudo mkdir -p /etc/wireguard
sudo chmod 700 /etc/wireguard
cd /etc/wireguard
Luo seuraavaksi palvelimen yksityinen ja julkinen avain. Komento wg genkey luo yksityisen avaimen, joka syötetään putkella wg pubkey -komennolle julkisen avaimen muodostamiseksi.
wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key
sudo chmod 600 /etc/wireguard/server_private.key /etc/wireguard/server_public.key
Avaimet ovat Curve25519-pohjaisia, ja ne tulostuvat Base64-muodossa, esimerkiksi oK7p...=. Tulosta yksityinen avain näkyviin, koska tarvitset sen seuraavassa vaiheessa palvelimen konfiguraatiotiedostoon:
sudo cat /etc/wireguard/server_private.key
Älä koskaan jaa yksityistä avainta tai kopioi sitä epäluotettaviin paikkoihin, kuten chat-viesteihin tai tukijärjestelmän tiketteihin. Yksityinen avain on koko järjestelmän turvallisuuden perusta. Jos haluat syventyä siihen, miten julkiset ja yksityiset avaimet toimivat, lue digitaaliset allekirjoitukset -artikkelimme.
Vaihe 3: Kirjoita palvelimen wg0.conf
Nyt luodaan palvelimen päärakennuskivi eli liitäntätiedosto /etc/wireguard/wg0.conf. Tunneliverkoksi valitaan yksityinen RFC1918-osoiteavaruus 10.8.0.0/24, jossa palvelin saa osoitteen 10.8.0.1. Avaa tiedosto editorissa:
sudo nano /etc/wireguard/wg0.conf
Liitä seuraava sisältö. Korvaa SERVER_PRIVATE_KEY edellisessä vaiheessa tulostamallasi yksityisellä avaimella. Tarkista myös verkkoliitännän nimi (alla eth0); selvitä se komennolla ip route list default ja korvaa tarvittaessa nimellä kuten ens3 tai enp1s0.
[Interface]
PrivateKey = SERVER_PRIVATE_KEY
Address = 10.8.0.1/24
ListenPort = 51820
SaveConfig = false
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -A FORWARD -o wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -D FORWARD -o wg0 -j ACCEPT
Kohta [Interface] määrittää palvelimen oman liitännän. ListenPort = 51820 on WireGuardin oletusportti UDP-protokollalla. PostUp– ja PostDown-rivit lisäävät ja poistavat NAT-säännöt automaattisesti, kun tunneli käynnistetään tai sammutetaan. Asetus SaveConfig = false estää wg-quickia kirjoittamasta tiedostoa uudelleen, mikä pitää käsin tekemäsi muutokset tallessa. Tallenna tiedosto näppäinyhdistelmällä Ctrl+O ja poistu Ctrl+X.
Osoiteavaruuden valinnalla on merkitystä. Käytä yksityistä RFC1918-aluetta, joka ei ole jo käytössä kotiverkossasi. Jos kotiverkkosi on tyypillinen 192.168.1.0/24, älä valitse tunnelille samaa aluetta, koska reititys menisi sekaisin. Tästä syystä esimerkki käyttää harvemmin törmäävää 10.8.0.0/24-aluetta. ListenPort voidaan myös vaihtaa toiseen UDP-porttiin, jos haluat välttää porttiskannauksia, mutta muista silloin päivittää sekä palomuurin sääntö että asiakkaiden Endpoint-rivi vastaamaan uutta porttia. Pidä portti UDP-protokollassa, koska WireGuard ei tue TCP:tä natiivisti.
Vaihe 4: Ota IP-edelleenlähetys ja NAT käyttöön
Jotta palvelin osaa reitittää asiakkaiden liikenteen internetiin, Linuxin ytimen IP-edelleenlähetys (IP forwarding) on otettava käyttöön. Ilman tätä asetusta asiakas saa tunnelin pystyyn mutta ei pääse verkkoon. Ota asetus käyttöön heti ja tee siitä pysyvä:
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
Ensimmäinen komento ottaa edelleenlähetyksen käyttöön välittömästi. Toinen komento kirjoittaa asetuksen tiedostoon, joka luetaan jokaisella käynnistyksellä, joten asetus säilyy myös palvelimen uudelleenkäynnistyksen jälkeen. Voit varmistaa, että arvo on 1:
cat /proc/sys/net/ipv4/ip_forward
Komennon pitäisi tulostaa 1. NAT-osuuden (Network Address Translation) hoitavat jo edellisessä vaiheessa lisätyt iptables ... MASQUERADE -säännöt, jotka kääntävät asiakkaiden yksityiset osoitteet palvelimen julkiseen osoitteeseen. Jos haluat ohjata myös IPv6-liikenteen, lisää vastaava rivi net.ipv6.conf.all.forwarding=1 ja IPv6-osoiteavaruus konfiguraatioon.
Edelleenlähetys ja NAT muodostavat yhdessä reitityksen perustan. Ilman edelleenlähetystä ydin hylkää paketit, jotka eivät ole osoitettu suoraan palvelimelle. Ilman NAT-sääntöä taas vastausliikenne ei löydä takaisin asiakkaalle, koska internetin reitittimet eivät tunne yksityistä 10.8.0.0/24-aluetta. Nämä kaksi asetusta selittävät valtaosan “tunneli toimii mutta nettiä ei ole” -ongelmista, joten kannattaa varmistaa molemmat heti, jos liikenne ei kulje.
Vaihe 5: Avaa palomuuri ja käynnistä WireGuard
Avaa ufw-palomuurissa WireGuardin UDP-portti 51820 ja varmista, että SSH pysyy auki, jottet lukitse itseäsi ulos palvelimelta. Ota palomuuri sitten käyttöön.
sudo ufw allow 51820/udp
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verbose
Jos käytät pilvipalvelua, kuten Hetzneriä tai AWS:ää, muista avata UDP-portti 51820 myös pilven omassa palomuurissa tai security groupissa. Pelkkä palvelimen sisäinen ufw ei riitä, jos pilvi suodattaa liikenteen jo aiemmin. Käynnistä nyt WireGuard-liitäntä ja aseta se käynnistymään automaattisesti palvelimen käynnistyessä:
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
Tarkista tunnelin tila komennolla sudo wg show. Tulosteen pitäisi näyttää tältä:
interface: wg0
public key: oK7p9Hh...=
private key: (hidden)
listening port: 51820
Palvelin on nyt pystyssä ja kuuntelee yhteyksiä. Vertaillaksesi salatun yhteyden merkitystä yleisemmin, katso myös HTTPS ja TLS -oppaamme.
Vaihe 6: Luo ensimmäinen asiakas (peer)
Jokaiselle asiakaslaitteelle luodaan oma avainpari. Tämä on tärkeä turvallisuusperiaate: jos jokin laite katoaa, voit poistaa vain sen avaimen ilman, että muiden laitteiden tarvitsee vaihtaa avaimia. Luo asiakkaan avaimet palvelimella (tai suoraan asiakaslaitteella):
wg genkey | tee client1_private.key | wg pubkey | tee client1_public.key
Luo seuraavaksi asiakkaan konfiguraatiotiedosto, esimerkiksi client1.conf. Korvaa CLIENT_PRIVATE_KEY asiakkaan yksityisellä avaimella, SERVER_PUBLIC_KEY palvelimen julkisella avaimella ja PALVELIMEN_JULKINEN_IP palvelimesi todellisella osoitteella.
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.8.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = PALVELIMEN_JULKINEN_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Asetus AllowedIPs = 0.0.0.0/0 ohjaa kaiken asiakkaan liikenteen tunnelin läpi, mikä on oikea valinta täydelle VPN-suojalle esimerkiksi julkisessa verkossa. Jos haluat vain pääsyn palvelimen lähiverkkoon (split tunnel), korvaa arvo esimerkiksi 10.8.0.0/24. PersistentKeepalive = 25 pitää yhteyden auki NAT-palomuurien läpi lähettämällä paketin 25 sekunnin välein, mikä on hyödyllistä mobiililaitteille.
Vaihe 7: Lisää asiakas palvelimelle
Palvelimen pitää tuntea asiakkaan julkinen avain ennen kuin yhteys onnistuu. Lisää asiakas peer-merkintänä palvelimen wg0.conf -tiedostoon. Avaa tiedosto ja lisää loppuun:
[Peer]
# client1 (kannettava)
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32
Huomaa ero asiakas- ja palvelinkonfiguraatioiden välillä: palvelimella AllowedIPs kertoo, mistä osoitteesta tämä asiakas saa lähettää liikennettä (tässä 10.8.0.2/32, eli vain yksi osoite). Lisää sen jälkeen muutos ilman, että koko tunneli katkeaa, käyttämällä komentoa, joka lukee konfiguraation uudelleen:
sudo wg syncconf wg0 <(wg-quick strip wg0)
Tämä komento päivittää peerit ilman olemassa olevien yhteyksien katkaisua, toisin kuin wg-quick down ja up. Vaihtoehtoisesti voit käynnistää tunnelin uudelleen, jos et ole huolissasi katkoksesta. Tarkista, että uusi peer näkyy komennolla sudo wg show.
Vaihe 8: Yhdistä työpöytä ja mobiili (QR-koodi)
Työpöytäkoneella (Windows, macOS, Linux) asenna virallinen WireGuard-sovellus, valitse “Import tunnel from file” ja osoita siihen luomaasi client1.conf -tiedostoon. Aktivoi tunneli yhdellä napsautuksella. Linux-asiakkaalla voit myös kopioida tiedoston /etc/wireguard/ -hakemistoon ja käynnistää sen komennolla sudo wg-quick up client1.
Puhelimelle helpoin tapa on QR-koodi. Asenna palvelimelle qrencode ja luo koodi suoraan asiakaskonfiguraatiosta:
sudo apt install qrencode -y
qrencode -t ansiutf8 < client1.conf
Terminaaliin ilmestyy QR-koodi. Avaa Androidin tai iOS:n WireGuard-sovellus, valitse “Lisää tunneli” ja “Skannaa QR-koodista”. Suuntaa kamera koodiin, ja konfiguraatio siirtyy puhelimeen sekunneissa. Anna tunnelille selkeä nimi, kuten “Koti-VPN”. Muista, että jokaiselle puhelimelle pitää luoda oma avainpari ja oma peer-merkintä palvelimelle, ei käyttää samaa avainta usealla laitteella.
Vaihe 9: Testaa yhteys ja estä DNS-vuodot
Kun olet aktivoinut tunnelin asiakaslaitteella, testaa että yhteys toimii ja että liikenne kulkee palvelimen kautta. Tarkista ensin julkinen IP-osoitteesi. Sen pitäisi näyttää palvelimesi osoite, ei oman internetyhteytesi osoitetta:
curl ifconfig.me
ping -c 4 1.1.1.1
Jos curl ifconfig.me palauttaa palvelimesi julkisen IP:n, tunneli toimii oikein. Komento ping taas kertoo, kulkeeko liikenne tunnelin läpi ja millä viiveellä. Jos ping vastaa mutta selain ei avaa sivuja, kyse on lähes aina DNS-asetuksesta tai MTU-arvosta, ei itse tunnelista. Tarkista vielä kättelyn tila palvelimelta komennolla sudo wg show. Toimivassa yhteydessä näet rivin latest handshake ja siirretyt tavut:
peer: 9Hh3K...=
endpoint: 84.123.45.67:51820
allowed ips: 10.8.0.2/32
latest handshake: 18 seconds ago
transfer: 1.24 MiB received, 845.32 KiB sent
DNS-vuoto tarkoittaa, että nimipalvelukyselysi vuotavat tunnelin ohi internet-operaattorillesi, vaikka muu liikenne kulkee VPN:n läpi. Estä tämä varmistamalla, että asiakaskonfiguraation [Interface]-osiossa on rivi DNS = 1.1.1.1 (tai oma luotettu resolverisi). Voit testata mahdolliset vuodot palveluilla kuten dnsleaktest.com. Hyvä yksityisyys edellyttää myös vahvoja salasanoja; kertaa periaatteet salasanaturvallisuus-oppaastamme.
Vaihe 10: Lisää asiakkaita ja automatisoi luonti
Useamman laitteen lisääminen sujuu nopeasti pienellä skriptillä. Jokainen uusi asiakas tarvitsee oman avainparin, oman IP-osoitteen tunneliverkosta (10.8.0.3, 10.8.0.4 ja niin edelleen) ja oman peer-merkinnän palvelimelle. Tässä yksinkertainen skripti, joka luo uuden asiakkaan:
#!/bin/bash
# Kaytto: sudo ./add-client.sh nimi 3
NAME=$1
IP_LAST=$2
cd /etc/wireguard
wg genkey | tee ${NAME}_private.key | wg pubkey | tee ${NAME}_public.key
SERVER_PUB=$(cat server_public.key)
CLIENT_PRIV=$(cat ${NAME}_private.key)
CLIENT_PUB=$(cat ${NAME}_public.key)
cat > ${NAME}.conf <<EOF
[Interface]
PrivateKey = ${CLIENT_PRIV}
Address = 10.8.0.${IP_LAST}/32
DNS = 1.1.1.1
[Peer]
PublicKey = ${SERVER_PUB}
Endpoint = PALVELIMEN_JULKINEN_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF
echo "[Peer]" >> wg0.conf
echo "# ${NAME}" >> wg0.conf
echo "PublicKey = ${CLIENT_PUB}" >> wg0.conf
echo "AllowedIPs = 10.8.0.${IP_LAST}/32" >> wg0.conf
wg syncconf wg0 <(wg-quick strip wg0)
echo "Asiakas ${NAME} luotu: ${NAME}.conf"
Tallenna skripti nimellä add-client.sh, anna sille suoritusoikeudet komennolla chmod +x add-client.sh ja muista korvata PALVELIMEN_JULKINEN_IP palvelimesi osoitteella. Tämän jälkeen uusi asiakas syntyy yhdellä komennolla, esimerkiksi sudo ./add-client.sh puhelin 3.
Vaihe 11: Edistyneet vinkit (kill switch, split tunnel)
Kun perusasetukset ovat kunnossa, voit parantaa turvallisuutta ja joustavuutta muutamalla lisäasetuksella. Kill switch estää liikenteen vuotamisen, jos VPN-yhteys katkeaa. Lisää asiakaskonfiguraation [Interface]-osioon rivit, jotka katkaisevat verkon, jos tunneli sammuu:
PostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
Split tunnel taas reitittää vain valitun liikenteen tunnelin läpi. Esimerkiksi jos haluat ohjata vain yrityksen sisäverkon liikenteen VPN:ään ja jättää muun suoraan internetiin, aseta asiakkaalle AllowedIPs = 10.8.0.0/24, 192.168.1.0/24. Avainten kierto kannattaa tehdä säännöllisesti: luo uudet avaimet, päivitä peer-merkinnät ja poista vanhat. Säilytä myös palvelimen ohjelmistot ajan tasalla, koska tietoturvapäivitykset tulevat ytimen mukana.
Voit myös yhdistää WireGuardin DNS-suodatukseen ajamalla palvelimella esimerkiksi Pi-holen, jolloin koko VPN-liikenteesi suodattuu mainoksista ja seurantadomaineista. Toinen hyödyllinen lisä on monivaiheinen tunnistautuminen hallintapaneeleihin; tutustu aiheeseen vertailussamme kaksivaiheinen tunnistautuminen.
Vaihe 12: 6 yleistä sudenkuoppaa
Useimmat WireGuard-ongelmat johtuvat samoista perusvirheistä. Tässä kuusi yleisintä sudenkuoppaa, jotka kannattaa tarkistaa ennen kuin alkaa epäillä monimutkaisempia syitä.
- IP-edelleenlähetys pois päältä. Yleisin syy siihen, että asiakas saa tunnelin pystyyn mutta ei pääse internetiin. Tarkista, että
net.ipv4.ip_forward = 1. - Väärä verkkoliitännän nimi NAT-säännössä. Jos palvelimesi liitäntä on
ens3mutta säännössä lukeeeth0, NAT ei toimi. Selvitä nimi komennollaip route list default. - Pilven palomuuri estää portin. Pelkkä ufw ei riitä, jos pilvipalvelun security group suodattaa UDP 51820:n jo ennen palvelinta.
- Sama avain usealla laitteella. Jokaiselle laitteelle pitää luoda oma avainpari ja oma peer. Saman avaimen jakaminen aiheuttaa satunnaisia katkoksia.
- Puuttuva DNS asiakkaalla. Ilman
DNS-riviä asiakas voi vuotaa nimikyselyt tunnelin ohi, vaikka muu liikenne kulkee VPN:n läpi. - SaveConfig = true ylikirjoittaa muutokset. Jos teet käsin muutoksia mutta SaveConfig on päällä, wg-quick voi ylikirjoittaa ne tunnelin sammuessa.
WireGuard eri alustoilla ja reitittimissä
Tähän asti olemme keskittyneet Linux-palvelimeen ja työpöytä- sekä mobiiliasiakkaisiin, mutta WireGuard toimii myös monilla muilla alustoilla. Tämä joustavuus tekee siitä erinomaisen valinnan kotiverkkoon, jossa on useita erilaisia laitteita. Käydään läpi tärkeimmät vaihtoehdot ja niiden erityispiirteet.
Reitittimet ja OpenWrt
Monet kotireitittimet tukevat WireGuardia suoraan, ja avoimen lähdekoodin OpenWrt-laiteohjelmisto tuo tuen lähes mihin tahansa yhteensopivaan reitittimeen. Kun ajat WireGuard-asiakasta reitittimellä, voit reitittää koko kotiverkon liikenteen tunnelin läpi ilman, että jokaiselle laitteelle asennetaan erikseen sovellusta. Tämä on kätevää esimerkiksi älytelevisioille ja muille laitteille, joihin ei saa VPN-sovellusta. Reitittimellä asetukset tehdään yleensä web-käyttöliittymästä, mutta taustalla on sama wg0.conf-logiikka kuin Linuxissa.
Windows, macOS ja konttiympäristöt
Windowsille ja macOS:lle on viralliset, graafiset WireGuard-sovellukset, jotka tuovat tunnelin pystyyn yhdellä napsautuksella konfiguraatiotiedostosta. Ne hoitavat reitityksen ja DNS-asetukset automaattisesti, joten käyttäjän ei tarvitse koskea komentoriviin. Palvelinpuolella WireGuard sopii myös konttiympäristöihin: voit ajaa sitä Dockerissa tai osana Kubernetes-klusteria, mikä on hyödyllistä, jos haluat tunneloida liikenteen mikropalveluiden välillä. Konttiratkaisuissa on huomioitava, että kontti tarvitsee NET_ADMIN-oikeudet ja pääsyn ytimen WireGuard-moduuliin.
Riippumatta alustasta perusperiaate säilyy samana: jokaisella laitteella on oma avainpari, palvelin tuntee asiakkaan julkisen avaimen, ja liikenne salataan ChaCha20-Poly1305-algoritmilla. Tämä yhtenäisyys on yksi syy WireGuardin suosioon. Sama mentaalimalli pätee kaikkialla, eikä jokaista alustaa varten tarvitse opetella uutta konfiguraatiotapaa. Jos vasta harkitset, kannattaako oma palvelin pystyttää vai ostaa valmis palvelu, vertailumme parhaista VPN-palveluista auttaa päätöksessä.
Vianmääritys: 8 yleistä ongelmaa ja korjaus
Jos yhteys ei toimi vaiheittaisesta ohjeesta huolimatta, käy läpi seuraava vianmääritystaulukko. Aloita aina komennosta sudo wg show, joka paljastaa, onko kättely (handshake) tapahtunut.
| Oire | Todennäköinen syy | Korjaus |
|---|---|---|
| Ei kättelyä (handshake) | Väärä avain tai endpoint | Tarkista julkiset avaimet ja palvelimen IP/portti |
| Tunneli pystyssä, ei nettiä | IP-edelleenlähetys pois | Aseta net.ipv4.ip_forward = 1 |
| Yhteys katkeaa NATin takana | Keepalive puuttuu | Lisää PersistentKeepalive = 25 |
| DNS ei toimi / vuotaa | DNS-rivi puuttuu | Lisää DNS = 1.1.1.1 asiakkaalle |
| Sivut latautuvat osittain | MTU liian suuri | Laske MTU arvoon 1380 tai 1280 |
| Portti ei vastaa | Palomuuri estää | Avaa UDP 51820 ufw:ssä ja pilvessä |
| Ei reittiä asiakkaalle | Väärä AllowedIPs palvelimella | Korjaa peerin AllowedIPs (esim. 10.8.0.2/32) |
| Tunneli ei käynnisty bootissa | Palvelu ei käytössä | Aja systemctl enable wg-quick@wg0 |
MTU-ongelmat ovat erityisen petollisia, koska ne aiheuttavat osittaista toimintaa: pienet sivut latautuvat mutta suuret jäävät jumiin. WireGuard käyttää tyypillisesti MTU-arvoa 1420, koska salausotsikot vievät osan paketin koosta. Jos epäilet MTU-ongelmaa, lisää asiakkaan [Interface]-osioon rivi MTU = 1380 ja testaa uudelleen. Tarvittaessa laske arvoa edelleen 1280:een, joka on turvallinen vähimmäisarvo lähes kaikissa verkoissa.
Kättelyn (handshake) tarkempi diagnoosi
Jos sudo wg show ei näytä riviä “latest handshake”, asiakkaan ja palvelimen välillä ei ole muodostunut yhteyttä lainkaan. Tämä on lähes aina kolmen syyn summa: portti ei ole auki, endpoint-osoite on väärä, tai avaimet eivät täsmää. Tarkista palvelimelta, että portti kuuntelee:
sudo ss -ulnp | grep 51820
Jos rivi puuttuu, tunneli ei ole pystyssä, ja sinun kannattaa ajaa sudo wg-quick up wg0 uudelleen ja tarkkailla mahdollisia virheilmoituksia. Voit myös seurata, saapuuko asiakkaan liikenne palvelimelle, komennolla sudo tcpdump -i eth0 udp port 51820. Jos paketteja ei näy, ongelma on verkossa tai palomuurissa palvelimen ja asiakkaan välissä.
WireGuard vs OpenVPN: suorituskyky 2026
WireGuardin valinta perustuu mitattuun suorituskykyyn, ei pelkkään maineeseen. Alla oleva taulukko kokoaa julkaistuja vertailulukuja. Muista, että absoluuttiset luvut riippuvat palvelimen sijainnista ja yhteysnopeudesta, mutta suhteellinen ero protokollien välillä toistuu testistä toiseen.
| Mittari | WireGuard | OpenVPN | Lähde / huomio |
|---|---|---|---|
| Lataus (RTINGS) | 353,6 Mbit/s | 44,1 Mbit/s (TCP) | RTINGS-testi |
| Lähetys (RTINGS) | 366,0 Mbit/s | 39,2 Mbit/s (TCP) | RTINGS-testi |
| Lataus (NordVPN-testi) | 903 Mbit/s | 222 Mbit/s | Seattle-palvelin |
| Suhteellinen nopeus | 3–4x nopeampi | vertailutaso | Useat testit |
| Koodirivit | alle 4 000 | satoja tuhansia | Pienempi hyökkäyspinta |
| Kättely | ~1,5 RTT | moninkertainen | Lähes välitön yhteys |
Jos haluat syvällisemmän vertailun protokollien arkkitehtuurista ja siitä, milloin OpenVPN on silti perusteltu valinta, lue riippumattomat mittaukset esimerkiksi RTINGSin VPN-testeistä. WireGuardin virallinen tekninen kuvaus ja vertaisarvioitu tutkimuspaperi löytyvät wireguard.com-sivustolta.
WireGuardin kryptografia ja turvallisuus
WireGuardin turvallisuus perustuu pieneen joukkoon nykyaikaisia, tarkkaan valittuja salausalgoritmeja. Toisin kuin OpenVPN tai IPsec, WireGuard ei tarjoa kymmeniä vaihtoehtoja, vaan käyttää yhtä vahvaa yhdistelmää. Tämä “kryptografinen jäykkyys” vähentää virheellisten asetusten riskiä, koska väärää tai heikkoa algoritmia ei voi vahingossa valita.
- ChaCha20-Poly1305 hoitaa varsinaisen liikenteen salauksen ja eheystarkistuksen (autentikoitu salaus).
- Curve25519 vastaa avaintenvaihdosta (Elliptic Curve Diffie-Hellman), joka muodostaa jaetun salaisuuden osapuolten välille.
- BLAKE2s on nopea kryptografinen tiivistefunktio, jota käytetään kättelyssä.
- SipHash24 suojaa palvelimen sisäisiä hajautustauluja palvelunestohyökkäyksiltä.
- HKDF johtaa istuntoavaimet jaetusta salaisuudesta.
WireGuard tukee myös täydellistä edelleensalaisuutta (perfect forward secrecy): istuntoavaimet vaihtuvat säännöllisesti, joten yhden avaimen paljastuminen ei vaaranna aiempaa liikennettä. Lisäksi protokolla on suunniteltu “hiljaiseksi”: se ei vastaa tunnistamattomiin paketteihin, mikä tekee palvelimen löytämisen porttiskannereilla vaikeammaksi. Tämä piilottavuus on hyödyllinen lisäkerros turvallisuutta.
On hyvä huomata, että WireGuardin nykyiset algoritmit eivät ole vielä kvanttiturvallisia. Curve25519-avaintenvaihto olisi teoriassa haavoittuvainen riittävän tehokkaalle kvanttitietokoneelle. Tällaisia koneita ei ole olemassa, mutta pitkän aikavälin suojaa varten kvanttiturvallisia laajennuksia kehitetään. Voit syventyä siihen, miten kryptografiset perusteet toimivat, lukemalla digitaaliset allekirjoitukset -artikkelimme.
Turvallisuuden parhaat käytännöt 2026
Toimiva WireGuard-palvelin ei ole sama asia kuin turvallinen palvelin. Noudata seuraavia käytäntöjä pitääksesi tunnelisi ja palvelimesi suojattuina pitkällä aikavälillä.
- Tiukat tiedosto-oikeudet. Pidä kaikki
/etc/wireguard/-hakemiston yksityiset avaimet oikeuksissa 600, jotta vain root voi lukea ne. - Oma avainpari jokaiselle laitteelle. Näin voit poistaa yhden laitteen avaimen ilman, että muiden tarvitsee vaihtaa avaimia.
- Minimoi AllowedIPs. Käytä split tunnelia, jos asiakkaan ei tarvitse reitittää kaikkea liikennettä palvelimen kautta.
- Pidä palvelin päivitettynä. Asenna Ubuntun tietoturvapäivitykset säännöllisesti, koska WireGuard tulee ytimen mukana.
- Kovenna SSH. Käytä avainpohjaista tunnistautumista, poista salasanakirjautuminen ja harkitse Fail2bania.
- Varmuuskopioi konfiguraatiot. Säilytä palvelimen ja asiakkaiden avaimet salatussa varmuuskopiossa, mutta älä koskaan julkisissa paikoissa.
Muista myös, että VPN suojaa liikenteen siirtotien, mutta ei korvaa hyvää yleistä tietoturvaa. Lue, miten tietomurrot tyypillisesti tapahtuvat ja miten suojaudut niiltä, tietomurrot-oppaastamme. Lisää aiheesta löydät myös yksityisyys-osiostamme.
Tunnelin valvonta, ylläpito ja varmuuskopiointi
Kun WireGuard on tuotantokäytössä, sitä kannattaa valvoa ja ylläpitää säännöllisesti. Tärkein yksittäinen komento on edelleen sudo wg show, joka näyttää jokaisen peerin viimeisimmän kättelyn ja siirretyt tavut. Jos jonkin asiakkaan kättely on tuntien takaa, laite on todennäköisesti sammuksissa tai sen yhteys on katkennut. Voit myös seurata liitännän liikennettä reaaliajassa työkaluilla kuten vnstat tai iftop, jotka näyttävät, kuinka paljon dataa tunnelin läpi liikkuu.
Palvelimen tilan voi tarkistaa myös systemd:n kautta, mikä on hyödyllistä, jos epäilet, ettei tunneli käynnistynyt boottauksen yhteydessä:
sudo systemctl status wg-quick@wg0
sudo journalctl -u wg-quick@wg0 --no-pager -n 30
Komento systemctl status näyttää, onko palvelu aktiivinen (active), ja journalctl tulostaa viimeisimmät lokirivit, joista näkee mahdolliset virheet käynnistyksessä. Jos näet rivin “active (exited)”, liitäntä on pystyssä, koska wg-quick muodostaa tunnelin kerran eikä jää taustaprosessiksi.
Varmuuskopioi koko /etc/wireguard/-hakemisto turvalliseen paikkaan, sillä se sisältää sekä palvelimen että asiakkaiden avaimet ja konfiguraatiot. Pakkaa ja salaa varmuuskopio ennen sen siirtämistä pois palvelimelta:
sudo tar czf - /etc/wireguard | gpg -c > wireguard-backup.tar.gz.gpg
Komento luo salatun varmuuskopion, jonka avaamiseen tarvitaan salasana. Säilytä varmuuskopio erillään palvelimesta, esimerkiksi salatulla USB-tikulla tai luotetussa pilvitallennuksessa. Älä koskaan tallenna avaimia salaamattomana julkiseen versionhallintaan tai jaettuun kansioon. Avainten kierto kannattaa ajoittaa esimerkiksi puolivuosittain: luo uudet avaimet, päivitä peerit ja poista vanhat tiedostot turvallisesti komennolla shred.
Jos hallinnoit useita palvelimia tai kymmeniä asiakkaita, harkitse hallintatyökalua kuten wg-easy tai firezone, jotka tarjoavat web-käyttöliittymän asiakkaiden lisäämiseen ja poistamiseen. Pienessä ympäristössä komentorivi ja aiemmin esitelty add-client.sh-skripti riittävät kuitenkin hyvin. Pidä mielessä, että jokainen lisätty hallintakerros kasvattaa hyökkäyspintaa, joten yksinkertaisinta ratkaisua kannattaa suosia silloin, kun se on mahdollista.
Usein kysytyt kysymykset
Onko WireGuard ilmainen?
Kyllä. WireGuard on avointa lähdekoodia ja täysin ilmainen. Ainoa kulu on palvelin, jolla ajat sitä, eli esimerkiksi muutaman euron kuukausihintainen virtuaalipalvelin. Itse ohjelmistosta ei makseta mitään, ja se on saatavilla kaikille yleisille käyttöjärjestelmille osoitteesta wireguard.com.
Tarvitsenko staattisen IP-osoitteen palvelimelle?
Staattinen IP helpottaa, mutta ei ole pakollinen. Jos palvelimellasi on dynaaminen osoite, käytä dynaamista DNS-palvelua (DDNS), joka pitää verkkotunnuksen osoittamaan vaihtuvaan IP:hen. Aseta asiakkaan Endpoint osoittamaan verkkotunnukseen IP-osoitteen sijaan.
Kuinka monta laitetta voin yhdistää?
Käytännössä rajaton määrä. Jokaiselle laitteelle luodaan oma avainpari ja oma IP-osoite tunneliverkosta (10.8.0.2, 10.8.0.3 ja niin edelleen). 10.8.0.0/24-aliverkkoon mahtuu yli 250 asiakasta, ja voit kasvattaa aliverkkoa tarvittaessa. Palvelimen suorituskyky riittää helposti kymmenille samanaikaisille yhteyksille.
Toimiiko WireGuard puhelimessa?
Toimii. Sekä Androidille että iOS:lle on virallinen WireGuard-sovellus. Helpoin tapa lisätä konfiguraatio on skannata QR-koodi, jonka luot palvelimella qrencode-työkalulla. PersistentKeepalive = 25 -asetus pitää yhteyden vakaana myös mobiiliverkoissa NAT-palomuurien takana.
Mikä on ero AllowedIPs 0.0.0.0/0 ja aliverkon välillä?
Arvo 0.0.0.0/0 ohjaa kaiken asiakkaan liikenteen tunnelin läpi (täysi VPN), mikä on oikea valinta julkisessa verkossa yksityisyyden suojaamiseksi. Tietyn aliverkon, kuten 10.8.0.0/24, käyttö taas ohjaa vain kyseisen verkon liikenteen tunneliin (split tunnel) ja jättää muun internetliikenteen suoraksi.
Miksi yhteys muodostuu mutta internet ei toimi?
Lähes aina syy on, että IP-edelleenlähetys on pois päältä tai NAT-säännön verkkoliitäntä on väärä. Tarkista, että net.ipv4.ip_forward = 1 ja että iptables ... MASQUERADE -säännön liitäntä (esimerkiksi eth0) vastaa palvelimesi todellista julkista liitäntää. Selvitä oikea nimi komennolla ip route list default.
Onko WireGuard turvallisempi kuin OpenVPN?
Molemmat ovat turvallisia oikein määritettyinä. WireGuardin etu on pienempi koodikanta (alle 4 000 riviä), joka tarkoittaa pienempää hyökkäyspintaa ja helpompaa tietoturvatarkastusta. Lisäksi WireGuard käyttää vain nykyaikaisia algoritmeja, joten heikon salauksen vahinkovalinta ei ole mahdollinen.
Mistä tiedän, että VPN todella suojaa liikennettäni?
Tarkista julkinen IP-osoitteesi komennolla curl ifconfig.me tunnelin ollessa päällä: sen pitäisi näyttää palvelimesi osoite. Testaa myös DNS-vuodot palvelulla kuten dnsleaktest.com. Jos molemmat osoittavat palvelimeesi, liikenteesi kulkee salatun tunnelin läpi oikein.
Related Coverage
- NordVPN vs ProtonVPN vs Mullvad: 8800 vs 650 [2026]
- 2FA-vertailu: 5 tapaa ja 99,9 % suoja [2026]
- HTTPS ja TLS: miten salattu yhteys suojaa sinua
- Salasanaturvallisuus: vahvat salasanat ja niiden suojaus
- Tietomurrot: miten ne tapahtuvat ja miten suojaudut
- Yksityisyys: kaikki oppaat ja artikkelit
Olet nyt pystyttänyt oman WireGuard-VPN-palvelimen, yhdistänyt siihen työpöydän ja puhelimen sekä oppinut korjaamaan yleisimmät ongelmat. Sinulla on täysi hallinta omasta salatusta tunnelistasi, ilman kolmannen osapuolen VPN-palvelua. Lisätietoja WireGuardin työkaluista löydät virallisesta wireguard-tools-dokumentaatiosta ja Linux-ytimen kehityksestä sivustolta kernel.org.
Seuraava luonteva askel on laajentaa asetuksia omiin tarpeisiisi. Voit lisätä laitteita add-client-skriptillä, ottaa käyttöön kill switchin kaikilla mobiililaitteilla ja yhdistää WireGuardin DNS-suodatukseen Pi-holella. Jos pyörität useita palvelimia, harkitse niiden yhdistämistä site-to-site-tunneleilla, joissa palvelimet toimivat toistensa peereinä. Tärkeintä on muistaa turvallisuuden perusperiaatteet: oma avainpari jokaiselle laitteelle, tiukat tiedosto-oikeudet, säännölliset päivitykset ja varmuuskopiot. Näin pidät tunnelisi luotettavana vuosien ajan.
WireGuard on hyvä esimerkki siitä, miten nykyaikainen kryptografia voi olla samaan aikaan vahvaa ja yksinkertaista käyttää. Alle 4 000 rivin koodikanta, nopea ChaCha20-Poly1305-salaus ja selkeä avainmalli tekevät siitä ratkaisun, joka kestää tarkastelun sekä turvallisuuden että suorituskyvyn kannalta. Kun ymmärrät perusteet, voit soveltaa samoja periaatteita kaikkialla, missä tarvitset luotettavan salatun yhteyden kahden pisteen välille.




