Kako postaviti WireGuard VPN poslužitelj i klijent na Ubuntu 20.04

Postavite samostalni VPN pomoću Wireguarda

A VPN (virtualna privatna mreža) omogućuje korisniku daljinsko povezivanje s privatnom mrežom kao da je korisničko računalo izravno povezano s privatnom mrežom. Tehnologija je u početku razvijena kako bi omogućila udaljeni pristup internoj privatnoj mreži tvrtke za zaposlenike koji zapravo nisu prisutni na lokaciji interne mreže.

VPN poslužitelj je postavljen na mjestu interne mreže. Ovaj poslužitelj je na javnoj mreži i zaposlenik mu može pristupiti pomoću VPN klijenta. Za povezivanje s VPN poslužiteljem potrebna je autentifikacija. Komunikacija između VPN poslužitelja i VPN klijenta osigurana je pomoću protokola tuneliranja. Imajte na umu da ova komunikacija može i ne mora biti šifrirana, ali obično je u većini VPN protokola šifrirana.

Druga upotreba VPN-a je za steći anonimnost prilikom pristupa internetu ili zaobilaženje zemljopisnih ograničenja nametnutih tijekom pristupanja nekim web stranicama. U takvim slučajevima, mreža na koju se korisnik želi povezati nije privatna mreža, već je to Internet.

Tijekom godina razvijeni su mnogi VPN protokoli. Ovi protokoli koriste različite protokole tuneliranja i algoritme šifriranja za komunikaciju između poslužitelja i klijenta.

Jedan od takvih protokola, koji u posljednje vrijeme dobiva široku upotrebu, je Zaštita žice. Wireguard je lakši, jednostavniji i učinkovitiji od dobro poznatih tradicionalno korištenih VPN protokola kao što su OpenVPN, IPSec. Već je implementiran za Windows, Mac OS i veliki broj Linux distribucija. U Linuxu je implementiran kao modul kernela. Dostupan je u službenim repozitorijumima Ubuntu 20.04.

U ovom članku ćemo vidjeti kako postaviti Wireguard VPN poslužitelj i klijent u Ubuntu 20.04.

Montaža

Za ovaj članak postavljam poslužitelj Wireguard na Ubuntu 20.04 Linode i Wireguard Client na svom lokalnom računalu s Ubuntu 20.04.

Paket štitnik od žice instalira i Wireguard Server i Client. Pokrenite sljedeću naredbu i na poslužiteljskom i na klijentskom stroju.

sudo apt install wireguard

Konfiguracija poslužitelja

Sigurnosni ključevi

Moramo generirati skup parova javnih/privatnih ključeva za provjeru autentičnosti i osiguranje Wireguard veze. To se može učiniti pomoću sljedećih naredbi:

sudo su cd /etc/wireguard umask 077 wg genkey | tee privatni_ključ | wg pubkey > javni_ključ

Imajte na umu da sve zadatke konfiguracije radimo kao superkorisnik. Razlog je taj pristup imeniku /etc/wireguard je onemogućen za normalne korisnike, a pristup direktoriju se ne može dobiti samo s sudo privilegijama za normalnog korisnika.

Zatim postavljamo masku za kreiranje datoteke na 077. To znači da kad god bilo koji proces kreira novu datoteku u ovoj mapi, njezine će dozvole automatski biti maskirane s 077. Npr. ako je datoteka stvorena u ovoj mapi s dopuštenjima 777, ona se automatski maskira i dozvole postaju 700. To je učinjeno tako da samo vlasnik datoteke ima sva dopuštenja za datoteku, a svi ostali nemaju dopuštenja.

U sljedećem retku, generiramo par javni/privatni ključ za poslužitelj. Spremaju se u datoteke privatni_ključ i javni_ključ. Za pregled ključeva pokrenite:

mačka privatni_ključ mačka javni_ključ

Kopirajte privatni ključ, potreban nam je u sljedećem koraku.

Bilješka: Nikada ne dijelite svoj privatni ključ javno!

Konfiguracijska datoteka

Kreirajmo konfiguracijsku datoteku za poslužitelj Wireguard. Možete odabrati bilo koji naziv za datoteku. Napravit ćemo datoteku wg0.conf u ovom primjeru.

vim wg0.conf

Dodajte sljedeće u datoteku.

[Sučelje] Adresa = 10.20.43.1/24 SaveConfig = istina ListenPort = 51190 PrivateKey = PostUp = iptables -A PROSLJEDI -i wg0 -j PRIHVATI; iptables -t nat -A POSTROUTIRANJE -o -j MASKERADA; ip6tables -A NAPRIJED -i wg0 -j PRIHVATI; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D NAPRIJED -i wg0 -j PRIHVATI; iptables -t nat -D POSTROUTIRANJE -o eth0 -j MASQUERADE; ip6tables -D PROSLJEDI -i wg0 -j PRIHVATI; ip6tablice -t nat -D POSTROUTIRANJE -o -j MASKERADA 

Zalijepite privatni ključ koji smo prethodno kopirali u redak 5 u kodu iznad.

Moramo konfigurirati Wireguard na drugoj (virtualnoj) podmreži od IP adrese poslužitelja. Ovdje sam koristio 10.20.43.1 za poslužitelj i koristit ću 10.20.43.2 za klijenta. Ovdje se može koristiti bilo koja podmreža. Da biste dobili IP adresu poslužitelja i sučelja, pokrenite:

ifconfig

Zabilježite IP adresu poslužitelja. To je potrebno tijekom konfiguracije klijenta.

Sučelje koje koristi poslužitelj, kao što se vidi na gornjoj slici, jest eth0. Naziv sučelja može se razlikovati ovisno o mreži korisnika, može biti wlan0 ili wlp2s0 u slučaju da je korisnik spojen na WiFi mrežu pomoću bežične kartice.

Zamijenite u PostUp i PostDown sa svojim sučeljem; u ovom primjeru jest eth0.PostUp i PostDown direktive se koriste za određivanje koje naredbe treba pokrenuti kada se poslužitelj pokrene, odnosno zaustavi. U našem primjeru koristimo iptables naredba za postavljanje IP pravila tako da IP adresu poslužitelja dijele klijenti. Pravila će pasti kada se poslužitelj zaustavi.

Spremite i izađite iz datoteke. Kada koristite vim, pritisnite Esc, a zatim upišite :wq i pritisnite Unesi za spremanje i izlaz.

Ako koristite a ufw firewall na poslužitelju, moramo dopustiti UDP veze na port za VPN poslužitelj, 51190.

ufw dopustiti 51190/udp

Pokretanje usluge

Sada kada je konfiguracija gotova, možemo pokrenuti Wireguard VPN uslugu.

Kako bi se omogućilo servis za pokretanje u vrijeme pokretanja, pokrenite:

systemctl omogući wg-quick@wg0

Imajte na umu da ovdje wg0 je naziv konfiguracijske datoteke.

Početi uslugu, pokrenite:

servis wg-quick@wg0 start

Potvrdi da je usluga uspješno započela:

status usluge wg-quick@wg0

Provjerite je li sučelje koju smo kreirali u konfiguracijskoj datoteci je pokrenut, koristeći IP naredbu.

ip a show wg0

Wireguard VPN poslužitelj je sada postavljen i radi. Konfigurirajmo sada klijenta.

Konfiguracija klijenta

Konfiguracija klijenta za Wireguard je više-manje ista kao i konfiguracija poslužitelja. Generiramo ključeve za klijenta, a zatim kreiramo konfiguracijsku datoteku.

Sigurnosni ključevi

Za generiranje javnog/privatnog ključa uparite za klijenta, pokrenite:

sudo su cd /etc/wireguard umask 077 wg genkey | tee klijent_privatni_ključ | wg pubkey > klijent_javni ključ

Javni i privatni ključ za klijenta sada se generiraju u datotekama klijent_privatni_ključ i klijent_javni_ključ.

Provjerite jesu li kreirani pomoću mačka naredba.

cat client_private_key cat client_public_key

Kopirajte prikazani privatni ključ jer ga trebamo dodati u konfiguracijsku datoteku za klijenta.

Konfiguracijska datoteka

Stvorite konfiguracijsku datoteku s bilo kojim imenom po želji. Stvorit ćemo ga s imenom wg0-klijent za ovaj primjer.

vim wg0-client.conf

Dodajte sljedeću konfiguraciju.

[Sučelje] # IP adresa i privatni ključ adrese klijenta = 10.20.43.2/24 PrivateKey = [Peer] # Javni ključ, IP adresa i port poslužitelja PublicKey = Krajnja točka = :51190 Dopušteni IP-ovi = 0.0.0.0/0, : :/0

Unesite adresu podmreže za klijenta. Kao što je prethodno opisano, koristimo 10.20.43.2 za klijenta u ovom primjeru.

Dodajte privatni ključ klijenta generiran u prethodnom koraku u redak 4 u konfiguracijskom kodu iznad.

Pod "Peer" dodajemo informacije o Wireguard VPN poslužitelju želimo se povezati.

Unesite javni ključ poslužitelja. Uđi IP adresa poslužitelja, što smo prethodno napomenuli, i port u zadanom formatu protiv Krajnja točka. Ovo je port koji smo naveli u konfiguracijskoj datoteci poslužitelja i na kojem je pokrenuta VPN usluga na poslužitelju.

Dopuštene IP-ove treba unijeti kao dane (0.0.0.0/0) tako da će svaki zahtjev na dinamičkom javnom IP-u koji koristi klijent uvijek proslijediti VPN poslužitelju.

Spremite i izađite iz datoteke. Kada koristite vim, pritisnite Esc, a zatim upišite :wq i pritisnite Unesi za spremanje i izlaz.

Omogućite uslugu klijenta pokrenuti sa svakim pokretanjem i pokrenuti ga.

systemctl omogući wg-quick@wg-client uslugu wg-quick@wg-client start

Potvrdi ako je servis započeo.

status usluge wg-quick@wg-client

Dodavanje peer-a na poslužitelj

Sada imamo VPN poslužitelj i klijent u pogonu. Međutim, siguran tunel između njih se ne uspostavlja osim ako ne uspostavimo ravnopravnu vezu između poslužitelja i klijenta.

Vrati se na poslužitelj. Prvi, zaustaviti VPN uslugu.

usluga wg-quick@wg0 zaustaviti

Zatim otvorite konfiguracijsku datoteku u dodati konfiguraciju za peer (klijent).

vim /etc/wireguard/wg0.conf

Dodati sljedeće retke u datoteku.

[Peer] PublicKey = AllowedIPs = 10.20.43.2/32

Sada, ponovno pokrenite VPN uslugu.

servis wg-quick@wg0 start

To je to! Ovo je sva konfiguracija potrebna za postavljanje Wireguard VPN klijenta i poslužitelja. Testirajmo sada naš VPN.

Testiranje VPN-a

Prvo, napravimo jednostavan ping od klijenta do poslužitelja, kako bismo bili sigurni da komunikacija VPN tunela funkcionira. Pokrenite sljedeće na klijentu:

ping 10.20.43.1

Sljedeći, otvorite web preglednik i otvorite bilo koju web stranicu da provjerite možete li se spojiti na Internet s klijentskog stroja. Također možete provjeriti svoju internetsku povezanost iz naredbenog retka pomoću wget.

wget 

Sada smo provjerili povezanost tunela i internetsku povezanost. Ako oba rade, sada moramo biti sigurni da sav internetski promet koji dolazi do klijenta prolazi kroz poslužitelj.

Za to jednostavno trebamo provjeriti IP adresu klijenta kakvu vidi Internet. Jedan od načina da to učinite je da odete na whatsmyip.org. Ili iz naredbenog retka, možemo upitati drugu sličnu uslugu pod nazivom IP info, koristeći Curl.

Pokrenite sljedeće na klijentskom stroju

kovrča //ipinfo.io/ip

Da. To je javna IP adresa Linodea na kojem se nalazi VPN poslužitelj. Ovako se postiže anonimnost korištenjem VPN-a, budući da se na cijelom Internetu sada vidi IP VPN poslužitelja, a ne vašeg računala.

Zaključak

Jednostavnost postavljanja jedna je od najvažnijih prednosti Wireguarda u odnosu na tradicionalni VPN softver kao što je OpenVPN, kojem je za postavljanje potrebna viša razina umrežavanja i znanja o usmjeravanju. Međutim, postoji nedostatak detaljne službene dokumentacije za Wireguard što bi moglo uzrokovati probleme ako vaša postavka Wireguarda daje pogreške ili ne radi kako se očekivalo.

Ipak, Wireguard je izvrstan izbor ako želite samostalni VPN za sigurnu komunikaciju putem Interneta. Da biste saznali više o Wireguardu i protokolima i tehnologijama koje koristi, možete provjeriti službenu stranicu.