Verkkosivustohaku

Kuinka asentaa WireGuard Ubuntulle


Johdanto

WireGuard on kevyt virtuaalinen yksityisverkko (VPN), joka tukee sekä IPv4- että IPv6-yhteyksiä. VPN:n avulla voit liikkua epäluotettavissa verkoissa ikään kuin olisit yksityisessä verkossa. Se antaa sinulle mahdollisuuden käyttää internetiä turvallisemmin laitteilla, kuten kannettavilla tietokoneilla tai matkapuhelimilla, kun olet yhteydessä epäluotettaviin verkkoihin, mukaan lukien julkinen WiFi.

WireGuardin salaus perustuu julkisiin ja yksityisiin avaimiin, joiden avulla osallistujat voivat muodostaa salattuja tunneliyhteyksiä keskenään. Jokaisessa WireGuard-versiossa käytetään kiinteää joukkoa nykyaikaisia kryptografisia menetelmiä, mikä auttaa pitämään protokollan yksinkertaisena ja ennustettavana. Tämä suunnittelu välttää ajonaikaista neuvottelua ja vähentää konfigurointivirheiden riskiä.

Vertailun vuoksi muu VPN-ohjelmisto, kuten OpenVPN ja IPsec, luottaa kuljetuskerroksen turvallisuuteen (Transport Layer Security) ja varmenteisiin todennukseen ja salattujen tunnelien luomiseen. Vaikka tämä lähestymistapa tarjoaa joustavuutta ja tukee monenlaisia asiakkaita, se lisää myös määritysvaikeuksia ja tekee toiminnasta vaikeammin ennakoitavaa.

Tässä opetusohjelmassa asetat WireGuardin Ubuntu-palvelimelle ja määrität toisen koneen yhdistämään siihen vertaisena käyttäen sekä IPv4- että IPv6-yhteyttä, jota yleisesti kutsutaan dual-stack-konfiguraatioksi. Opit myös reitittämään vertaisliikennettä WireGuard-palvelimen kautta yhdyskäytäväasetuksessa sekä käyttämään VPN:ää salattuun vertaisviestintään.

Tämän perusasetusten lisäksi tämä opas käsittelee käytännön aiheita, jotka ovat tärkeitä tosielämän käyttöönotossa. Näihin kuuluvat WireGuardin vertaisverkkorakenteen ymmärtäminen, avainten hallinta ja kierto, IPv6:n ja kaksipinoisen reitityksen oikea käsittely, luotettavuuden parantaminen NATin takana oleville vertaisille, suorituskyvyn hienosäätö sekä ymmärtäminen, miten WireGuard vertautuu OpenVPN:iin siirtoprotokollien ja palomuurin käyttäytymisen osalta.

Tämän opetusohjelman tarkoituksiin toinen Ubuntu-järjestelmä toimii WireGuard-verkko-osapuolena. Sarjan myöhemmissä opetusohjelmissa käsitellään WireGuardin asentamista ja käyttöä Windowsilla, macOS:llä, Androidilla ja iOS:llä.

Ota käyttöön frontend-sovelluksesi GitHubista käyttämällä Linux-Console.net App Platformia. Anna Linux-Console.netin huolehtia sovelluksesi skaalaamisesta.

Huomautus: Jos aiot asentaa WireGuardin Linux-Console.net Dropletille, ole tietoinen siitä, että me, kuten monet muutkin hosting-palveluntarjoajat, veloitamme ylimenevästä kaistanleveydestä. Tästä syystä olethan tietoinen siitä, kuinka paljon liikennettä palvelimesi käsittelee. Lisätietoja löydät Kaistanleveyden laskutus -sivultamme.

Tärkeimmät asiat:

  • WireGuard on kevyt VPN, joka käyttää nykyaikaista kryptografiaa yksinkertaisella suunnittelulla, joka perustuu julkisen ja yksityisen avaimen pareja, mikä vähentää konfiguroinnin monimutkaisuutta ja virheitä.
  • WireGuard noudattaa vertaisverkkorakennetta, jossa kaikki järjestelmät käyttävät samaa ohjelmistoa, ja termit palvelin ja verta kuvaavat vain verkkotopologiaa, eivät eri rooleja tai toimintoja.
  • Kaikki salaus-, todennus- ja reitityskäytännöt WireGuardissa määritellään yksiselitteisesti kokoonpanotiedostoissa, ilman ohjaustasoa, varmenteiden myöntäjää tai ajonaikaista neuvottelua.
  • AllowedIPs-asetus palvelee kahta tarkoitusta: se ohjaa, mikä liikenne kulkee tunnelin kautta, ja toimii tiukkana pääsynvalvontalistana vertaisilta tulevalle saapuvalle liikenteelle.
  • WireGuard tukee sekä IPv4:ää että IPv6:ta tasavertaisesti, ja kaksoispinnoitusasetukset vaativat tarkkaa reititystä, palomuurisääntöjä ja välitysasetus jokaiselle protokollalle.
  • Kun käytetään WireGuardia VPN-porttina, palvelimella on määritettävä IP-ohjaus ja palomuurin naamiointi, jotta peer-liikenne pääsee ulkoisiin verkkoihin.
  • wg-quick-apuväline automatisoi reittien luomisen, palomuurisääntöjen ja rajapintojen asetukset, kun taas WireGuard-ytin moduuli keskittyy vain pakettien salaamiseen ja purkamiseen.
  • IPv6-vuotoja voi tapahtua kaksoispinnoiteympäristöissä, jos IPv6-reitit, kuten ::/0, eivät ole nimenomaisesti mukana, jolloin IPv6-liikenne ohittaa VPN:n, vaikka IPv4-liikenne kulkisi oikein tunnelin kautta.
  • WireGuard ei automaattisesti muokkaa järjestelmän reittejä, DNS-asetuksia tai palomuurisääntöjä, joten reitityksen ja verkkokäyttäytymisen hallintaan tarvitaan työkaluja kuten wg-quick tai manuaalinen konfigurointi.
  • Kaksipinoinen WireGuard-järjestelmä vaatii IPv4- ja IPv6-lähetyksen, palomuurisäännöt ja ICMPv6-tuen konfiguroinnin erikseen, koska käyttöjärjestelmä käsittelee kutakin protokollaa itsenäisesti.

Edellytykset

Seurataksesi tätä opasta tarvitset:

  • Yksi Ubuntu-palvelin, jossa on sudo-oikeudet omaava ei-root-käyttäjä ja palomuuri käytössä. Tämän määrityksen voit tehdä seuraamalla ohjettamme Alkuperäinen palvelimen asetukset Ubuntulla. Tässä oppaassa viittaamme tähän WireGuard-palvelimeen.

  • Tarvitset asiakaskoneen, jota käytät muodostaaksesi yhteyden WireGuard-palvelimeesi. Tässä opetusohjelmassa viittaamme tähän koneeseen nimellä WireGuard-verkko- ja laitepari. Tämän opetusohjelman tarkoituksiin suosittelemme käyttämään paikallista konettasi WireGuard-verkko- ja laiteparina, mutta voit myös käyttää etäpalvelimia tai matkapuhelimia asiakkaina, jos haluat. Jos käytät etäjärjestelmää, muista noudattaa kaikkia myöhemmin tässä opetusohjelmassa olevia valinnaisia osioita, muuten saatat lukita itsesi ulos järjestelmästä.

  • Käyttääksesi WireGuardia IPv6:n kanssa, sinun on myös varmistettava, että palvelimesi on konfiguroitu tukemaan tätä liikennetyyppiä. Jos haluat ottaa IPv6-tuen käyttöön WireGuardin kanssa ja käytät Linux-Console.netin Dropletia, katso tämä dokumentointisivu: Kuinka ottaa IPv6 käyttöön Dropleteissa. Voit lisätä IPv6-tuen joko luodessasi Dropletin tai myöhemmin käyttämällä sivun ohjeita.

WireGuardin arkkitehtuurin yleiskatsaus

Ennen kuin konfiguroit WireGuardin, on hyödyllistä ymmärtää, miten järjestelmät, vertaiset ja verkkoliikenne vuorovaikuttavat. WireGuard käyttää tarkoituksella yksinkertaista arkkitehtuuria, joka välttää ohjaustasot, varmenneviranomaiset ja konfiguraatioasetusten ajonaikaisen neuvottelun. Kaikki salaus-, todennus- ja reitityskäyttäytyminen määritellään selkeästi konfiguraatiotiedostojen kautta.

Vertaisverkkojen suunnittelu- ja topologian terminologia

WireGuard on pohjimmiltaan vertaisverkkojen välinen protokolla. Sama WireGuard-ohjelmisto ja ytimemoduuli toimivat kaikilla osallistuvilla järjestelmillä, eikä ole erillistä palvelin- tai asiakasohjelmaa.

Tässä opetusohjelmassa termillä WireGuard-palvelin tarkoitetaan keskitettyä solmua keskitetyn verkon (hub-and-spoke) topologiassa. Tämä järjestelmä on julkisesti saavutettavissa ja toimii muiden vertaislaitteiden koordinointipisteenä. Termillä WireGuard-vertaislaite tarkoitetaan laitteita, jotka yhdistävät tähän solmuun. Nämä termit kuvaavat oppaassa käytettyä verkkotopologiaa, eivät erilaisia ohjelmistoroolien tai toimintojen kykyjä.

Tämän eron ymmärtäminen on tärkeää, koska WireGuardilla ei ole vain palvelimelle tarkoitettuja määritysasetuksia. Mikä tahansa järjestelmä voi toimia keskuksena, solmuna tai molempina, riippuen täysin siitä, miten avaimet, osoitteet ja reitityssäännöt on määritelty.

Keskeiset osat WireGuard-asennuksessa

WireGuardin käyttöönotto koostuu pienestä määrästä selkeästi määriteltyjä komponentteja, joista jokaisella on oma erityinen vastuunsa.

  • Keskusverkon solmu (Hub): Keskusverkon solmu on julkisesti saavutettavissa oleva järjestelmä, joka kuuntelee salattua UDP-liikennettä yhdellä portilla. Se isännöi virtuaalista tunnelointiliitäntää, joka yleisesti nimetään wg0, ja tallentaa muiden solmujen julkiset avaimet, joilla on lupa kommunikoida sen kanssa. Hub ei löydä solmuja dynaamisesti eikä hyväksy yhteyksiä automaattisesti. Liikenne hyväksytään vain solmuilta, joiden julkiset avaimet ja sallitut IP-alueet on määritelty nimenomaisesti.

  • Yhteyksien luominen solmujen välillä (Säteet): Yhteyksiä luovat solmut ovat laitteita, jotka perustavat salattuja tunneliyhteyksiä keskus-solmuun. Nämä laitteet voivat olla kannettavia tietokoneita, palvelimia, virtuaalikoneita tai mobiilijärjestelmiä. Jokaisella solmulla on ainutlaatuinen salausavaimien pari ja yksi tai useampi yksityinen IP-osoite, joka on määritetty sen tunneliliitännälle. Solmu lähettää liikennettä tunnelin kautta vain, kun sen reitityssäännöt ohjeistavat sitä tekemään niin.

  • Tunnelointirajapinta (wg0): Tunnelointirajapinta on virtuaalinen verkkolaite, joka luodaan jokaiselle osallistuvalle järjestelmälle. Kaikki salattu liikenne kulkee tämän rajapinnan kautta sekä sisään että ulos. Käyttöjärjestelmän näkökulmasta wg0 käyttäytyy kuin tavallinen verkkoliitäntä, mikä mahdollistaa normaaleiden reititystaulukoiden, palomuurisääntöjen ja välityskäyttäytymisen soveltamisen.

Salaus, todennus ja kädenpuristukset

WireGuard käyttää julkisen avaimen salakirjoitusta todentaakseen vertaiset ja salatakseen liikenteen. Jokainen vertainen luo pitkäaikaisen yksityisen avaimen, joka säilyy paikallisessa järjestelmässä eikä sitä koskaan lähetetä. Vastaava julkinen avain jaetaan muiden vertaisten kanssa ja lisätään niiden kokoonpanoihin.

Kun viestintä alkaa, WireGuard suorittaa hiljaisen, automaattisen kryptografisen käsittelyn Noise-protokollakehykseen perustuen. Tämä käsittely luo väliaikaiset istuntoavaimet ja tarjoaa täydellisen eteenpäin suuntautuvan salaisuuden. Näitä istuntoavaimia vaihdetaan säännöllisesti ilman käyttäjän väliintuloa.

WireGuard ei neuvottele salauspaketeista, todennusmenetelmistä tai protokollaversioista. Kaikki kryptografiset perusmenetelmät ovat suunnittelultaan kiinteitä. Tämä poistaa kokonaisen luokan kokoonpanovirheitä samalla kun se tarjoaa nykyaikaiset turvallisuusvarmat takuut.

Tuetut liikennevirran mallit

WireGuard tukee useita eri liikennemalleja riippuen siitä, miten reititys ja välitys on määritetty. Tämä opas keskittyy kahteen yleisimpään käyttötapaukseen.

Vertaisverkko- tai sisäisen verkon käyttö

Vertais- tai sisäisen pääsyjärjestelyn yhteydessä liikenne on salattua vain järjestelmien välillä, jotka kuuluvat VPN:ään. Keskusverkkoyhteys toimii turvallisena päätepisteenä tai välittäjänä, mutta se ei ohjaa liikennettä ulkoisiin verkkoihin.

Tätä asetusta käytetään tyypillisesti yksityisiin palveluihin pääsemiseen, infrastruktuurin hallintaan tai eristettyjen järjestelmien yhdistämiseen. Liikenne ohjataan tunnelin kautta vain, kun kohdeosoite vastaa kumppanin määrityksessä määriteltyjä yksityisiä IP-alueita.

VPN-päätepisteen tila

Porttimoodissa keskusosapuoli välittää liikennettä muilta osapuolilta ulkoisiin verkkoihin, mukaan lukien julkinen Internet. Osapuolet lähettävät osan tai kaiken liikenteensä tunnelin kautta, ja keskusosapuoli ohjaa tämän liikenteen eteenpäin käyttämällä IP-lähetystä ja verkko-osoitteen käännöstä.

Tämä kokoonpano vaatii lisäjärjestelmäasetuksia, kuten ytimensiirtoa ja palomuurisääntöjä. Kun reititinmode on käytössä, vertailijoiden lähtevä liikenne näyttää tulevan keskusverkon julkisesta IP-osoitteesta.

AllowedIPs-asetuksen kaksoisrooli

AllowedIPs-direktiivillä on kaksi erillistä tarkoitusta WireGuardissa.

Ensiksi se määrittelee lähtevän reitityksen käyttäytymisen. Kun paketin kohdeosoite vastaa kohdetta AllowedIPs-luettelossa, paketti reititetään WireGuard-tunnelin kautta.

Toiseksi, AllowedIPs toimii tiukkana saapuvan liikenteen pääsynhallintalistana. Kun peerilta vastaanotetaan paketti, WireGuard tarkistaa paketin lähde-IP-osoitteen. Jos lähdeosoitetta ei ole listattu kyseisen peerin AllowedIPs-kentässä, paketti hylätään välittömästi.

Tämä kaksoisrooli on tarkoituksellinen, ja se on yksi yleisimmistä määritysvirheiden lähteistä. Pelkkä oikea reititys ei riitä. Myös lähde-IP-osoitteet, joita vastapuoli saa käyttää, on nimenomaisesti sallittava.

Reitityksen automaatio ja apuvälineet

WireGuard-ytimodule ei itsessään muuta järjestelmän reittejä, DNS-asetuksia tai palomuurisääntöjä. Se vain salaa ja purkaa paketteja ja yhdistää ne vertaisiin.

Reitityksen automaatio hoidetaan apuohjelmilla, kuten wg-quick. Tämä työkalu lukee WireGuardin konfiguraatiotiedoston ja soveltaa tarvittavat reititystaulun merkinnät, DNS-asetukset ja palomuurisäännöt, kun tunneli otetaan käyttöön tai poistetaan käytöstä.

Jos WireGuard on määritetty vaihtoehtoisilla työkaluilla, kuten suorin wg -komennoin, systemd-networkd:llä tai mukautetuilla skripteillä, nämä reititysmuutokset on hallittava manuaalisesti.

Tämä erottelu pitää ydinsin teessin yksinkertaisena samalla, kun se mahdollistaa joustavan integroinnin eri järjestelmäverkkoalustojen kanssa.

Vaihe 1 — WireGuardin asentaminen ja avainparin luominen

Tämän oppaan ensimmäinen vaihe on asentaa WireGuard palvelimellesi. Aloittaaksesi päivitä WireGuard-palvelimesi pakettivaraston tiedot ja asenna WireGuard käyttämällä seuraavia komentoja. Sinulta saatetaan pyytää sudo-käyttäjäsi salasanaa, jos käytät sudo ensimmäistä kertaa tässä istunnossa:

sudo apt update

sudo apt install wireguard

Nyt kun sinulla on WireGuard asennettuna, seuraava vaihe on luoda yksityinen ja julkinen avainpari palvelimelle. Käytät sisäänrakennettuja komentoja wg genkey ja wg pubkey avainten luomiseen, ja lisäät sitten yksityisen avaimen WireGuardin määritystiedostoon.

Sinun täytyy myös muuttaa juuri luomasi avaimen käyttöoikeuksia chmod-komennolla, koska tiedosto on oletuksena luettavissa kaikille palvelimesi käyttäjille.

Luo WireGuardin yksityisavain ja muuta sen käyttöoikeuksia seuraavilla komennoilla:

wg genkey | sudo tee /etc/wireguard/private.key

sudo chmod go= /etc/wireguard/private.key

Komento sudo chmod go=... poistaa tiedoston käyttöoikeudet muilta käyttäjiltä ja ryhmiltä kuin root-käyttäjältä varmistaen, että vain se pääsee käsiksi yksityiseen avaimeen.

Sinun pitäisi saada yksi rivi base64-koodattua tulostetta, joka on yksityinen avain. Kopio tulosteesta tallennetaan myös tiedostoon /etc/wireguard/private.key myöhempää käyttöä varten komennon tee-osan avulla. Merkitse tarkasti ylös tulostettu yksityinen avain, sillä sinun täytyy lisätä se myöhemmin WireGuardin konfiguraatiotiedostoon tässä osiossa.

Seuraava vaihe on luoda vastaava julkinen avain, joka johdetaan yksityisestä avaimesta. Käytä seuraavaa komentoa julkisen avaimen tiedoston luomiseen:

sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

Tämä komento koostuu kolmesta yksittäisestä komennosta, jotka on yhdistetty toisiinsa käyttämällä | (putki) -operaattoria:

  • sudo cat /etc/wireguard/private.key: tämä komento lukee yksityisen avaintiedoston ja tulostaa sen standarditulostusvirtaan.
  • wg pubkey: toinen komento ottaa ensimmäisen komennon tulosteen standardisyötteenään ja käsittelee sen julkisen avaimen luomiseksi.
  • sudo tee /etc/wireguard/public.key: viimeinen komento ottaa julkisen avaimen luontikomennon tulosteen ja ohjaa sen tiedostoon nimeltä /etc/wireguard/public.key.

Kun suoritat komennon, saat jälleen yhden rivin base64-koodattua tulostetta, joka on WireGuard-palvelimesi julkinen avain. Kopioi se talteen myöhempää käyttöä varten, sillä sinun tulee jakaa julkinen avain kaikille vertaisille, jotka muodostavat yhteyden palvelimeen.

Vaihe 2 — IPv4- ja IPv6-osoitteiden valitseminen

Edellisessä osiossa asensit WireGuardin ja loit avainparin, jota käytetään palvelimen liikenteen salaamiseen sen ja palvelimen välillä. Tässä osiossa luot palvelimelle konfigurointitiedoston ja asetat WireGuardin käynnistymään automaattisesti, kun palvelin käynnistyy uudelleen. Määrität myös yksityiset IPv4- ja IPv6-osoitteet, joita käytetään WireGuard-palvelinten ja -verkon jäsenten kanssa.

Jos aiot käyttää sekä IPv4- että IPv6-osoitteita, noudata molempia näistä osioista. Muussa tapauksessa noudata ohjeita sopivassa osiossa VPN-verkkosi tarpeiden mukaan.

Vaihe 2(a) — IPv4-alueen valitseminen

Jos käytät WireGuard-palvelintasi IPv4-verkkojen kanssa, palvelin tarvitsee yksityisten IPv4-osoitteiden joukon käytettäväksi asiakkaille ja tunneliliitännälleen. Voit valita minkä tahansa osoitealueen seuraavista varatuista osoiteblokeista (jos haluat oppia lisää siitä, miten nämä blokit on osoitettu, katso RFC 1918 -määrittely):

  • 10.0.0.0 - 10.255.255.255 (10/8-etuliite)
  • 172.16.0.0 - 172.31.255.255 (172.16/12-etuliite)
  • 192.168.0.0–192.168.255.255 (192.168/16-etuliite)

Tämän oppaan tarkoituksiin käytämme 10.8.0.0/24 IP-osoiteblokkia ensimmäisestä varatusta IP-osoitteiden sarjasta. Tämä sarja sallii enintään 255 erilaista peer-yhteyttä, eikä sen osoitteiden tulisi yleensä mennä päällekkäin tai olla ristiriidassa muiden yksityisten IP-osoitesarjojen kanssa. Voit vapaasti valita osoitealueen, joka toimii verkkoasetustesi kanssa, jos tämä esimerkkialue ei ole yhteensopiva verkkojesi kanssa.

WireGuard-palvelin käyttää yhtä IP-osoitetta alueelta yksityisen tunnelin IPv4-osoitteena. Käytämme tässä 10.8.0.1/24, mutta mitä tahansa osoitetta alueelta 10.8.0.1–10.8.0.255 voidaan käyttää. Tee muistiinpano valitsemastasi IP-osoitteesta, jos käytät jotain muuta kuin 10.8.0.1/24. Lisää tämä IPv4-osoite konfiguraatiotiedostoon, jonka määrittelet kohdassa WireGuard-palvelimen konfiguraation luominen.

Vaihe 2(b) — IPv6-alueen valitseminen

Jos käytät WireGuardia IPv6:n kanssa, sinun täytyy luoda yksilöllinen paikallinen IPv6-unicast-osoiteetuli perustuen RFC 4193 -standardin algoritmiin. Osoitteet, joita käytät WireGuardin kanssa, liitetään virtuaaliseen tunnelirajapintaan. Sinun täytyy suorittaa muutamia vaiheita luodaksesi satunnaisen, yksilöllisen IPv6-etuliitteen varatun fd00::/8-lohkon yksityisistä IPv6-osoitteista.

RFC:n mukaan suositeltu tapa saada ainutlaatuinen IPv6-etuliite on yhdistää päivän aika järjestelmän, kuten sarjanumeron tai laitteen tunnisteen, ainutlaatuiseen arvoon. Nämä arvot hashataan ja katkaistaan, jolloin saadaan bittijoukko, jota voidaan käyttää ainutlaatuisena osoitteena IP-osoitteiden varatulla yksityisellä fd00::/8 -alueella.

Aloittaaksesi IPv6-alueen luomisen WireGuard-palvelimellesi, kerää 64-bittinen aikaleima käyttämällä date-työkalua seuraavalla komennolla:

date +%s%N

Saat numeron, joka näyttää suunnilleen tältä, ja joka yhdistää sekunnit (%s date-komennossa) ja nanosekundit (%N) ajasta 1970-01-01 00:00:00 UTC lähtien:

1628101352127592197

Tallenna arvo jonnekin myöhempää käyttöä varten tässä kohdassa. Seuraavaksi kopioi palvelimesi machine-id -arvo tiedostosta /var/lib/dbus/machine-id. Tämä tunniste on yksilöllinen järjestelmällesi eikä sen pitäisi muuttua niin kauan kuin palvelin on olemassa.

cat /var/lib/dbus/machine-id

Saat tulosteen, joka näyttää seuraavalta:

/var/lib/dbus/machine-id
20086c25853947c7aeee2ca1ea849d7d

Nyt sinun täytyy yhdistää aikaleima machine-id:n kanssa ja hajauttaa tuloksena saatu arvo käyttämällä SHA-1-algoritmia. Komento käyttää seuraavaa muotoa:

printf <timestamp><machine-id> | sha1sum

Suorita komento korvaten siihen oma aikaleima- ja koneen tunnistetietosi:

printf 162810135212759219720086c25853947c7aeee2ca1ea849d7d | sha1sum

Saat hash-arvon, kuten seuraava:

4f267c51857d6dc93a0bca107bca2f0d86fac3bc  -

Huomaa, että komennon sha1sum tuloste on heksadesimaalimuodossa, joten tuloste käyttää kahta merkkiä yhden tavun esittämiseen. Esimerkiksi 4f ja 26 esimerkkitulosteessa ovat tiivistetyn datan kaksi ensimmäistä tavua.

RFC:ssä oleva algoritmi vaatii vain hashatun tuloksen vähiten merkitsevät (lopussa olevat) 40 bittiä eli 5 tavua. Käytä cut-komentoa tulostaaksesi hashin viimeiset 5 heksadesimaalisesti koodattua tavua:

printf 4f267c51857d6dc93a0bca107bca2f0d86fac3bc | cut -c 31-

-c-parametri kertoo cut-komennolle, että se valitsee vain tietyn merkkijoukon. 31--parametri kertoo cut-komennolle tulostamaan kaikki merkit kohdasta 31 lähtien rivin loppuun saakka.

Sinun pitäisi saada tuloste, joka näyttää seuraavalta:

0d86fac3bc

Tässä esimerkkitulosteessa tavujoukko on: 0d 86 fa c3 bc.

Nyt voit rakentaa oman ainutlaatuisen IPv6-verkkoetuliitteesi liittämällä generoimasi 5 tavua fd-etuliitteeseen, erottaen jokaista 2 tavua :-kaksoispisteellä luettavuuden parantamiseksi. Koska jokainen aliverkko ainutlaatuisessa etuliitteessäsi voi sisältää yhteensä 18 446 744 073 709 551 616 mahdollista IPv6-osoitetta, voit rajoittaa aliverkon standardikokoiseksi /64 yksinkertaisuuden vuoksi.

Käyttämällä aiemmin luotuja tavuja /64 aliverkon koon kanssa, tuloksena oleva etuliite on seuraava:

Unique Local IPv6 Address Prefix
fd0d:86fa:c3bc::/64

Tätä fd0d:86fa:c3bc::/64 aluetta käytetään yksittäisten IP-osoitteiden määrittämiseen WireGuard-tunneliliitännöille palvelimella ja vertaislaitteissa. Varataksesi IP-osoitteen palvelimelle, lisää 1 lopullisten ::-merkkien jälkeen. Tuloksena oleva osoite on fd0d:86fa:c3bc::1/64. Vertaislaitteet voivat käyttää mitä tahansa osoitetta tästä alueesta, mutta yleensä arvoa kasvatetaan yhdellä aina, kun lisätään uusi vertaislaite, esim. fd0d:86fa:c3bc::2/64. Tee muistiinpano IP-osoitteesta ja jatka WireGuard-palvelimen konfigurointia tämän oppaan seuraavassa osassa.

IPv6- ja dual-stack-konfiguraation huomioon otettavat seikat

Tässä opetusohjelmassa olevat vaiheet selittävät, kuinka IPv6-osoitteita luodaan ja miten ne määritetään WireGuard-liitännöille. Kuitenkin IPv6:n toiminta WireGuardissa poikkeaa useilla tärkeillä tavoilla IPv4:stä, erityisesti kun WireGuardia käytetään VPN-yhdyskäytävänä. Näiden erojen ymmärtäminen auttaa estämään reititysvirheitä, osittaisia tunnelointeja ja yleisiä IPv6-vuotoja.

IPv6-tuki WireGuardissa

WireGuard tukee IPv6:ta ensiluokkaisena protokollana. IPv6-liikenne salataan, todennetaan ja reititetään samalla tavalla kuin IPv4-liikenne. Erillistä IPv6-tilaa tai lisäkonfigurointilippua ei ole. Jos tunnelin rajapintaan on määritetty IPv6-osoitteet ja reitityssäännöt sallivat sen, IPv6-liikenne kulkee tunnelin kautta automaattisesti.

Toisin kuin IPv4, IPv6 on suunniteltu välttämään NAT:ia käyttämällä maailmanlaajuisesti reititettäviä osoitteita, mutta käytännössä monet VPN- ja pilviympäristöt käyttävät silti NAT:ia operatiivisen yksinkertaisuuden vuoksi. Tämä käytäntö kuitenkin riippuu verkkoympäristöstä. Monissa VPN-porttien asetuksissa, kuten pilvi-VPS-instanseissa tai kotireitittimissä, palvelin ei saa käytettäväksi osoitettua IPv6-etuliitettä, jota voitaisiin reitittää VPN-osapuolille.

Näissä yleisissä tilanteissa vertaisverkoille annetaan yksityisiä IPv6-osoitteita, tyypillisesti Unique Local Address (ULA) -alueelta. Kun yksityisiä IPv6-osoitteita käytetään eikä palvelimella ole niille reititettävää etuliitettä, IPv6-osoitteiden peittäminen (masquerading) on silti tarpeen. Tämä toteutetaan yleensä ip6tables -t nat -säännöillä, samoin kuin IPv4:n peittämisessä, jotta VPN-vertaiset voivat saavuttaa julkisen Internetin.

IPv6 voi välttää NATin kokonaan, kun oikea etuliitteen delegointi on käytettävissä. Kuitenkin useimmat yksinkertaiset VPN-porttien käyttöönotot luottavat edelleen IPv6:n naamiointiin reitityksen hallinnan helpottamiseksi.

Dual-Stack-toiminnan selitys

Kaksoispinnoite (dual-stack) -kokoonpano mahdollistaa sekä IPv4:n että IPv6:n käytön samalla WireGuard-rajapinnalla. Tässä kokoonpanossa wg0-rajapinnalle on määritetty yksi IPv4-osoite ja yksi IPv6-osoite, ja kummallekin protokollalle liikenne reititetään itsenäisesti.

Käyttöjärjestelmä arvioi IPv4- ja IPv6-reitit erikseen. Solmu saattaa onnistuneesti reitittää IPv4-liikenteen tunnelin läpi, kun taas IPv6-liikenne ohittaa sen, tai päinvastoin. Tämä käytös on odotettua ja lähes aina viittaa konfiguraatio-ongelmaan eikä itse WireGuardiin liittyvään ongelmaan.

Jotta dual-stack-reititys toimisi oikein, on täytettävä useita ehtoja. Sekä palvelimella että toisella osapuolella on oltava IPv4- ja IPv6-osoitteet määritettynä heidän WireGuard-liitännöilleen. AllowedIPs-määrityksen on sisällettävä sekä IPv4- että IPv6-osoitealueet. IP-lähetys on otettava erikseen käyttöön sekä IPv4:lle että IPv6:lle. Palomuurisääntöjen on sallittava liikenteen välitys ja palautus molemmille protokollille.

Osoitteen määrittäminen ja etuliitteen pituudet

IPv4:ssä WireGuardin käyttöönotossa käytetään tyypillisesti yksityisiä osoitealueita, kuten 10.0.0.0/8 tai 192.168.0.0/16. Jokaiselle vertaiselle määritetään yleensä yksi IPv4-osoite.

IPv6:ssa on yleistä määritellä VPN-verkko /64-etuliitteenä, kuten fd00::/64. Vaikka Ethernet-verkot vaativat /64-etuliitteen naapurin tunnistusta ja osoitteen automaattista määrittämistä varten, WireGuard toimii kerroksen 3 pisteestä pisteeseen -rajapintana eikä käytä näitä mekanismeja.

Tämän vuoksi on turvallista ja usein suositeltavaa antaa jokaiselle vertaiselle /128 IPv6-osoite, kuten fd00::2/128. /128-osoitteiden käyttö varmistaa tiukan reitityskäytöksen ja estää vertaisten yritykset kommunikoida suoraan muiden aliverkon osoitteiden kanssa ilman asianmukaisia reitityssääntöjä.

Määrittämällä verkko /64-osoitteeksi samalla kun vertaisille annetaan /128-osoitteet, saadaan selkeyttä ja vältetään epäselvät reititykset.

Kaiken liikenteen reitittäminen IPv6:lla

Kun WireGuard on määritetty VPN-portiksi, IPv6-liikenne on reititettävä nimenomaisesti samalla tavalla kuin IPv4-liikenne.

IPv4:ssä kaiken liikenteen reititys käyttää etuliitettä 0.0.0.0/0. IPv6:ssa vastaava etuliite on ::/0. Molemmat etuliitteet on sisällytettävä, jos tavoitteena on reitittää kaikki liikenne VPN:n kautta.

Jos vain 0.0.0.0/0 on määritetty, IPv4-liikenne ohjautuu VPN:n kautta, kun taas IPv6-liikenne käyttää edelleen paikallista verkkoliitäntää. Tämä tilanne tunnetaan nimellä IPv6-vuoto. Yleensä tämä johtaa siihen, että DNS-kyselyt, verkkoliikenne tai sovellusten yhteydet ohittavat VPN:n IPv6:n kautta, samalla kun IPv4-liikenne pysyy suojattuna.

IPv6-vuodot ovat yleinen sekaannuksen lähde, ja niitä tulisi aina testata, kun käytössä on dual-stack-verkko.

Palomuuri, edelleenlähetys ja ICMPv6

IPv6-reititys on otettava käyttöön erikseen IPv4-reitityksestä. Yhden ottaminen käyttöön ei automaattisesti ota käyttöön toista. Molemmat asetukset ovat tarpeen, kun liikennettä reititetään liitännäisten välillä.

Palomuurisäännöt on määriteltävä erikseen myös IPv6:lle. Työkalut kuten ufw, iptables ja nftables käsittelevät IPv4:ää ja IPv6:ta erillisinä sääntöjoukkoina. Puuttuvat IPv6-säännöt voivat hiljaisesti estää liikenteen, vaikka IPv4-yhteys näyttäisi toimivan.

On erityisen tärkeää sallia ICMPv6-liikenne. Toisin kuin IPv4, IPv6 riippuu ICMPv6:sta olennaisissa toiminnoissa, kuten Path MTU Discoveryssä. Jos ICMPv6 estetään, yhteydet saattavat jäädä roikkumaan tai epäonnistua suurempien pakettien siirron yhteydessä, vaikka pienet paketit näyttäisivät toimivan.

Yleisiä kaksipino-ongelmia

Useissa dual-stack WireGuard -asennuksissa esiintyy yleisesti useita ongelmia. IPv6-reittejä saattaa puuttua AllowedIPs-määrityksestä, mikä aiheuttaa IPv6-liikenteen kiertämään tunnelin. IPv6-lähetys ei välttämättä ole otettu käyttöön palvelimella, mikä estää liikennettä poistumasta tunnelin rajapinnasta. Palomuurisäännöt saattavat sallia IPv4-liikenteen mutta estää IPv6- tai ICMPv6-liikenteen. DNS-resolverit voivat palauttaa IPv6-osoitteita, vaikka IPv6-reititys ei olisi oikein konfiguroitu.

Nämä ongelmat ilmenevät usein katkonaisina häiriöinä ja ne diagnosoidaan usein väärin sovellus- tai protokollavirheiksi.

Valinta IPv4- vain, IPv6- vain ja kaksoispinoutuvan välillä

Joissakin ympäristöissä yhden protokollan käyttäminen yksinkertaistaa toimintaa.

Pelkästään IPv4:tä käyttävät käyttöönotot on helpompi integroida olemassa oleviin järjestelmiin ja työkaluihin. Pelkästään IPv6:ta käyttävät käyttöönotot poistavat tarpeen IPv4 NAT:lle ja välttävät osoitteiden loppumisen, mutta ne edellyttävät johdonmukaista IPv6-tukea palveluntarjoajilta ja asiakasverkoilta.

Kaksipinoiset käyttöönotot tarjoavat suurimman joustavuuden, mutta edellyttävät myös huolellisinta suunnittelua, määrittelyä ja validointia.

Vaihe 3 — WireGuard-palvelimen kokoonpanon luominen

Ennen WireGuard-palvelimesi asetusten luomista tarvitset seuraavat tiedot:

  • Varmista, että sinulla on yksityinen avain saatavilla kohdasta WireGuardin asentaminen ja avainparin luominen.
  • Jos käytät WireGuardia IPv4:n kanssa, tarvitset IP-osoitteen, jonka valitsit palvelimelle kohdassa IPv4-alueen valinta, joka tässä esimerkissä on 10.8.0.1/24.
  • Jos käytät WireGuardia IPv6:n kanssa, tarvitset palvelimen IP-osoitteen, jonka luot IPv6-alueen valitseminen -kohdassa. Tässä esimerkissä IP-osoite on fd0d:86fa:c3bc::1/64.

Kun sinulla on tarvittava yksityinen avain ja IP-osoite(t), luo uusi määritystiedosto käyttämällä nano-editoria tai muuta mieluisaa editoria suorittamalla seuraava komento:

sudo nano /etc/wireguard/wg0.conf

Lisää tiedostoon seuraavat rivit, korvaten oma yksityinen avaimenne korostetun base64_encoded_private_key_goes_here arvon tilalle ja IP-osoite(t) Address-rivillä. Voit myös muuttaa ListenPort-riviä, jos haluat WireGuardin olevan käytettävissä toisella portilla:

/etc/wireguard/wg0.conf
[Interface] PrivateKey = base64_encoded_private_key_goes_here Address = 10.8.0.1/24, fd0d:86fa:c3bc::1/64 ListenPort = 51820 SaveConfig = true

SaveConfig-rivi varmistaa, että kun WireGuard-liitäntä suljetaan, kaikki muutokset tallennetaan kokoon tiedostoon.

Tallenna ja sulje /etc/wireguard/wg0.conf-tiedosto. Jos käytät nano-editoria, voit tehdä sen painamalla CTRL+X, sitten Y ja ENTER vahvistaaksesi. Sinulla on nyt alkuperäinen palvelinasetus, jota voit laajentaa sen mukaan, miten aiot käyttää WireGuard VPN -palvelintasi.

Vaihe 4 — WireGuard-palvelimen verkkokokoonpanon säätäminen

Jos käytät WireGuardia yhdistääksesi peerin WireGuard-palvelimeen vain päästäksesi palvelimiin palvelimella, sinun ei tarvitse suorittaa tätä osiota. Jos haluat reitittää WireGuard-peerisi Internet-liikenteen WireGuard-palvelimen kautta, sinun on määritettävä IP-lähetys noudattamalla tämän oppaan osaa.

Välityksen määritystä varten avaa tiedosto /etc/sysctl.conf käyttämällä nano-editoria tai muuta suosikkieditoria:

sudo nano /etc/sysctl.conf

Jos käytät IPv4:ää WireGuardian kanssa, lisää seuraava rivi tiedoston loppuun:

net.ipv4.ip_forward=1

Jos käytät IPv6:ta WireGuardin kanssa, lisää tämä rivi tiedoston loppuun:

net.ipv6.conf.all.forwarding=1

Jos käytät sekä IPv4- että IPv6-osoitteita, varmista, että lisäät molemmat rivit. Tallenna tiedosto ja sulje se, kun olet valmis.

Tiedoston lukemiseksi ja uusien arvojen lataamiseksi nykyiseen terminaalisessiollesi, suorita:

sudo sysctl -p
net.ipv6.conf.all.forwarding = 1
net.ipv4.ip_forward = 1

Nyt WireGuard-palvelimesi pystyy välittämään saapuvan liikenteen virtuaalisesta VPN-verkkoasema-laitteesta muille palvelimella oleville laitteille, ja sieltä eteenpäin julkiseen internetiin. Tämän kokoonpanon käyttäminen mahdollistaa kaiken verkkoliikenteen reitittämisen WireGuard-asiakaskoneestasi palvelimesi IP-osoitteen kautta, jolloin asiakkaasi julkinen IP-osoite jää käytännössä piiloon.

Ennen kuin liikenne voidaan ohjata oikein palvelimesi kautta, sinun on kuitenkin määritettävä joitakin palomuurisääntöjä. Nämä säännöt varmistavat, että liikenne WireGuard-palvelimesi ja vertaislaitteidesi välillä kulkee moitteettomasti.

Vaihe 5 — WireGuard-palvelimen palomuurin määrittäminen

Tässä osiossa muokkaat WireGuard-palvelimen asetuksia lisätäksesi palomuurisäännöt, jotka varmistavat, että liikenne palvelimen ja asiakkaiden välillä reititetään oikein. Kuten edellisessä osiossa, ohita tämä vaihe, jos käytät WireGuard-VPN:ääsi vain koneiden väliseen yhteyteen päästäksesi resursseihin, jotka ovat rajoitettuja VPN:si kautta.

Salliaksesi WireGuard VPN -liikenteen palvelimen palomuurin läpi, sinun täytyy ottaa käyttöön masquerading, joka on iptablesin käsite ja tarjoaa dynaamisen verkko-osoitteenmuunnoksen (NAT) reaaliajassa, jotta asiakasliittymät reitittyvät oikein.

Etsi ensin WireGuard-palvelimesi julkinen verkkoliitäntä käyttäen ip route alikomento:

ip route list default

Julkinen rajapinta on merkkijono, joka löytyy tämän komennon tulosteesta sanan „dev” jälkeen. Esimerkiksi tämä tulos näyttää eth0-nimisen rajapinnan, joka on korostettu alla:

default via 203.0.113.1 dev eth0 proto static

Kirjoita laitteesi nimi muistiin, sillä lisäät sen iptables-sääntöihin seuraavassa vaiheessa.

Lisätäksesi palomuurisääntöjä WireGuard-palvelimeesi, avaa tiedosto /etc/wireguard/wg0.conf uudelleen nano:lla tai haluamallasi editorilla.

sudo nano /etc/wireguard/wg0.conf

Tiedoston alareunaan, SaveConfig=true -rivien jälkeen, liitä seuraavat rivit:

/etc/wireguard/wg0.conf
. . . PostUp = ufw route allow in on wg0 out on eth0 PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PreDown = ufw route delete allow in on wg0 out on eth0 PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

PostUp-rivien komennot suoritetaan, kun WireGuard-palvelin käynnistää virtuaalisen VPN-tunnelin. Tässä esimerkissä se lisää kolme ufw- ja iptables-sääntöä:

  • ufw route allow in on wg0 out on eth0: Tämä sääntö sallii IPv4- ja IPv6-liikenteen välityksen, joka saapuu wg0-VPN-liittymän kautta eth0-verkkoliittymälle palvelimella. Se toimii yhdessä aiemmassa osiossa määrittämiesi net.ipv4.ip_forward ja net.ipv6.conf.all.forwarding sysctl-arvojen kanssa.
  • iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE: Tämä sääntö määrittää naamioinnin ja muuttaa IPv4-liikenteen, joka tulee wg0-VPN-liitäntään, niin että se näyttää tulevan suoraan WireGuard-palvelimen julkisesta IPv4-osoitteesta.
  • ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE: Tämä sääntö määrittää häivytyksen (masquerading) ja muokkaa IPv6-liikennettä, joka saapuu wg0 VPN -rajapinnan kautta, jotta se näyttää tulevan suoraan WireGuard-palvelimen julkisesta IPv6-osoitteesta.

Huomautus: IPv6:n peittaus (masquerading) vaatii ydinjärjestelmän tuen ip6table_nat-moduulille. Joissakin jakeluissa tai pilvikuvissa tämä moduuli ei ole saatavilla tai se ei ole oletuksena käytössä. Näissä tapauksissa sinun tulee käyttää asianmukaista IPv6-reititystä delegoitujen etuliitteiden avulla NAT:n sijaan ja ilmoittaa reititettävä IPv6-etuliite vertaisille ULA-osoitteiden sijaan.

PreDown-säännöt suoritetaan, kun WireGuard-palvelin pysäyttää virtuaalisen VPN-tunnelin. Nämä säännöt ovat PostUp-sääntöjen käänteisiä, ja niiden tehtävänä on kumota VPN-liittymälle määritetyt välitys- ja naamiointisäännöt, kun VPN pysäytetään.

Molemmissa tapauksissa muokkaa asetuksia sisällyttämään tai poistamaan käytöstä IPv4- ja IPv6-säännöt, jotka sopivat VPN:illesi. Esimerkiksi, jos käytät vain IPv4:ää, voit silloin poistaa rivit, joissa on ip6tables-komennot.

Toisaalta, jos käytät vain IPv6:ta, muokkaa asetuksia niin, että ne sisältävät vain ip6tables-komennot. ufw-rivien tulisi olla olemassa kaikille IPv4- ja IPv6-verkkojen yhdistelmille. Tallenna ja sulje tiedosto, kun olet valmis.

Viimeinen osa WireGuard-palvelimesi palomuurin määrittämisessä on sallia liikenne WireGuardin UDP-porttiin ja sieltä. Jos et muuttanut porttia palvelimen /etc/wireguard/wg0.conf-tiedostossa, portti, joka avataan, on 51820. Jos valitsit toisen portin konfiguraatiota muokatessasi, varmista, että käytät sitä seuraavassa UFW-komennossa.

Jos unohdit avata SSH-portin seuratessasi vaatimustenvastaista opasta, lisää se myös tähän:

sudo ufw allow 51820/udp

sudo ufw allow OpenSSH

Huomautus: Jos käytät eri palomuuria tai olet muokannut UFW-asetuksiasi, saatat tarvita lisäpalomuurisääntöjä. Esimerkiksi, jos päätät ohjata kaiken verkkoliikenteesi VPN-yhteyden kautta, sinun on varmistettava, että portin 53 liikenne sallitaan DNS-pyyntöjä varten, ja porttien kuten 80 ja 443 liikenne HTTP- ja HTTPS-liikenteelle. Jos käytät muita protokollia VPN:n kautta, sinun on myös lisättävä säännöt niille.

Lisättyäsi nämä säännöt, poista UFW käytöstä ja ota se uudelleen käyttöön käynnistääksesi sen uudelleen ja ladataksesi muutokset kaikista muokkaamistasi tiedostoista:

sudo ufw disable

sudo ufw enable

Voit varmistaa, että säännöt ovat voimassa, suorittamalla komennon ufw status. Suorita se, ja saat tulosteen, joka näyttää seuraavalta:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
51820/udp                  ALLOW       Anywhere                  
22/tcp                     ALLOW       Anywhere                  
51820/udp (v6)             ALLOW       Anywhere (v6)             
22/tcp (v6)                ALLOW       Anywhere (v6)

WireGuard-palvelimesi on nyt konfiguroitu käsittelemään VPN-liikennettä oikein, mukaan lukien välitys ja osoitteen muunnos (masquerading) vertaisille. Kun palomuurisäännöt ovat voimassa, voit käynnistää itse WireGuard-palvelun kuuntelemaan vertaisyhteyksiä.

Vaihe 6 — WireGuard-palvelimen käynnistäminen

WireGuard voidaan määrittää toimimaan systemd-palveluna sen sisäänrakennetun wg-quick-skriptin avulla. Vaikka voisit manuaalisesti käyttää wg-komentoa luodaksesi tunnelin aina, kun haluat käyttää VPN:ää, tämä on manuaalinen prosessi, joka toistuu ja on altis virheille. Sen sijaan voit käyttää systemctl-komentoa hallitaksesi tunnelia wg-quick-skriptin avulla.

Järjestelmäpalvelun (systemd) käyttäminen tarkoittaa, että voit määrittää WireGuardin käynnistymään automaattisesti tietokoneen käynnistyessä, joten voit muodostaa yhteyden VPN:ään milloin tahansa, kunhan palvelin on käynnissä. Tämän tekemiseksi ota käyttöön wg-quick-palvelu määrittelemällesi wg0-tunnelille lisäämällä se systemctl-komentoon:

sudo systemctl enable wg-quick@wg0.service

Huomaa, että komento määrittää tunnelin nimen wg0 laitteen nimen osana palvelun nimeä. Tämä nimi vastaa /etc/wireguard/wg0.conf -konfiguraatiotiedostoa. Tämä nimitystapa tarkoittaa, että voit luoda niin monta erillistä VPN-tunnelia kuin haluat käyttäen palvelintasi.

Esimerkiksi sinulla voisi olla tunnelilaite nimeltä prod ja sen asetustiedosto olisi /etc/wireguard/prod.conf. Jokainen tunneliasetus voi sisältää erilaisia IPv4-, IPv6- ja asiakaspalomuuriasetuksia. Näin voit tukea useita eri vertaisyhteyksiä, joilla kullakin on omat ainutlaatuiset IP-osoitteensa ja reitityssääntönsä.

Aloita nyt palvelu:

sudo systemctl start wg-quick@wg0.service

Tarkista kahdesti, että WireGuard-palvelu on aktiivinen seuraavalla komennolla. Palvelun pitäisi näkyä aktiivisena luettelossa. Huomaa, että wg-quick poistuu sen jälkeen, kun se on konfiguroinut rajapinnan, joten active (exited) on normaalia.

sudo systemctl status wg-quick@wg0.service
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2021-08-25 15:24:14 UTC; 5s ago
       Docs: man:wg-quick(8)
             man:wg(8)
             https://www.wireguard.com/
             https://www.wireguard.com/quickstart/
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
    Process: 3245 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
   Main PID: 3245 (code=exited, status=0/SUCCESS)

Aug 25 15:24:14 wg0 wg-quick[3245]: [#] wg setconf wg0 /dev/fd/63
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip -4 address add 10.8.0.1/24 dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip -6 address add fd0d:86fa:c3bc::1/64 dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip link set mtu 1420 up dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ufw route allow in on wg0 out on eth0
Aug 25 15:24:14 wg0 wg-quick[3279]: Rule added
Aug 25 15:24:14 wg0 wg-quick[3279]: Rule added (v6)
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
Aug 25 15:24:14 wg0 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

Tuloste näyttää ip-komennot, joita käytetään virtuaalisen wg0-laitteen luomiseen ja sille IPv4- ja IPv6-osoitteiden määrittämiseen, jotka lisäsit kokoonpanotiedostoon. Voit käyttää näitä sääntöjä tunnelin vianmääritykseen tai wg-komennon kanssa, jos haluat kokeilla VPN-liitännän manuaalista konfigurointia.

Kun palvelin on määritetty ja käynnissä, seuraava vaihe on määrittää asiakaskoneesi WireGuard-verkko-osapuoleksi ja muodostaa yhteys WireGuard-palvelimeen.

Vaihe 7 — WireGuard-asiakkaan määritys

WireGuard-asiakaspään määrittäminen on samanlaista kuin WireGuard-palvelimen asennus. Kun asiakasohjelmisto on asennettu, luot julkisen ja yksityisen avainparin, päätät asiakaspään IP-osoitteen tai osoitteet, määrittelet konfiguraatiotiedoston asiakaspäälle ja käynnistät tunnelin käyttämällä wg-quick-komentosarjaa.

Voit lisätä niin monta vertaisosallistujaa kuin haluat VPN-verkkoosi luomalla avainparin ja konfiguraation seuraavien vaiheiden avulla. Jos lisäät useita vertaisia VPN-verkkoon, muista pitää kirjaa niiden yksityisistä IP-osoitteista törmäysten välttämiseksi.

WireGuard-vertailupisteen määrittämiseksi varmista, että sinulla on WireGuard-paketti asennettuna käyttämällä seuraavia apt-komentoja. Suorita WireGuard-vertailupisteessä:

sudo apt update

sudo apt install wireguard

WireGuard-tason avainparin luominen

Seuraavaksi sinun täytyy luoda avainpari peer-laitteelle käyttämällä samoja vaiheita kuin palvelimella. Paikalliselta koneeltasi tai etäpalvelimelta, joka toimii peerinä, jatka ja luo peerin yksityinen avain seuraavilla komennoilla:

wg genkey | sudo tee /etc/wireguard/private.key

sudo chmod go= /etc/wireguard/private.key

Saat jälleen yhden rivin base64-koodattua tulostetta, joka on yksityinen avain. Kopio tulosteesta tallennetaan myös /etc/wireguard/private.key-tiedostoon. Tee tarkasti muistiin tulostettu yksityinen avain, koska sinun täytyy lisätä se myöhemmin WireGuardin asetustiedostoon tässä osiossa.

Seuraavaksi käytä seuraavaa komentoa julkisen avaintiedoston luomiseksi:

sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

Saat jälleen yksirivisen base64-koodatun tulosteen, joka on WireGuard-verkkomittarisi julkinen avain. Kopioi se johonkin viitettä varten, sillä sinun täytyy jakaa julkinen avain WireGuard-palvelimelle salatun yhteyden luomiseksi.

WireGuard-tason osapuolen määritystiedoston luominen

Nyt kun sinulla on avainpari, voit luoda kokoonpanotiedoston peerille, joka sisältää kaiken tiedon, mitä se tarvitsee muodostaakseen yhteyden WireGuard-palvelimeen.

Tarvitset muutamia tietoja asetustiedostoa varten:

  • Verralla luomasi base64-koodattu yksityinen avain.
  • IPv4- ja IPv6-osoitealueet, jotka määritit WireGuard-palvelimella.
  • WireGuard-palvelimen base64 -koodattu julkinen avain.
  • WireGuard-palvelimen julkinen IP-osoite ja porttinumero. Yleensä tämä on IPv4-osoite, mutta jos palvelimellasi on IPv6-osoite ja asiakaskoneellasi on IPv6-yhteys internetiin, voit käyttää tätä IPv4:n sijasta.

Kun sinulla on kaikki nämä tiedot käytettävissä, avaa uusi /etc/wireguard/wg0.conf -tiedosto WireGuard-asiakaskoneella käyttäen nano-editoria tai suosikkieditoriasi:

sudo nano /etc/wireguard/wg0.conf

Lisää seuraavat rivit tiedostoon ja korvaa korostetut osiot tarvittavilla tiedoilla:

/etc/wireguard/wg0.conf
[Interface] PrivateKey = base64_encoded_peer_private_key_goes_here Address = 10.8.0.2/24 Address = fd0d:86fa:c3bc::2/64 [Peer] PublicKey = U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE= AllowedIPs = 10.8.0.0/24, fd0d:86fa:c3bc::/64 Endpoint = 203.0.113.1:51820

Huomaa, kuinka ensimmäinen Address-rivi käyttää IPv4-osoitetta 10.8.0.0/24-aliverkosta, jonka valitsit aiemmin. Tämä IP-osoite voi olla mikä tahansa aliverkossa, kunhan se eroaa palvelimen IP-osoitteesta. IP-osoitteiden kasvattaminen yhdellä joka kerta, kun lisäät peerin, on yleensä helpoin tapa varata IP-osoitteet.

Huomaa samalla, kuinka toinen Address-rivi käyttää IPv6-osoitetta aliverkosta, jonka loit aiemmin, ja kasvattaa palvelimen osoitetta yhdellä. jälleen, mikä tahansa IP alueella on kelvollinen, jos päätät käyttää eri osoitetta.

Toinen merkittävä osa tiedostosta on viimeinen AllowedIPs-rivi. Nämä kaksi IPv4- ja IPv6-aluetta ohjaavat vertaisverkkoa (peer) lähettämään liikennettä VPN:n kautta vain, jos kohdejärjestelmällä on IP-osoite jommassakummassa alueessa. Käyttämällä AllowedIPs-määritystä voit rajoittaa VPN:n vertaisverkossa siten, että se yhdistää vain muihin vertaisverkkoihin ja VPN-palveluihin, tai voit määrittää asetuksen niin, että kaikki liikenne kulkee VPN:n kautta ja käyttää WireGuard-palvelinta gatewaynä.

Jos käytät vain IPv4:ää, jätä pois perässä oleva fd0d:86fa:c3bc::/64-alue (mukaan lukien ,-pilkku). Vastaavasti, jos käytät vain IPv6:ta, sisällytä vain fd0d:86fa:c3bc::/64-etuliite ja jätä pois 10.8.0.0/24 IPv4-alue.

Molemmissa tapauksissa, jos haluat lähettää kaiken vertaisesi liikenteen VPN:n kautta ja käyttää WireGuard-palvelinta kaikkien liikenteen porttina, voit käyttää 0.0.0.0/0, joka edustaa koko IPv4-osoiteavaruutta, ja ::/0 koko IPv6-osoiteavaruutta varten.

(Valinnainen) Vertaisverkon määritys kaiken liikenteen ohjaamiseksi tunnelin kautta

Jos olet valinnut ohjata kaiken peerin liikenteen tunnelin kautta käyttämällä 0.0.0.0/0 tai ::/0 reittejä ja peer on etäjärjestelmä, sinun tulee suorittaa tämän osion vaiheet. Jos peeri on paikallinen järjestelmä, on parasta ohittaa tämä osio.

Etäkäyttäjille, joihin kirjaudut SSH:n tai jonkin muun protokollan kautta julkisen IP-osoitteen avulla, sinun täytyy lisätä joitakin lisäsääntöjä käyttäjän wg0.conf-tiedostoon. Nämä säännöt varmistavat, että voit silti muodostaa yhteyden järjestelmään tunnelin ulkopuolelta, kun se on kytkettynä. Muutoin, kun tunneli on muodostettu, kaikki liikenne, joka normaalisti kulkisi julkisen verkkoliitännän kautta, ei reitity oikein ohittamaan wg0-tunneliliitäntää, mikä johtaa siihen, että etäjärjestelmää ei voi käyttää.

Ensiksi sinun täytyy selvittää järjestelmän käyttämä oletusyhdyskäytävän IP-osoite. Suorita seuraava ip route -komento:

ip route list table main default

Saat tulosteen, joka näyttää seuraavalta:

default via 203.0.113.1 dev eth0 proto static

Merkitse portin korostettu IP-osoite 203.0.113.1 myöhempää käyttöä varten sekä laite eth0. Laitteesi nimi saattaa olla erilainen. Jos näin on, korvaa se eth0 seuraavissa komennoissa.

Seuraavaksi etsi järjestelmän julkinen IP-tunnus tarkastelemalla laitetta komennolla ip address show:

ip -brief address show eth0

Saat tulosteen, joka näyttää seuraavalta:

eth0             UP             203.0.113.5/20 10.20.30.40/16 2604:a880:400:d1::3d3:6001/64 fe80::68d5:beff:feff:974c/64

Tässä esimerkkitulosteessa korostettu 203.0.113.5 IP-osoite (ilman perässä olevaa /20) on julkinen osoite, joka on määritetty eth0-laitteelle, ja se tulee lisätä WireGuard-konfiguraatioon.

Avaa nyt WireGuard-asiakkaan /etc/wireguard/wg0.conf-tiedosto nano-editorilla tai haluamallasi tekstieditorilla.

sudo nano /etc/wireguard/wg0.conf

Lisää seuraavat 4 riviä ennen [Peer]-riviä:

PostUp = ip rule add table 200 from 203.0.113.5
PostUp = ip route add table 200 default via 203.0.113.1
PreDown = ip rule delete table 200 from 203.0.113.5
PreDown = ip route delete table 200 default via 203.0.113.1

[Peer]
. . .

Nämä rivit luovat mukautetun reitityssäännön ja lisäävät mukautetun reitin varmistaakseen, että järjestelmään suuntautuva julkinen liikenne käyttää oletusyhdyskäytävää.

  • PostUp=ip rule add table 200 from 203.0.113.5 - Tämä komento luo säännön, joka tarkistaa taulukosta numero 200 kaikki reitityskohteet, kun IP-osoite vastaa järjestelmän julkista 203.0.113.5 osoitetta.
  • PostUp=ip route add table 200 default via 203.0.113.1 - Tämä komento varmistaa, että kaikki liikenne, jota 200-taulua käsitellään, käyttää reititykseen 203.0.113.1-porttia WireGuard-liittymän sijaan.

PreDown-rivit poistavat mukautetun säännön ja reitin, kun tunneli suljetaan.

Huomautus: Taulukkonumero 200 on mielivaltainen näitä sääntöjä luotaessa. Voit käyttää arvoa välillä 2–252, tai voit käyttää mukautettua nimeä lisäämällä tunnisteen /etc/iproute2/rt_tables-tiedostoon ja viitata sitten nimeen numeerisen arvon sijaan.

Lisätietoja siitä, miten reititystaulukoiden toiminta Linuxissa toimii, saat Linuxin IP-kerrosverkon hallinnan oppaan Reititystaulukot-osiosta.

Jos ohjaat kaiken vastapuolen liikenteen VPN:n kautta, varmista, että olet määrittänyt oikeat sysctl- ja iptables-säännöt WireGuard-palvelimella kohdissa WireGuard-palvelimen verkkokokoonpanon säätäminen ja WireGuard-palvelimen palomuurin määrittäminen.

(Valinnainen) WireGuard-verkon osapuolen DNS-ratkaisijoiden määrittäminen

Jos käytät WireGuard-palvelinta VPN-yhdyskäytävänä kaiken vertaisliikenteesi varten, sinun täytyy lisätä rivi [Interface]-kohtaan, joka määrittää DNS-ratkaisimet. Jos et lisää tätä asetusta, DNS-pyyntöjäsi ei välttämättä suojata VPN:llä, tai ne saattavat paljastua Internet-palveluntarjoajallesi tai muille kolmansille osapuolille.

Jos käytät WireGuardia vain VPN-verkon resurssien käyttöön tai vertaisverkkoyhteyden muodostamiseen, voit ohittaa tämän osion.

Lisätäksesi DNS-ratkaisijoita verkkoparin asetuksiin, selvitä ensin, mitä DNS-palvelimia WireGuard-palvelimesi käyttää. Suorita seuraava komento WireGuard-palvelimella, korvaten ethernet-laitteen nimi eth0 sillä, jos se poikkeaa tästä esimerkistä:

resolvectl dns eth0

Sinun pitäisi saada tuloste, joka näyttää seuraavalta:

Link 2 (eth0): 67.207.67.2 67.207.67.3 2001:4860:4860::8844 2001:4860:4860::8888

Tulostuvat IP-osoitteet ovat DNS-ratkaisimia, joita palvelin käyttää. Voit valita käyttää mitä tahansa tai kaikkia niitä, tai vain IPv4- tai IPv6-osoitteita tarpeidesi mukaan. Tee muistiinpano käyttämistäsi ratkaisimista.

Seuraavaksi sinun täytyy lisätä valitsemasi resolversit WireGuard Peerin määritystiedostoon. Palaa WireGuard Peer -laitteeseen ja avaa /etc/wireguard/wg0.conf tiedosto käyttäen nano-editoria tai haluamaasi editoria:

sudo nano /etc/wireguard/wg0.conf

Lisää seuraava ennen [Peer] -riviä:

DNS = 67.207.67.2 2001:4860:4860::8844

[Peer]
. . .

Riippuen jälleen mieltymyksistäsi tai vaatimuksistasi IPv4:n ja IPv6:n osalta, voit muokata luetteloa tarpeidesi mukaan.

Kun olet seuraavassa vaiheessa yhdistetty VPN:ään, voit tarkistaa, että lähetät DNS-kyselyitä VPN:n kautta käyttämällä esimerkiksi sivustoa DNS leak test.

Voit myös tarkistaa, että vertaisesi käyttää määritettyjä ratkaisuohjelmia komennolla resolvectl dns, kuten suoritat palvelimella. Sinun pitäisi saada ulostulo, joka näyttää kaltaiselta seuraavasti, ja joka näyttää VPN-tunnelille määritetyt DNS-ratkaisijat:

Global: 67.207.67.2 67.207.67.3
. . .

Kun kaikki nämä DNS-resolverin asetukset ovat paikoillaan, voit nyt lisätä palvelimen vastaanottajan julkisen avaimen ja sitten käynnistää WireGuard-tunnelin vastaanottajalla.

Vaihe 8 — Yhteyshenkilön julkisen avaimen lisääminen WireGuard-palvelimelle

Ennen kuin yhdistät peerin palvelimeen, on tärkeää lisätä peerin julkinen avain WireGuard-palvelimelle. Tämä vaihe varmistaa, että pystyt muodostamaan yhteyden VPN:ään ja reitittämään liikennettä sen kautta. Ilman tämän vaiheen suorittamista WireGuard-palvelin ei salli peerin lähettää tai vastaanottaa liikennettä tunnelin kautta.

Varmista, että sinulla on kopio WireGuard-peerin base64-koodatusta julkisesta avaimesta suorittamalla:

sudo cat /etc/wireguard/public.key
PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=

Kirjaudu nyt WireGuard-palvelimelle ja suorita seuraava komento:

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,fd0d:86fa:c3bc::2

Huomaa, että komennon allowed-ips-osa ottaa pilkuilla erotetun luettelon IPv4- ja IPv6-osoitteista. Voit määrittää yksittäisiä IP-osoitteita, jos haluat rajoittaa IP-osoitteen, jonka vertainen voi itselleen asettaa, tai alueen kuten esimerkissä, jos vertaisesi voivat käyttää mitä tahansa VPN-alueen IP-osoitetta. Huomaa myös, että kahdella vertaisella ei voi olla samaa allowed-ips-asetusta.

Jos haluat päivittää olemassa olevan peerin allowed-ips-asetukset, voit suorittaa saman komennon uudelleen, mutta muuttaa IP-osoitteita. Useita IP-osoitteita voidaan käyttää. Esimerkiksi, jos haluat muuttaa juuri lisäämääsi WireGuard-peeriä lisäämällä IP-osoitteen kuten 10.8.0.100 olemassa olevien 10.8.0.2 ja fd0d:86fa:c3bc::2 IP-osoitteiden lisäksi, suoritat seuraavan komennon:

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,10.8.0.100,fd0d:86fa:c3bc::2

Kun olet suorittanut komennon lisätäksesi peerin, tarkista tunnelin tila palvelimella käyttämällä wg-komentoa:

sudo wg
interface: wg0
 public key: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
 private key: (hidden)
 listening port: 51820

peer: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
 allowed ips: 10.8.0.2/32, fd0d:86fa:c3bc::/128

Huomaa, miten peer-rivi näyttää WireGuard-peerin julkisen avaimen sekä IP-osoitteet tai osoitealueet, joita sen on sallittua käyttää määrittäessään itselleen IP-osoitetta.

Nyt kun olet määrittänyt palvelimen vertaisen yhteysparametrit, seuraava vaihe on käynnistää tunneli vertaisessa laitteessa.

Vaihe 9 — WireGuard-asiakkaan yhdistäminen tunneliin

Nyt kun palvelimesi ja vertaisesi on molemmat konfiguroitu tukemaan valintasi mukaisia IPv4-, IPv6-, pakettien välitystä ja DNS-resoluutiota, on aika yhdistää vertainen VPN-tunneliin.

Koska saatat haluta VPN:n olevan päällä vain tietyissä käyttötapauksissa, käytämme wg-quick-komentoa yhteyden muodostamiseen manuaalisesti. Jos haluat automatisoida tunnelin käynnistämisen kuten teit palvelimella, noudata näitä vaiheita WireGuard-palvelimen käynnistäminen -osiossa sen sijaan, että käyttäisit wg-quick-komentoa.

Jos ohjaat kaiken liikenteen VPN:n kautta ja olet määrittänyt DNS:n välityksen, sinun täytyy asentaa resolvconf-ohjelma WireGuard Peerille ennen tunnelin aloittamista. Suorita seuraava komento tämän määrittämiseksi:

sudo apt install resolvconf

Käynnistääksesi tunnelin, suorita seuraava WireGuard-asiakaslaitteessa:

sudo wg-quick up wg0

Saat tulosteen, joka näyttää seuraavalta:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip -6 address add fd0d:86fa:c3bc::2/64 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x

Huomaa korostetut IPv4- ja IPv6-osoitteet, jotka määritit vertaislaitteelle.

Jos asetat AllowedIPs-kohdassa vastapuolelle arvoksi 0.0.0.0/0 ja ::/0 (tai käytät alueita, jotka poikkeavat valitsemistasi VPN-alueista), tuloksesi näyttää seuraavalta:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip -6 address add fd0d:86fa:c3bc::2/64 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x
[#] wg set wg0 fwmark 51820
[#] ip -6 route add ::/0 dev wg0 table 51820
[#] ip -6 rule add not fwmark 51820 table 51820
[#] ip -6 rule add table main suppress_prefixlength 0
[#] ip6tables-restore -n
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n

Tässä esimerkissä kiinnitä huomiota korostettuihin reitteihin, jotka komento lisäsi ja jotka vastaavat vertaisen asetuksissa olevia AllowedIPs-kohteita.

Voit tarkistaa tunnelin tilan peerillä käyttämällä wg-komentoa:

sudo wg
interface: wg0
 public key: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
 private key: (hidden)
 listening port: 49338
 fwmark: 0xca6c

peer: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
 endpoint: 203.0.113.1:51820
 allowed ips: 10.8.0.0/24, fd0d:86fa:c3bc::/64
 latest handshake: 1 second ago
 transfer: 6.50 KiB received, 15.41 KiB sent

Voit myös tarkistaa palvelimen tilan uudelleen, ja saat samanlaisen tulosteen.

Varmista, että vertaisesi käyttää VPN:ää komentoja ip route ja ip -6 route käyttäen. Jos käytät VPN:ää kaikkien Internet-liikenteesi reititykseen, tarkista, mitä rajapintaa käytetään liikenteeseen, joka on kohdistettu CloudFlaren 1.1.1.1 ja 2606:4700:4700::1111 DNS-ratkaisimiin.

Jos käytät WireGuardia vain VPN-resurssien käyttämiseen, korvaa näissä komennoissa kelvollinen IPv4- tai IPv6-osoite, kuten itse yhdyskäytävä. Esimerkiksi 10.8.0.1 tai fd0d:86fa:c3bc::1.

ip route get 1.1.1.1
1.1.1.1 dev wg0 table 51820 src 10.8.0.2 uid 1000
   cache

Huomaa, että laitetta wg0 käytetään ja IPv4-osoite 10.8.0.2, jonka määritit peerille. Vastaavasti, jos käytät IPv6:ta, suorita seuraava komento:

ip -6 route get 2606:4700:4700::1111
2606:4700:4700::1111 from :: dev wg0 table 51820 src fd0d:86fa:c3bc::2 metric 1024 pref medium

Huomaa jälleen wg0-liitäntä ja IPv6-osoite fd0d:86fa:c3bc::2, jonka annoit vertaiselle.

Jos vertaisellasi on selain asennettuna, voit myös vierailla sivuilla ipleak.net ja ipv6-test.com varmistaaksesi, että vertaisesi ohjaa liikenteensä VPN:n kautta.

Kun olet valmis katkaisemaan VPN-yhteyden vertailupisteessä, käytä komentoa wg-quick:

sudo wg-quick down wg0

Saat seuraavanlaisen tulosteen, joka osoittaa, että VPN-tunneli on suljettu:

[#] ip link delete dev wg0
[#] resolvconf -d tun.wg0 -f

Jos asetat AllowedIPs-kohdassa vastapuolelle arvoksi 0.0.0.0/0 ja ::/0 (tai käytät alueita, jotka poikkeavat valitsemistasi VPN-alueista), tuloksesi näyttää seuraavalta:

[#] ip rule delete table 200 from 203.0.113.5
[#] ip route delete table 200 default via 203.0.113.1
[#] ip -4 rule delete table 51820
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip -6 rule delete table 51820
[#] ip -6 rule delete table main suppress_prefixlength 0
[#] ip link delete dev wg0
[#] resolvconf -d tun.wg0 -f
[#] iptables-restore -n
[#] ip6tables-restore -n

Yhdistääksesi VPN:ään uudelleen, suorita wg-quick up wg0 -komento uudelleen sillä vertaisella. Jos haluat poistaa vertaan asetukset kokonaan WireGuard-palvelimelta, voit suorittaa seuraavan komennon varmistaen, että korvaat oikean julkisen avaimen vertaille, jonka haluat poistaa:

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= remove

Tyypillisesti sinun tarvitsee poistaa peeri-konfiguraatio vain, jos peeri ei enää ole olemassa tai jos sen salausavaimet on vaarantunut tai ne on vaihdettu. Muuten on parempi jättää konfiguraatio paikoilleen, jotta peeri voi muodostaa yhteyden VPN:ään uudelleen ilman, että sinun tarvitsee lisätä sen avainta ja allowed-ips-asetuksia joka kerta.

WireGuard-avainten hallinta ja kierrättäminen

WireGuard perustuu staattisiin julkisen ja yksityisen avaimen pareja autentikointiin ja salaukseen. Tämä malli vähentää merkittävästi konfigurointien monimutkaisuutta, mutta samalla se asettaa avainten hallinnan täysin järjestelmänvalvojan vastuulle. Pitkäkestoisissa VPN-järjestelyissä, jaetuissa infrastruktuureissa tai ympäristöissä, joissa on useita osapuolia, huolellinen avainten hallinta on välttämätöntä turvallisuuden ja toiminnan vakauden ylläpitämiseksi.

WireGuard-avaintyppien ymmärtäminen

Jokainen WireGuard-verkon solmu käyttää kahta erilaista salausavaintyyppiä.

  • Pitkän aikavälin yksityiset avaimet: Yksityinen avain tunnistaa osapuolen yksilöllisesti, ja sen on pysyttävä salassa koko ajan. Tätä avainta käytetään salattujen kättelyjen aikana osapuolen todentamiseen ja lyhytikäisten istuntoavaimien luomiseen. Jos yksityinen avain paljastuu, mikä tahansa järjestelmä, joka hallitsee tätä avainta, voi esiintyä osapuolena.

  • Pitkäaikaiset julkiset avaimet: Julkinen avain johdetaan yksityisestä avaimesta ja se jaetaan muiden osapuolten kanssa. Keskuspalvelimella julkiset avaimet määrittävät, mitkä osapuolet saavat kommunikoida ja mitä IP-osoitteita heidän on sallittua käyttää.

Näiden pitkäaikaisten avainten lisäksi WireGuard johdetaan automaattisesti väliaikaisia istuntoavaimia salattujen kättelyjen aikana. Näitä istuntoavaimia kierrätetään säännöllisesti ja ne tarjoavat täydellisen eteenpäin salaisuuden ilman järjestelmänvalvojan osallistumista.

Suositellut avaintenhallintakäytännöt

Seuraavat käytännöt auttavat vähentämään riskiä ja yksinkertaistamaan jatkuvia toimintoja:

  • Määritä jokaiselle laitteelle yksilöllinen avainpari: Jokaisella laitteella tulisi olla oma yksityinen ja julkinen avainparinsa. Yksilöllisten avainten käyttö mahdollistaa pääsyn estämisen yhdeltä laitteelta vaikuttamatta muihin. Avainteiden uudelleenkäyttö useissa järjestelmissä lisää tietomurron vaikutusta ja tekee auditoinnista monimutkaisempaa.

  • Rajoita yksityisen avaimen materiaalin käyttöoikeuksia: Yksityisen avaimen tiedostot tulisi olla luettavissa vain root-käyttäjälle. Linux-järjestelmissä tämä tarkoittaa yleensä käyttöoikeuksien asettamista arvoon 600 komennolla, kuten chmod 600 /etc/wireguard/private.key. Tiedoston käyttöoikeuksien rajoittaminen auttaa estämään vahingossa tapahtuvan paljastumisen varmuuskopioiden, lokien tai ei-privilegioitujen käyttäjien kautta.

  • Pidä selkeä vertaisvaranto: Säilytä kirjanpitoa, joka yhdistää kunkin vertaisen julkisen avaimen sen laitteen nimeen, määritettyihin IPv4- ja IPv6-osoitteisiin sekä tarkoitukseen. Tämä dokumentaatio muuttuu yhä tärkeämmäksi vertaismäärän kasvaessa ja helpottaa vianmääritystä, tarkastuksia ja rutiinihuoltoa.

  • Poista käyttämättömät tai passiiviset solmut viipymättä: Kun laite poistetaan käytöstä tai se ei enää tarvitse VPN-yhteyttä, poista sen julkinen avain keskeisestä solmuasetuksesta. Käyttämättömien avainten jättäminen paikalleen lisää hyökkäyspintaa ja tekee tulevista tarkastuksista vaikeampia.

Tilanteet, jotka vaativat avainten kierrätystä

Avainkierto tulisi suorittaa useassa tavallisessa tilanteessa:

  • Epätodennäköinen tai vahvistettu avainvuoto: Jos yksityistä avainta on mahdollista kopioitu, vuotanut tai siihen on päässyt käsiksi luvaton taho, se pitäisi vaihtaa välittömästi estääkseen väärinkäytön.

  • Kadonneet tai varastetut laitteet: Kun laite katoaa tai varastetaan, sen avainten kierrättäminen varmistaa, että laite ei voi enää muodostaa yhteyttä VPN:ään, vaikka alkuperäinen asetuskokoonpano palautuisikin.

  • Organisaation turvallisuusvaatimukset: Joissakin ympäristöissä vaaditaan avainten säännöllistä vaihtoa, jotta täytetään sisäiset käytännöt tai vaatimustenmukaisuusstandardit, vaikka kompromissia ei epäiltäisikään.

  • Laitteen omistajuuden tai roolin muutokset: Kun laite siirretään toiselle käyttäjälle tai tarkoitukseen, avainten kierrättäminen estää ei-toivotun jatkuneen pääsyn.

Turvallinen toisen osapuolen avainten kierrättäminen

WireGuard liittää sisäiset IP-osoitteet tiettyihin julkisiin avaimiin käyttäen kryptografia-avainten reititystaulukkoa. Tämän suunnittelun vuoksi samaa sisäistä IP-osoitetta ei voi turvallisesti osoittaa kahdelle julkiselle avaimeen samanaikaisesti. Avoimen avaimen kierto aiheuttaa yleensä lyhyen katkoksen yhteyteen, kun kokoonpanoa päivitetään.

Pyöräyttääksesi toisen osapuolen avaimet, noudata tätä prosessia:

  1. Luo uusi yksityinen ja julkinen avainpari vertaiselle.
  2. Päivitä keskussolmun kokoonpano korvaamalla vanha julkinen avain uudella samalla AllowedIPs-arvoilla. Älä käynnistä rajapintaa uudelleen vielä.
  3. Päivitä peerin kokoonpanotiedosto käyttämään uutta yksityisavainta.
  4. Ota päivitetty määritys käyttöön keskittimellä, esimerkiksi lataamalla WireGuard-palvelu uudelleen tai käyttämällä wg syncconf-komentoa. Tällöin peer menettää tilapäisesti yhteyden.
  5. Käynnistä WireGuard-liitäntä uudelleen peer-laitteessa, jotta se alkaa käyttää uutta yksityistä avainta.
  6. Varmista, että uusi käsikättely onnistuu ja että liikenne kulkee oikein.
  7. Poista kaikki jäljellä olevat viittaukset vanhaan avaimeseen, jos niitä vielä on.

Tämä korvauspohjainen lähestymistapa heijastaa sitä, miten WireGuard toteuttaa kryptografisen reitityksen ja välttää epäselvät tai ristiriitaiset asetukset.

Keskeisen vertaisen avainten kierto

Keskeisen solmun yksityisavaimen vaihtaminen vaikuttaa kaikkiin siihen yhdistyviin solmuihin. Jokaisen solmun asetukset on päivitettävä uudella julkisella avaimella, ennen kuin yhteys voidaan palauttaa.

Koska tämä muutos vaikuttaa jokaiseen vertaisverkkoon samanaikaisesti, keskusvertaisavaimen kierto tulisi suunnitella huolellisesti ja suorittaa huoltokatkon aikana. Käytännössä keskusavaimia kierretään harvemmin kuin vertaisverkkojen avaimia.

Esijakettujen avainten hallinta (Valinnainen)

Julkisten ja yksityisten avainten parien lisäksi WireGuard tukee valinnaista ennalta jaettua avainta (PSK) jokaiselle vertaiselle. PSK lisää ylimääräisen kerroksen symmetristä salausta WireGuardin olemassa olevan kryptografian päälle.

Ennalta jaettuja avaimia käytetään yleisesti korkean turvallisuuden ympäristöissä puolustautumiskeinona tulevia kryptografisia kehityksiä vastaan. Jos salattua liikennettä tallennetaan tänään ja taustalla oleva julkisen avaimen algoritmi vaarantuu tulevaisuudessa, PSK estäisi silti menneiden istuntojen salauksen purkamisen.

Jos käytetään PSK:ja, niitä tulisi käsitellä arkaluonteisina salaisuuksina ja kierrättää säännöllisesti. PSK:n kierrättäminen noudattaa samaa toimintamallia kuin vertaisavainten kierrättäminen, ja se on sovittava molemmilla yhteyden osapuolilla.

Pyörintätaajuuden valitseminen

WireGuard ei pakota kiinteää avainten kierron aikataulua. Sopivat kiertovälit riippuvat ympäristöstä.

  • Henkilökohtaiset tai lyhytaikaiset tehtävät eivät välttämättä vaadi suunniteltua kiertoa.
  • Jaetuissa tai tuotantoympäristöissä avaimia vaihdetaan tyypillisesti 6–12 kuukauden välein.
  • Korkean turvallisuuden ympäristöt saattavat vaatia useampaa kiertoa politiikan mukaan.

Säännöllinen kierto vähentää pitkäikäisiin tunnistetietoihin liittyvää riskiä ja tuo WireGuard-asennukset yleisten turvallisuuskäytäntöjen mukaisiksi.

WireGuard vs OpenVPN: käytännön erot

WireGuard ja OpenVPN ovat molemmat laajasti käytettyjä VPN-teknologioita, mutta ne lähestyvät salausta, asetuksia ja verkkokäyttäytymistä hyvin eri tavoin. Näiden erojen ymmärtäminen auttaa kehittäjiä valitsemaan ratkaisun, joka parhaiten sopii heidän toiminnallisiin rajoitteisiinsa.

Konfigurointi- ja toimintamalli

WireGuard käyttää staattista kokoonpanomallia, joka perustuu julkisen ja yksityisen avaimen pareja. Kaikki solmut määritellään eksplisiittisesti, ja reititys käyttäytyminen hallitaan kiinteiden kokoonpanoarvojen kautta. Kontrollikanavaa, varmentajaa tai parametrien dynaamista neuvottelua ei ole.

OpenVPN perustuu TLS:ään ja X.509-sertifikaatteihin. Se käyttää ohjauskanavaa asiakkaiden todennukseen, salausasetusten neuvotteluun ja istuntojen hallintaan. Tämä malli tarjoaa joustavuutta, mutta lisää konfigurointi- ja operointikokonaisuuden monimutkaisuutta.

Käytännössä WireGuardin määritykset ovat lyhyempiä, helpommin tarkistettavia ja vähemmän alttiita hienovaraisille virheellisille asetuksille. OpenVPNin määritykset tarjoavat enemmän hallintaa, mutta niiden turvallisuuden ja johdonmukaisuuden varmistamiseksi tarvitaan huolellista hallintaa.

Kryptografia ja turvallisuussuunnittelu

WireGuard käyttää kiinteää joukkoa moderneja kryptografisia menetelmiä. Näitä valintoja ei voi muokata. Tämä suunnittelu poistaa kryptografiset alennushyökkäykset ja tarpeen valita salausmenetelmäkokoonpanoja.

OpenVPN tukee laajaa valikoimaa salausalgoritmeja ja todennusmenetelmiä. Vaikka tämä joustavuus mahdollistaa yhteensopivuuden vanhempien järjestelmien kanssa, se lisää myös riskin heikoista tai epäjohdonmukaisista asetuksista.

Molemmat ratkaisut tukevat täydellistä eteenpäin suuntautuvaa salausta. WireGuard suorittaa avainten kierron automaattisesti kädenpuristusmekanismin avulla, kun taas OpenVPN luottaa TLS-istunnon käyttäytymiseen.

Suorituskykyominaisuudet

WireGuard on suunniteltu korkeaan suorituskykyyn ja matalaan viiveeseen. Se toimii Linux-ytimessä ja sen koodipohja on pieni, mikä vähentää ylikuormitusta ja kontekstinvaihtoja. Useimmissa ympäristöissä WireGuard tarjoaa suuremman läpimenon ja tasaisemman viiveen minimaalisen säätämisen avulla.

Historiallisesti OpenVPN toimii käyttäjätilassa ja aiheuttaa lisäkuormitusta kontekstinvaihtojen ja protokollankäsittelyn vuoksi. OpenVPNin uudemmat versiot tukevat Kernel Data Channel Offload (DCO) -toimintoa, joka parantaa suorituskykyä merkittävästi, mutta tätä ominaisuutta ei aina ole käytössä tai saatavilla oletusasennuksissa.

Vaikka käytettäisiinkin DCO:ta, WireGuard saavuttaa tyypillisesti vahvan suorituskyvyn vähemmillä konfigurointimuuttujilla.

Verkkosiirtymä ja palomuurin läpäisy

WireGuard käsittelee verkkomuutoksia sujuvasti. Jos osapuolen IP-osoite muuttuu, esimerkiksi vaihdettaessa WiFin ja mobiiliverkkojen välillä, tunneli jatkaa toimintaansa ilman uudelleenneuvottelua.

WireGuard kuitenkin toimii yksinomaan UDP:n yli. Vaikka UDP on tehokas, se voidaan joskus estää rajoittavilla julkisilla WiFi-verkoilla, yritysten palomuureissa tai laitosten verkoissa. WireGuardilla ei ole sisäänrakennettua varajärjestelmää, kun UDP-liikenne estetään.

OpenVPN tukee sekä UDP:tä että TCP:tä. Kun UDP ei ole saatavilla, OpenVPN voidaan määrittää toimimaan TCP-portin 443 kautta, jolloin VPN-liikenne näyttää olevan tavallista HTTPS-liikennettä. Tämä ominaisuus tekee OpenVPN:stä luotettavamman ympäristöissä, joissa on tiukat palomuurisäännöt tai sensuuri.

Käyttäjille, jotka toimivat rajoittavien verkkojen takana, TCP-tuki on usein ratkaiseva tekijä OpenVPN:n valinnassa WireGuardin sijaan.

Ominaisuuksien laajuus ja laajennettavuus

OpenVPN sisältää ominaisuuksia, joita WireGuard tarkoituksellisesti ei tarjoa. Näihin kuuluvat käyttäjäkohtainen tunnistautuminen, dynaaminen osoitteenjakaminen ja integraatio ulkoisiin identiteettijärjestelmiin.

WireGuard keskittyy yksinomaan turvalliseen tunnelointiin. Todentamisen työnkulut, pääsynhallinta ja dynaaminen konfigurointi on hoidettava protokollan ulkopuolella.

Tämä tekee OpenVPN:stä paremman valinnan ympäristöihin, joissa vaaditaan monimutkaista todennusta tai keskitettyä käyttäjähallintaa, kun taas WireGuard sopii paremmin infrastruktuuritason VPN:iin ja vertaispohjaiseen käyttöön.

Yhteenvetokvertailu

NäkökulmaWireGuardOpenVPN
SiirtoprotokollaVain UDPUDP ja TCP
KonfigurointityyliStaattinen, avainpohjainenDynaaminen, todistuspohjainen
Koodipohjan kokoPieniSuuri
SalausvaihtoehdotKorjattuMukautettavissa
SuorituskykyKorkeaKohtalainen tai korkea
MatkapuhelintukiSisäänrakennettuRajoitettu
Palomuurin vastustusRajoitetuilla verkoillaVahva TCP 443:n kautta
MonimutkaisuusMatalaKorkea

Valitseminen WireGuardin ja OpenVPNin välillä

WireGuard sopii hyvin infrastruktuurin VPN-yhteyksiin, sivustolta toiselle -tunneleihin, mobiilikäyttäjiin sekä ympäristöihin, joissa yksinkertaisuus, suorituskyky ja ennustettavuus ovat etusijalla.

OpenVPN on edelleen vahva valinta yritysympäristöihin, jotka tarvitsevat TCP-pohjaista tunneloimista, kehittynyttä todennusta tai luotettavaa toimintaa rajoittavien palomuurien takana.

Monissa nykyaikaisissa käyttöönotossa WireGuard korvaa OpenVPN:n, ei siksi että se tarjoaisi enemmän ominaisuuksia, vaan siksi että se tarjoaa vähemmän ominaisuuksia selkeämmällä käyttäytymisellä.

Suorituskyvyn säätö ja optimointi

WireGuard toimii hyvin oletusasetuksillaan, mutta todellisen verkon olosuhteet voivat vaikuttaa luotettavuuteen ja läpimenoon. Tekijät kuten pakettikoko, reitityksen laajuus, NAT:n toiminta ja DNS:n ratkaisu vaikuttavat kaikki siihen, miten tunneli käyttäytyy pitkäaikaisessa tai ajoittaisessa käytössä.

Katsotaan yleisimpiä viritysalueita ja milloin säätöjä on sopivaa tehdä.

MTU:n valinta ja pakettien pilkkominen

Maksimi siirtoyksikkö (MTU) määrittää suurimman pakettikoon, joka voidaan lähettää ilman sirpaloitumista. WireGuard salaa ja kapseloi paketit, mikä pienentää tehokasta MTU:a verrattuna fyysiseen verkkoliitäntään.

Oletusarvoisesti WireGuard käyttää MTU-arvoa 1420. Tämä arvo kattaa IPv6-otsikoiden, UDP:n ja WireGuardin kapseloinnin yhteenlasketun ylikuormituksen ja toimii hyvin useimmissa Ethernet-pohjaisissa verkoissa. Joissakin ympäristöissä tarvitaan pienempi MTU. Tämä on yleistä mobiiliverkoissa, PPPoE-yhteyksissä ja pilvialustoilla, joissa on lisäkapselointikerroksia. Kun MTU on liian suuri, paketteja saatetaan hylätä tai pilkkoa. Tämä johtaa usein tilanteisiin, joissa pienet pyynnöt toimivat, mutta suuremmat siirrot pysähtyvät tai epäonnistuvat. Jos tällaisia oireita esiintyy, MTU:n vähentäminen asteittain on suositeltavaa. Arvot kuten 1360 tai rajoitetummissa ympäristöissä 1280, joka on IPv6:n vähimmäis-MTU, ratkaisevat usein nämä ongelmat minimoiden suorituskykyvaikutuksen.

MTU tulisi asettaa nimenomaisesti kokoonpanotiedoston [Interface]-osiossa, jotta toiminta pysyy johdonmukaisena uudelleenkäynnistysten jälkeen.

AllowedIPs-asetuksen laajuus ja vaikutus

AllowedIPs-direktiivi vaikuttaa sekä reitityskäyttäytymiseen että suorituskykyyn. Laajat osoitealueet saavat enemmän liikennettä kulkemaan tunnelin läpi, mikä lisää salaamisen kuormitusta ja palvelimen kuormitusta. Kapeiden AllowedIPs-arvojen käyttäminen rajoittaa tunnelin vain liikenteeseen, joka tarvitsee suojausta. Tämä vähentää CPU:n käyttöä ja välttää tarpeettoman kapseloinnin.

Kun 0.0.0.0/0 tai ::/0 on määritetty, kaikki liikenne ohjataan VPN:n kautta. Tämä kokoonpano on sopiva, kun yksityisyys, keskitetty ulospäin suuntautuvan liikenteen hallinta tai epäluotettavat verkot ovat huolenaihe, mutta se lisää viivettä ja resurssien käyttöä yleisessä Internet-liikenteessä.

Suorituskyvyn optimointi sisältää usein AllowedIPs-arvon rajaamisen siellä, missä se on mahdollista, ja täyden tunnelin reitityksen välttämisen, ellei se ole tarpeen.

NAT:n läpikulku ja yhteyden vakaus (PersistentKeepalive)

WireGuard on tarkoituksella hiljaa, kun tietoa ei siirretä. Se ei lähetä oletuksena säännöllisiä keepalive-paketteja. Ympäristöissä, joissa käytetään NAT:ia, kuten kotireitittimissä, mobiiliverkoissa tai monissa pilviverkoissa, tämä hiljaisuus voi aiheuttaa sen, että NAT-laite sulkee yhteyden kartoituksen. Tällöin palvelimelta tuleva saapuva liikenne estetään, kunnes vertaislaite lähettää liikennettä uudelleen. Tätä käyttäytymistä pidetään usein viiveenä, viivästyneinä yhteyksinä tai satunnaisina toimintahäiriöinä.

Tämän estämiseksi WireGuard tarjoaa PersistentKeepalive-asetuksen. Tämä vaihtoehto voidaan lisätä peerin määrityksen [Peer]-osioon. Se saa peerin lähettämään pienen keepalive-paketin tietyn välein NAT-mappingin pitämiseksi avoinna. Arvo 25 sekuntia on yleisesti käytetty ja toimii hyvin useimpien NAT-laitteiden kanssa. Jos yhteys toimii aluksi mutta epäonnistuu lepotilan jälkeen, PersistentKeepalive=25-asetuksen ottaminen käyttöön on ensisijainen ja suositeltu ratkaisu.

DNS-ratkaisu ja tunnelin käyttäytyminen

DNS-asetuksilla on merkittävä vaikutus koettuun VPN-suorituskykyyn. Kun DNS-resolvereita ei reititetä oikein tunnelin kautta, sovellukset saattavat tuntua hitailta tai epäluotettavilta, vaikka itse tunneli toimisi moitteettomasti.

Porttikonfiguraatioissa DNS-kyselyt tulisi ohjata VPN:n kautta, jotta reititys pysyy johdonmukaisena ja vältetään vuodot. Tämä edellyttää DNS-resolverien selkeää määrittelyä etäkumppanimäärityksissä. Kun DNS on virheellisesti konfiguroitu, yleisiä oireita ovat hitaat sivulataukset, epävakaa yhteys tai liikenteen reitittyminen VPN:n ulkopuolelle aktiivisesta tunnelista huolimatta.

Valitsemalla ratkaisut, jotka ovat saavutettavissa tunnelin kautta ja vastaavat nopeasti, parannetaan sekä luotettavuutta että käyttäjäkokemusta.

IPv4:n ja IPv6:n suorituskykyerot

Dual-stack-ympäristöissä IPv4 ja IPv6 voivat käyttäytyä eri tavoin. IPv6-reiteillä voi olla erilaisia MTU-rajoituksia, reititysperiaatteita tai palomuurin käyttäytymistä.

Molempien protokollien itsenäinen testaaminen auttaa tunnistamaan protokollakohtaisia ongelmia. Työkalut, kuten ping, tracepath ja ip route get, ovat hyödyllisiä reitityksen ja MTU:n käyttäytymisen vahvistamiseen kullekin osoiteperheelle.

Jos IPv6-suorituskyky vaikuttaa epäjohdonmukaiselta, varmista, että ICMPv6-liikenne on sallittu. ICMPv6 tarvitaan Path MTU Discovery -toimintoon, ja sen estäminen voi aiheuttaa yhteyksien jumiutumisen suuremmilla paketeilla.

CPU- ja salauskustannukset

WireGuard käyttää nykyaikaista kryptografiaa, joka on tehokasta useimmissa järjestelmissä. Salaus kuitenkin kuluttaa edelleen prosessorin resursseja.

Pienissä virtuaalikoneissa, sulautetuissa reitittimissä tai järjestelmissä, joissa ei ole laitteistokiihdytystä, täysputkiasetukset voivat kuormittaa suorittimen täysimääräisesti jatkuvan kuormituksen aikana.

CPU:n käytön seuranta vilkkaiden verkkoliikenteiden aikana auttaa selvittämään, johtuvatko suorituskykyongelmat salausrasituksesta eivätkä verkkoasetuksista. Tällaisissa tapauksissa saatetaan joutua vähentämään tunnelin liikennettä tai päivittämään palvelininstanssia.

Suorituskyvyn muutosten vahvistaminen

Suorituskyvyn optimointi tulisi tehdä vaiheittain. Jokaisen muutoksen jälkeen on varmistettava yhteydet ja vakaus ennen lisämuutosten tekemistä.

Hyödyllisiä varmennusvaiheita ovat muun muassa yhteyden vakauden tarkistaminen wg-komennolla, viiveen ja läpäisevyyden mittaaminen ennen muutoksia ja niiden jälkeen sekä reitityskäyttäytymisen varmistaminen komentoja ip route ja ip -6 route käyttäen. Tämä lähestymistapa vähentää riskejä ja helpottaa vianmääritystä.

UKK

1. Mitä WireGuard on ja miten se toimii Ubuntussa?

WireGuard on moderni VPN-teknologia, joka on suunniteltu paljon nopeammaksi ja helpommaksi ottaa käyttöön kuin vanhemmat vaihtoehdot, kuten OpenVPN tai IPsec. Voit ajatella sitä turvallisena tunnelina, joka yhdistää laitteesi suoraan. Toisin kuin vanhemmat VPN:t, jotka ovat raskaita ja monimutkaisia, WireGuard on äärimmäisen kevyt. Ubuntussa se toimii suorittamalla suoraan Linux-ytimen sisällä; käyttöjärjestelmän ydinmoottorissa. Koska se toimii syvällä järjestelmässä eikä erillisenä sovelluksena päällä, se käyttää hyvin vähän akkua ja käsittelee dataa uskomattoman nopeasti.

Yhteyden muodostamiseksi WireGuard käyttää menetelmää, joka on hyvin samanlainen kuin SSH. Se luo jokaiselle laitteelle parin "avaimia": yksityisen avaimen (joka pysyy salassa laitteessa) ja julkisen avaimen (jota jaat muiden laitteiden kanssa, joihin haluat muodostaa yhteyden). Yhteys muodostuu vain, jos avaimet täsmäävät täydellisesti, mikä tekee yhteyden muodostamisesta nopeaa ja turvallista.

2. Onko WireGuard turvallisempi kuin OpenVPN?

Useimmille käyttäjille WireGuardia pidetään turvallisempana yksinkertaisuutensa ja modernin suunnittelunsa vuoksi. Suurin syy tähän on sen koodin koko. WireGuard on rakennettu vain noin 4 000 rivin koodilla, kun taas OpenVPN:llä on yli 100 000 riviä. Tämä valtava ero tarkoittaa, että tietoturva-asiantuntijoiden on paljon helpompi lukea WireGuardin koodi ja löytää haavoittuvuuksia (bugin) ennen kuin pahantahtoiset toimijat tekevät sen.

WireGuard pakottaa sinut myös käyttämään uusimpia ja vahvimpia nykyisiä salausstandardeja. Vanhemmat VPN:t sallivat krypton joustavuuden, mikä tarkoittaa, että ne voivat alentaa salauksen tasoa tukemaan vanhoja laitteita. WireGuard poistaa tämän vaihtoehdon, estäen hyökkääjiä huijaamasta VPN:ääsi käyttämään heikompaa salausta. Lisäksi WireGuard on oletuksena huomaamaton; jos luvaton laite lähettää paketin palvelimellesi, WireGuard ei yksinkertaisesti vastaa. Tämä tekee palvelimestasi näkymättömän hakkereille, jotka etsivät avoimia portteja.

3. Voinko asentaa WireGuardin Ubuntulle ilman Dockeria?

Kyllä, voit helposti asentaa sen suoraan järjestelmään ilman Docker-kontteja. Itse asiassa suora käyttö on usein suositeltu tapa Ubuntussa, koska ohjelmisto sisältyy Ubuntun virallisiin ohjelmistovarastoihin. Yleensä tarvitsee vain suorittaa alla olevat tavalliset asennuskomennot, jotka hakevat tarvittavan ohjelmiston suoraan Ubuntun virallisesta lähteestä.

sudo apt update
sudo apt install wireguard

4. Kuinka lisään useita WireGuard-asiakkaita (verkkotovereita)?

WireGuard käyttää vertaisverkkokonseptia, mikä tarkoittaa, että jokainen laite, johon liityt, käsitellään 'vertaisena'. Lisääksesi useita laitteita, kuten kannettavan tietokoneen, älypuhelimen ja tabletin, muokkaat yksinkertaisesti palvelimen kokoonpanotiedostoa (yleensä sijaitsee kohdassa /etc/wireguard/wg0.conf).

Jokaiselle uudelle laitteelle lisäät uuden tekstilohkon, joka on merkitty [Peer]. Tämän lohkon sisälle sinun tulee liittää kyseisen laitteen Julkkinen avain ja antaa sille yksilöllinen sisäinen IP-osoite (kuten 10.0.0.2 ensimmäiselle laitteelle, 10.0.0.3 toiselle ja niin edelleen). On erittäin tärkeää, ettei näissä sisäisissä IP-osoitteissa ole päällekkäisyyksiä.

Tässä on yksinkertainen esimerkkikonfiguraatiolohko:

[Interface]
# Server settings...
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <Server_Private_Key>

[Peer]
# Client 1 (Laptop)
PublicKey = <Laptop_Public_Key>
AllowedIPs = 10.0.0.2/32

[Peer]
# Client 2 (Phone)
PublicKey = <Phone_Public_Key>
AllowedIPs = 10.0.0.3/32

5. Mitä portteja WireGuard käyttää?

WireGuard käyttää oletuksena UDP-porttia 51820. Se perustuu tiukasti UDP-protokollaan, koska se on nopeampi datan tunnelointiin kuin TCP. TCP vaatii vahvistuksen jokaiselle lähetetylle datapaketille, mikä voi hidastaa VPN-yhteyttä merkittävästi. UDP vain lähettää datan ilman kuittauksen odottamista, mikä sopii täydellisesti WireGuardin korkean nopeuden luonteeseen. Kun asetat Ubuntu-palomuuriasi (UFW), sinun on nimenomaisesti sallittava liikenne tällä UDP-portilla, muuten yhteyspyyntöjä estetään ennen kuin ne saavuttavat VPN-ohjelmiston.

6. Kuinka ratkaisen WireGuard-yhteysongelmia?

WireGuardin vianmääritys on yleensä yksinkertaista, koska siinä on vähemmän liikkuvia osia. Jos et pääse yhdistämään, sinun tulisi noudattaa tätä tiettyä tarkistusjärjestystä:

Ensiksi tarkista handshaken tila suorittamalla sudo wg show palvelimellasi. Jos yhteys on kunnossa, näet rivin, jossa lukee latest handshake ja sen jälkeen aika (esim. “1 minuutti sitten”). Jos tätä riviä ei näy, laitteet eivät kommunikoi keskenään lainkaan. Tämä johtuu lähes aina palomuurista, joka estää UDP-portin, tai julkisen/yksityisen avaimen epäsovituksesta.

Toiseksi, jos yhteyden muodostus toimii, mutta et pääse selaamaan internetiä, ongelma on todennäköisesti IP-lähetyksessä. Sinun tulee varmistaa, että Ubuntu-palvelimesi saa reitittää liikennettä VPN:stä internetiin. Voit tarkistaa tämän katsomalla tiedostoa /etc/sysctl.conf ja varmistamalla, että rivi net.ipv4.ip_forward=1 on aktiivinen (ei kommentoitu).

7. Tukeeko WireGuard IPv6:ta Ubuntussa?

Kyllä, WireGuardilla on erinomainen tuki IPv6:lle. Se on erittäin joustava ja voi kapseloida (kääriä) erilaisia liikennetyyppejä. Esimerkiksi voit käyttää vain IPv4-osoitteella toimivaa verkkosivustoa IPv6-yhteyden kautta, tai päinvastoin. Tämän mahdollistamiseksi sinun tarvitsee vain lisätä pilkuilla erotetut IPv6-osoitteet asetustiedostoosi tavallisten IPv4-osoitteidesi lisäksi. Nämä lisätään sekä Address-kenttään (palvelimen oma IP) että AllowedIPs-kenttään (asiakas-IP-osoitteet).

8. Kuinka otan WireGuardin käyttöön siten, että se käynnistyy automaattisesti?

Varmistaaksesi, että VPN:si käynnistyy automaattisesti aina, kun uudelleenkäynnistät Ubuntu-palvelimesi, sinun tulee käyttää systemd-järjestelmää, joka on Linuxin järjestelmänhallintaohjelma. Käytät enable-komentoa kertoaksesi järjestelmälle, että sen tulee etsiä tiettyä kokoonpanotiedostoasi (esim. wg0) ja ladata se käynnistysjärjestyksen aikana. Tämä varmistaa, että jos palvelimesi käynnistyy uudelleen päivityksen yhteydessä, VPN-yhteytesi palaa online-tilaan ilman, että sinun tarvitsee käynnistää sitä manuaalisesti.

sudo systemctl enable wg-quick@wg0

Johtopäätös

Tässä oppaassa asensit WireGuard VPN:n Ubuntu-palvelimelle ja yhdistit toisen laitteen sekä IPv4- että IPv6-yhteyden kautta. Matkan varrella määritit avaimet, osoitit tunnelin osoitteet ja otit palvelimen käyttöön liikenteen turvallisen reitityksen, mikä antoi sinulle toimivan VPN:n, jonka käyttö ja ymmärtäminen on helppoa.

Opas käsitteli myös joitakin käytännön yksityiskohtia, jotka ovat tärkeitä, kun VPN on säännöllisessä käytössä, kuten avainten hallinta ajan myötä, IPv6- ja kaksipinoverkon käsittely sekä luotettavuuden ja suorituskyvyn parantaminen MTU-säätöjen, keepalive-mekanismien ja DNS-asetusten avulla. Näiden asioiden ollessa kunnossa sinun pitäisi olla hyvin valmistautunut käyttämään WireGuardiä tosielämän ympäristöissä tai mukauttamaan sitä tarpeidesi muuttuessa.

Jos haluat oppia lisää WireGuardista, mukaan lukien kuinka määrittää kehittyneempiä tunneliyhteyksiä tai käyttää WireGuardia säilöjen kanssa, käy virallisessa WireGuard-dokumentaatiossa. Lisäopastuksia Ubuntu-järjestelmiesi suojaamiseen löydät seuraavista artikkeleista:

  • Kuinka määrittää palomuuri UFW:llä Ubuntussa
  • UFW-perusteet: Yleisimmät palomuurin säännöt ja komennot Linuxin turvallisuuteen
  • VPC vs VPN: Kumpi sopii turvallisiin verkkotarpeisiisi?
  • Kuinka asettaa ja konfiguroida OpenVPN-palvelin Ubuntussa

Kiitos, että opiskelet Linux-Console.net -yhteisön kanssa.