Namestitev WireGuarda v sistemu Windows
Ta vodnik pojasnjuje, kako vzpostaviti VPN-tunel WireGuard med dvema računalnikoma z operacijskim sistemom Windows: strežnikom WireGuard, ki teče na oddaljenem gostitelju z Windows, na primer na VPS-ju z Windows, in odjemalcem WireGuard, ki teče na vašem lokalnem računalniku z Windows. Ko je tunel aktiven, računalnika izmenjujeta podatke prek šifrirane zasebne povezave, po želji pa lahko ves promet odjemalca usmerite prek strežnika.
Osnovna nastavitev vzpostavi tunel med strežnikom in odjemalcem. Za usmerjanje vsega internetnega prometa odjemalca prek strežnika je na strežniku potreben tudi NAT, glejte »Konfiguracija NAT na strežniku za polno tuneliranje«.
Zaradi preprostejšega ustvarjanja ključev ta vodnik ustvari konfiguraciji strežnika in odjemalca v eni sami aplikaciji WireGuard, nato pa vsako konfiguracijsko datoteko namesti na računalnik, kamor spada. Konfiguracija strežnika teče na strežniku, konfiguracija odjemalca pa na odjemalcu. Strežnik in odjemalec sta vedno ločena računalnika. Enak postopek se uporabi za dodajanje poljubnega števila dodatnih odjemalcev.
Preden začnete, na strežnik in odjemalca namestite najnovejšo različico WireGuard s strani za namestitev WireGuard in poskrbite, da imate na obeh računalnikih skrbniške pravice.
Nastavitev v tem vodniku je videti takole:
Strežnik (javni IP, posluša na UDP 51820) Naslov tunela 10.0.0.1/24 | | šifriran tunel WireGuard | Odjemalec Naslov tunela 10.0.0.2/32
Ustvarjanje konfiguracije strežnika
Zaženite C:\Program Files\WireGuard\wireguard.exe, kliknite Add tunnel in izberite Add empty tunnel. WireGuard samodejno ustvari par ključev. Javni ključ, prikazan na vrhu okna, je javni ključ strežnika. Potrebovali ga boste pozneje pri konfiguraciji odjemalca.

Tunelu dodelite ime in izpolnite razdelek Interface z zasebnim ključem strežnika, vrati, na katerih bo poslušal WireGuard, in notranjim naslovom, ki ga bo strežnik uporabljal znotraj tunela.
[Interface] PrivateKey = # zasebni ključ strežnika WireGuard ListenPort = # vrata, na katerih bo poslušal WireGuard Address = # notranji naslov IP strežnika WireGuard, na primer 10.0.0.1/24

Za omrežje tunela uporabite zasebno podomrežje, strežnik in vsi odjemalci pa naj bodo v istem obsegu. Običajna izbira je 10.0.0.1/24 za strežnik ter 10.0.0.2/32, 10.0.0.3/32 itd. za posamezne odjemalce. Strežnik uporablja predpono /24, da celoten obseg tunela obravnava kot dosegljiv prek vmesnika WireGuard. Vsak odjemalec uporablja /32, ker odjemalec predstavlja en sam naslov in ne podomrežja. Odjemalec z nastavitvijo /24 bi predpostavil, da je celoten obseg na njegovem lastnem vmesniku, in prometa za druge naslove tunela ne bi pošiljal skozi tunel.
Konfiguracija strežnika ne prikaže potrditvenega polja Block untunneled traffic (kill-switch). Ta možnost se pojavi le v konfiguraciji odjemalca, ki ves promet usmerja skozi tunel, glejte »Ustvarjanje konfiguracije odjemalca«.
Za dodatno raven varnosti lahko vsakemu soležniku (peer) dodate vnaprej deljeni ključ (pre-shared key). Ustvarite ga enkrat in isto vrstico dodajte v ustrezen razdelek [Peer] tako na strežniku kot na odjemalcu:
PresharedKey = # vnaprej deljeni ključ, enak na strežniku in odjemalcu
Ključ lahko ustvarite z orodjem wg, ki je priloženo programu WireGuard:
"C:\Program Files\WireGuard\wg.exe" genpsk
Ustvarjanje konfiguracije odjemalca
Kliknite Add tunnel in drugič izberite Add empty tunnel, tokrat za odjemalca. Javni ključ, prikazan za ta tunel, je javni ključ odjemalca, ki ga strežnik potrebuje, da odjemalca sprejme.
Izpolnite konfiguracijo odjemalca:
[Interface] PrivateKey = # zasebni ključ odjemalca WireGuard Address = # notranji naslov IP odjemalca WireGuard, na primer 10.0.0.2/32 DNS = 1.1.1.1, 1.0.0.1 [Peer] PublicKey = # javni ključ strežnika WireGuard AllowedIPs = # 0.0.0.0/0 za polni tunel ali 10.0.0.0/24 za razdeljeni tunel (split tunnel) Endpoint = # javni naslov IP in vrata strežnika WireGuard PersistentKeepalive = 25
Vrednost Endpoint mora biti dejanski javni naslov IP strežnika skupaj z vrati, nastavljenimi v ListenPort strežnika, ne pa notranji naslov tunela. Za pomoč pri izbiri vrednosti AllowedIPs glejte razdelek »Razumevanje AllowedIPs« spodaj.
Vrstici DNS in PersistentKeepalive sta izbirni. DNS nastavi strežnike DNS, ki se uporabljajo, ko je tunel aktiven, kar pomaga preprečiti težave pri razreševanju imen po vzpostavitvi povezave. Uporabite lahko javne razreševalnike, kot sta 1.1.1.1, 1.0.0.1 ali 8.8.8.8, 8.8.4.4, ali strežnik DNS samega omrežja VPN. PersistentKeepalive = 25 vsakih 25 sekund pošlje majhen paket in pomaga ohranjati povezavo odprto, kadar je odjemalec za NAT-om.
Kadar konfiguracija odjemalca vsebuje en sam [Peer] in njegov AllowedIPs vsebuje 0.0.0.0/0 (ali ::/0), urejevalnik tunelov pod konfiguracijskim poljem prikaže potrditveno polje Block untunneled traffic (kill-switch). Pri razdeljenem tunelu, na primer AllowedIPs = 10.0.0.0/24, se potrditveno polje sploh ne prikaže.
Kill-switch je privzeto vklopljen, takoj ko vnesete 0.0.0.0/0. Dokler je tunel aktiven, pravila požarnega zidu dovoljujejo le promet, ki gre skozi tunel, promet zanke (loopback), DHCP in odkrivanje sosedov IPv6. Vse drugo je blokirano, vključno z napravami v lokalnem omrežju, kot so tiskalniki in NAS. Če je vrstica DNS nastavljena, so poizvedbe DNS dovoljene le do tam navedenih strežnikov.
Odstranitev kljukice ni zgolj izklop nastavitve. Urejevalnik prepiše AllowedIPs: 0.0.0.0/0 postane 0.0.0.0/1, 128.0.0.0/1, ::/0 pa ::/1, 8000::/1. Ves internetni promet še vedno poteka skozi tunel, vendar blokirna pravila požarnega zidu niso ustvarjena. Ponovna izbira potrditvenega polja povrne 0.0.0.0/0.

Ključe in Endpoint kopirajte zelo natančno. Napačno vtipkan ključ ali napačen Endpoint je najpogostejši razlog, da se tunel ne poveže.

Dodajanje odjemalca na strežnik
Znova odprite konfiguracijo strežnika in dodajte razdelek [Peer] za odjemalca, pri čemer uporabite javni ključ odjemalca iz prejšnjega koraka.
[Peer] PublicKey = # javni ključ odjemalca WireGuard AllowedIPs = # notranji naslov IP odjemalca
V konfiguraciji strežnika ima AllowedIPs dve vlogi. Strežniku pove, kateri naslov tunela pripada temu odjemalcu, in deluje kot seznam usmerjanja: vsak paket, naslovljen na te obsege, se šifrira in pošlje temu soležniku. Za posameznega odjemalca je to njegov naslov tunela, na primer 10.0.0.2/32. Če naj odjemalec prek tunela omogoči tudi dostop do lokalnega omrežja, tudi to podomrežje dodajte sem, na primer 10.0.0.2/32, 192.168.1.0/24. Ta korak ponovite za vsakega dodatnega odjemalca.

Konfiguracija požarnega zidu Windows na strežniku
Strežnik mora na svojih vratih UDP sprejemati dohodni promet WireGuard. Odprite Požarni zid Windows Defender z napredno varnostjo, izberite Dohodna pravila in kliknite Novo pravilo. Izberite Vrata in kliknite Naprej. Izberite UDP, vnesite vrata WireGuard, na primer 51820, in kliknite Naprej. Če uporabljate več kot ena vrata, jih navedite ločena z vejicami, na primer 51820, 51821. Izberite Dovoli povezavo in kliknite Naprej. Izberite profile, za katere velja pravilo. Če je strežnik gostovan v podatkovnem centru, običajno zadošča profil Javno, sicer pustite izbrane profile Domena, Zasebno in Javno. Kliknite Naprej, pravilu dodelite jasno ime, na primer WireGuard UDP 51820, in kliknite Dokončaj.
To dohodno pravilo je potrebno samo na strežniku, ker je strežnik stran, ki sprejema dohodne povezave. Na VPS-ju poskrbite tudi, da vaš ponudnik gostovanja dovoljuje dohodni promet UDP na teh vratih na omrežni ravni, ne le v požarnem zidu Windows.
Izvoz in namestitev konfiguracij
Ko sta obe konfiguraciji pripravljeni, kliknite Export all tunnels to zip, izberite mesto in shranite.

Odprite arhiv, da najdete konfiguracijske datoteke vseh tunelov. Konfiguracijo strežnika postavite na strežnik, vsakemu odjemalcu pa dodelite njegovo lastno konfiguracijsko datoteko. Če računalnik vsebuje veliko tunelov, lahko posamezen tunel izvozite tudi iz njegovega kontekstnega menija. Izvoz v datoteko zip je priročen, kadar sta bila oba tunela ustvarjena na istem računalniku, kot v tem vodniku. Če vsako konfiguracijo ustvarite neposredno na njenem gostitelju, izvoz ni potreben in konfiguracijsko datoteko lahko kopirate ročno.
Na strežniku izberite konfiguracijo strežnika in kliknite Activate.

Na odjemalcu kliknite Add Tunnel, izberite konfiguracijsko datoteko odjemalca in jo odprite.

Nato kliknite Activate.

Prvi odjemalec je zdaj nastavljen. Nadaljnje odjemalce dodajte na enak način: za vsakega odjemalca ustvarite nov prazen tunel in v konfiguracijo strežnika dodajte ustrezen razdelek [Peer] z javnim ključem in naslovom tunela tega odjemalca, kot je opisano v »Dodajanje odjemalca na strežnik«.
Če WireGuard na oddaljenem strežniku konfigurirate prek seje RDP, pred aktivacijo tunela, ki usmerja ves promet, preberite razdelek »Razumevanje AllowedIPs«. Konfiguracija z AllowedIPs = 0.0.0.0/0 lahko promet samega strežnika preusmeri v tunel in prekine vašo povezavo RDP.
Preverjanje povezave
Po aktivaciji tunela lahko Windows v Središču za omrežje in skupno rabo prikaže vmesnik WireGuard kot »Brez omrežnega dostopa« ali »Brez dostopa do interneta«. To je pričakovano obnašanje, saj Windows vmesnikov tunelov VPN ne obravnava kot običajnih internetnih povezav, in na tunel ne vpliva. Windows ta status ugotavlja s svojim preverjanjem povezljivosti, ki poizveduje po določenih naslovih URL družbe Microsoft, zato se opozorilo lahko pojavi tudi, če so te poizvedbe blokirane ali jih vaš DNS ne razreši, četudi tunel deluje.
Da potrdite delovanje tunela, preverite njegov status v odjemalcu WireGuard. Aktiven tunel prikazuje status Active skupaj z števci prenosa podatkov. Če se števci povečujejo, tunel prenaša promet.
Na strežniku lahko tudi preverite, ali WireGuard med aktivnim tunelom posluša na svojih vratih UDP:
netstat -ano | findstr 51820
V PowerShellu je enakovreden ukaz:
Get-NetUDPEndpoint -LocalPort 51820
Zamenjajte 51820 z vrati WireGuard, ki jih uporabljate. Če ni vrnjeno nič, tunel ni aktiven ali pa se vrata razlikujejo od tistih, nastavljenih v konfiguraciji strežnika.
Nato odprite ukazni poziv in s ukazom ping preverite notranji naslov tunela strežnika:
ping 10.0.0.1
Zamenjajte 10.0.0.1 z dejanskim notranjim naslovom IP, ki ste ga nastavili za strežnik. Če strežnik odgovori, promet poteka skozi tunel. Če odgovora ni, najprej preverite handshake: požarni zid Windows v sistemu Windows Server privzeto blokira dohodni ping, zato manjkajoč odgovor ne pomeni vedno, da tunel ne deluje.
Če odjemalec uporablja AllowedIPs = 0.0.0.0/0, lahko tudi potrdite, da se promet usmerja skozi tunel:
tracert 8.8.8.8
Prvi skok mora biti notranji naslov IP strežnika WireGuard.
Preverjanje handshaka WireGuard
Handshake je najkoristnejši kazalnik pri diagnosticiranju povezave WireGuard. V aplikaciji WireGuard odprite tunel in spremljajte polje Latest handshake. Pri delujočem tunelu se handshake pojavi v nekaj sekundah po aktivaciji, nato pa se med prenosom podatkov redno posodablja. Če je tunel nedejaven, lahko med handshakoma mine nekaj časa, zato je kratek razmik običajen. Če polje ostane prazno, se soležnika ne moreta doseči, kar običajno kaže na napačen Endpoint, zaprta vrata UDP ali neujemajoče se ključe.
Handshake lahko preverite tudi iz ukazne vrstice z orodjem wg, ki je priloženo programu WireGuard:
wg show
Izpis našteje vsakega soležnika skupaj s časom zadnjega handshaka in števci prenosa.
Razumevanje AllowedIPs
Vrednost AllowedIPs v konfiguraciji odjemalca določa, kateri promet se pošilja skozi tunel. Na kratko: na odjemalcu AllowedIPs določa, kateri paketi se pošljejo v tunel, na strežniku pa, kateri paketi se sprejmejo od določenega odjemalca in kam se usmerijo.
Vrednost 0.0.0.0/0 skozi tunel usmeri ves promet, vključno z običajnim brskanjem po internetu. Uporabite jo, kadar želite popolno zaščito prometa. Da ta promet doseže internet, ga mora strežnik prevesti. Glejte »Konfiguracija NAT na strežniku za polno tuneliranje« spodaj.
Vrednost, kot je 10.0.0.0/24, skozi tunel usmeri le promet notranjega omrežja, medtem ko običajni internetni promet še naprej uporablja običajno povezavo. Uporabite jo, kadar potrebujete dostop le do določenih virov v oddaljenem omrežju.
Navedete lahko več podomrežij, ločenih z vejicami, na primer 10.0.0.0/24, 192.168.1.0/24.
Možnost Block untunneled traffic (kill-switch) v urejevalniku tunelov polno učinkuje z AllowedIPs = 0.0.0.0/0. Blokira vse, kar bi potovalo zunaj tunela, kar blokira tudi lokalno omrežje. Če potrebujete dostop do tiskalnikov ali drugih naprav v omrežju LAN, kill-switch pustite izklopljen.
Nastavitev AllowedIPs = 0.0.0.0/0 pošlje vsako povezavo skozi tunel. Če to uporabite na oddaljenem strežniku, ki ga upravljate prek RDP, se lahko seja RDP prekine v trenutku, ko tunel postane aktiven, ker se promet strežnika preusmeri. Na strežniku, do katerega dostopate prek RDP, usmerite le podomrežja, ki jih potrebujete, in preizkusite z ozko vrednostjo AllowedIPs, preden preklopite na 0.0.0.0/0.
Dostop do lokalnega omrežja, ko je tunel aktiven
Pri razdeljenem tunelu, na primer AllowedIPs = 10.0.0.0/24, lokalno omrežje deluje kot običajno in ni treba spreminjati ničesar. Spodnji koraki veljajo za polni tunel.
Najpreprostejša možnost je, da v urejevalniku tunela odjemalca odstranite kljukico pri Block untunneled traffic (kill-switch). Urejevalnik 0.0.0.0/0 zamenja z 0.0.0.0/1, 128.0.0.0/1. Vaše lokalno podomrežje, na primer 192.168.1.0/24, ima prek fizičnega vmesnika bolj specifično pot, zato Windows promet LAN pošilja neposredno v lokalno omrežje, internetni promet pa še vedno poteka skozi tunel. Slabost je, da nič ne blokira prometa, če tunel odpove.
Če želite biti prepričani, da promet LAN nikoli ne vstopi v tunel, lokalni obseg izrecno izključite iz AllowedIPs. Na primer, naslednja vrednost zajema vse naslove IPv4 razen 192.168.0.0/16:
AllowedIPs = 0.0.0.0/1, 128.0.0.0/2, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 224.0.0.0/3
Če vaše lokalno omrežje uporablja drug obseg, na primer 10.x.x.x ali 172.16.x.x, seznam za ta obseg izračunajte z računalom AllowedIPs in poskrbite, da je podomrežje tunela še vedno vključeno. Ker ta vrednost nima poti /0, kill-switch z njo ni na voljo.
Info Izogibajte se uporabi istega podomrežja za tunel in lokalno omrežje. Če je vaše domače omrežje 10.0.0.0/24, izberite drug obseg tunela, na primer 10.8.0.0/24.
Za dostop do omrežja za strežnikom, na primer pisarniškega omrežja LAN 192.168.10.0/24, strežnik ne potrebuje dodatnega vnosa, ker že ima pot do lastnega omrežja LAN. Na odjemalcu ga dodajte v AllowedIPs v razdelku [Peer], na primer AllowedIPs = 10.0.0.0/24, 192.168.10.0/24. Strežnik mora ta promet tudi posredovati in prevesti, glejte »Konfiguracija NAT na strežniku za polno tuneliranje«. Naprave v tem omrežju LAN odgovarjajo na naslov LAN strežnika, zato je NAT na strežniku najpreprostejši način, da se odgovori vrnejo skozi tunel.
Konfiguracija NAT na strežniku za polno tuneliranje
Če odjemalci uporabljajo AllowedIPs = 0.0.0.0/0 in želite, da njihov promet prek strežnika dejansko doseže internet, mora strežnik notranje naslove WireGuard prevesti v svoj zunanji naslov. V sistemu Windows se to naredi z ukazom New-NetNat, ne s skripti PostUp in PostDown, ki se uporabljajo v sistemu Linux.
Na strežniku odprite PowerShell kot skrbnik in zaženite naslednje, pri čemer uporabite podomrežje tunela, dodeljeno strežniku:
New-NetNat -Name WireGuardNAT -InternalIPInterfaceAddressPrefix 10.0.0.0/24
Zamenjajte 10.0.0.0/24 s podomrežjem svojega tunela in poskrbite, da predpona zajema vse naslove odjemalcev, ki jih dodelite. Odjemalec zunaj tega obsega, na primer 10.0.1.2, ne bi bil zajet s tem pravilom. Aktivna pravila lahko kadar koli pregledate:
Get-NetNat
Če želite pravilo NAT pozneje odstraniti, zaženite:
Remove-NetNat -Name WireGuardNAT
Če se odjemalci povežejo in handshake uspe, njihov internetni promet pa kljub temu ne gre skozi strežnik, omogočite posredovanje IP (IP forwarding) na vmesnikih, vključenih v usmerjanje, in poskusite znova. Natančna oblika je odvisna od različice sistema Windows, na primer:
Set-NetIPInterface -InterfaceAlias "Ethernet" -Forwarding Enabled
Uporabite ga za zunanji vmesnik, ki prenaša internetni promet, in za vmesnik WireGuard, pri čemer uporabite njuni pravi imeni iz ukaza Get-NetIPInterface.
New-NetNat zahteva Windows 10, Windows 11 ali Windows Server 2016 in novejše, v nekaterih sistemih pa mora biti omogočena funkcija Hyper-V, tudi če Hyper-V sicer ne uporabljate. Pri nekaterih paketih VPS Hyper-V ni mogoče omogočiti, kar ta način onemogoči. Ali zadošča že samo New-NetNat ali je treba omogočiti tudi posredovanje IP, je lahko odvisno od različice sistema Windows, zato to preverite na svojem strežniku, kadar polno tuneliranje ne deluje.
Odpravljanje težav
Tunel je aktiven, vendar ni povezave s strežnikom. Preverite, ali so vrata UDP WireGuard, na primer 51820, odprta v požarnem zidu na strežniku. Potrdite, da so javni ključi med konfiguracijama strežnika in odjemalca pravilno kopirani. Poskrbite, da Endpoint v konfiguraciji odjemalca kaže na dejanski javni naslov IP strežnika, ne na notranji naslov tunela.
DNS po vzpostavitvi povezave ne deluje. V razdelek Interface odjemalca dodajte strežnik DNS:
[Interface] PrivateKey = ... Address = ... DNS = 1.1.1.1, 1.0.0.1
Števci paketov se ne povečujejo. Tunel ne prenaša podatkov. Preverite, ali je AllowedIPs pravilno nastavljen na obeh straneh, ali se notranji naslovi WireGuard ne prekrivajo z obstoječim lokalnim omrežjem in ali vrat ListenPort ne uporablja že druga aplikacija.
Kljukice pri kill-switchu ni mogoče odstraniti. Urejevalnik prepiše AllowedIPs le, kadar lahko prebere celotno konfiguracijo. Preverite, ali razdelek [Peer] vsebuje veljaven javni ključ, kopiran s strežnika, in ali je vsaka nastavitev v svoji vrstici, nato poskusite znova.
Za diagnosticiranje težave potrebujete več podrobnosti. V aplikaciji WireGuard odprite tunel in poglejte zavihek Log, ki sproti beleži handshake, napake in dogodke povezave. Od tam lahko dnevnik izvozite, če ga morate deliti.
Samodejni zagon WireGuard po ponovnem zagonu strežnika
Da tunel deluje tudi po ponovnih zagonih, ga namestite kot storitev Windows. Tunel, nameščen kot storitev, se po ponovnem zagonu samodejno zažene. Odprite ukazni poziv ali PowerShell kot skrbnik in zaženite naslednje, pri čemer uporabite pot do konfiguracijske datoteke strežnika:
wireguard /installtunnelservice "C:\Program Files\WireGuard\wg_server.conf"
Ta ukaz zaženite le enkrat, ne ob vsakem zagonu. Aktivacija tunela iz aplikacije WireGuard običajno namesti isto storitev, zato je v mnogih primerih dovolj, da tunel aktivirate enkrat. Če želite storitev pozneje odstraniti, uporabite ime tunela, to je ime konfiguracijske datoteke brez končnice .conf.
wireguard /uninstalltunnelservice wg_server
Za ponovni zagon storitve, na primer po urejanju konfiguracije, zaženite ukaz za odstranitev in nato znova ukaz za namestitev.
Ker tunel teče kot storitev, ločena opravila v Načrtovalniku opravil ni treba.
Strežnik znova zaženite in preverite, ali se tunel zažene sam.
