Mag-set up ng self-hosted VPN gamit ang Wireguard
A VPN (Virtual Private Network) nagbibigay-daan sa user na kumonekta sa isang pribadong network nang malayuan na parang direktang nakakonekta ang computer ng user sa pribadong network. Ang teknolohiya ay unang binuo upang payagan ang malayuang pag-access sa panloob na pribadong network ng kumpanya, para sa mga empleyadong hindi aktwal na naroroon sa lokasyon ng panloob na network.
Ang isang VPN Server ay naka-deploy sa lokasyon ng panloob na network. Ang server na ito ay nasa pampublikong network at maaaring ma-access gamit ang isang VPN client ng empleyado. Kinakailangan ang pagpapatunay upang kumonekta sa VPN Server. Ang komunikasyon sa pagitan ng VPN Server at VPN Client ay sinigurado gamit ang isang tunneling protocol. Tandaan na ang komunikasyong ito ay maaaring i-encrypt o hindi, ngunit kadalasan sa karamihan ng mga protocol ng VPN ay naka-encrypt ito.
Ang isa pang gamit ng VPN ay ang makakuha ng anonymity kapag nag-access sa Internet o upang iwasan ang mga heograpikal na paghihigpit na ipinataw habang ina-access ang ilang website. Sa ganitong mga kaso, ang network na gustong kumonekta ng user ay hindi isang pribadong network, ngunit sa halip, ito ay ang Internet.
Maraming mga protocol ng VPN ang binuo sa mga nakaraang taon. Gumagamit ang mga protocol na ito ng iba't ibang tunneling protocol at encryption algorithm para sa komunikasyon sa pagitan ng server at ng kliyente.
Ang isang naturang protocol, na malawakang ginagamit kamakailan, ay Wireguard. Ang Wireguard ay mas magaan, mas simple at mas mahusay kaysa sa kilalang tradisyonal na ginagamit na mga protocol ng VPN tulad ng OpenVPN, IPSec. Ito ay ipinatupad na para sa Windows, Mac OS at isang malaking bilang ng mga pamamahagi ng Linux. Sa Linux, ito ay ipinatupad bilang isang kernel module. Ito ay magagamit sa mga opisyal na repositoryo ng Ubuntu 20.04.
Sa artikulong ito, makikita natin kung paano mag-set up ng Wireguard VPN Server at Client sa Ubuntu 20.04.
Pag-install
Para sa artikulong ito, nagse-set up ako ng Wireguard Server sa isang Ubuntu 20.04 Linode at Wireguard Client sa aking lokal na makina na may Ubuntu 20.04.
Ang pakete wireguard
nag-i-install ng parehong Wireguard Server at Client. Patakbuhin ang sumusunod na command sa parehong makina ng Server at makina ng Client.
sudo apt install wireguard
Configuration ng Server
Mga Security Key
Kailangan nating bumuo ng isang set ng pampubliko/pribadong key pairs upang mapatotohanan at ma-secure ang koneksyon ng Wireguard. Magagawa ito gamit ang mga sumusunod na command:
sudo su cd /etc/wireguard umask 077 wg genkey | tee private_key | wg pubkey > public_key
Tandaan na ginagawa namin ang lahat ng mga gawain sa pagsasaayos bilang isang superuser. Ang dahilan ay ang pag-access sa direktoryo /etc/wireguard
ay pinipigilan para sa mga normal na user, at hindi makukuha ang access sa direktoryo gamit lamang ang mga pribilehiyo ng sudo para sa isang normal na user.
Susunod, itinakda namin ang mask ng paggawa ng file sa 077
. Nangangahulugan ito na sa tuwing ang isang bagong file ay nilikha sa folder na ito sa pamamagitan ng anumang proseso, ang mga pahintulot nito ay awtomatikong ma-mask ng 077. Hal. kung ang isang file ay ginawa sa folder na ito na may mga pahintulot na 777, ito ay awtomatikong naka-mask at ang mga pahintulot ay epektibong naging 700. Ginagawa ito upang ang may-ari lamang ng file ang may lahat ng mga pahintulot sa file, at lahat ng iba ay walang mga pahintulot.
Sa susunod na linya, binubuo namin ang pampubliko/pribadong key na pares para sa server. Naka-save ang mga ito sa mga file private_key
at public_key
. Upang tingnan ang mga susi, patakbuhin ang:
pusa private_key pusa public_key
Kopyahin ang pribadong key, kailangan namin ito sa susunod na hakbang.
Tandaan: Huwag kailanman ibahagi sa publiko ang iyong pribadong key!
File ng Configuration
Gumawa tayo ng configuration file para sa Wireguard Server. Maaari kang pumili ng anumang pangalan para sa file. Gagawa kami ng file wg0.conf
sa halimbawang ito.
vim wg0.conf
Idagdag ang sumusunod sa file.
[Interface] Address = 10.20.43.1/24 SaveConfig = true ListenPort = 51190 PrivateKey = PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j TANGGAPIN; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j TANGGAPIN; ip6tables -t nat -D POSTROUTING -o -j MASQUERADE
I-paste ang Private Key na dati naming kinopya sa linya 5 sa code sa itaas.
Kailangan nating i-configure ang Wireguard sa ibang (virtual) subnet kaysa sa IP Address ng server. Dito, gumamit ako ng 10.20.43.1 para sa server at gagamit ako ng 10.20.43.2 para sa kliyente. Maaaring gamitin ang anumang subnet dito. Upang makuha ang IP Address ng server at ang interface, patakbuhin ang:
ifconfig
Tandaan ang IP Address ng server. Ito ay kinakailangan sa panahon ng pagsasaayos ng kliyente.
Ang interface na ginagamit ng server, tulad ng nakikita sa larawan sa itaas, ay eth0
. Ang pangalan ng interface ay maaaring mag-iba batay sa network ng gumagamit, maaari itong maging wlan0
o wlp2s0
kung sakaling ang user ay konektado sa isang WiFi network gamit ang isang wireless card.
Palitan ANG sa
PostUp
at PostDown
gamit ang iyong interface; sa halimbawang ito ay eth0
.PostUp
at PostDown
Ang mga direktiba ay ginagamit upang tukuyin kung aling mga utos ang dapat patakbuhin kapag nagsimula at huminto ang server ayon sa pagkakabanggit. Sa aming halimbawa, ginagamit namin ang iptables
utos na magtakda ng mga panuntunan sa IP upang ang IP Address ng server ay ibinabahagi ng mga kliyente. Babagsak ang mga panuntunan kapag huminto ang server.
I-save at lumabas sa file. Kapag gumagamit ng vim, pindutin ang Esc, pagkatapos ay i-type :wq
at pindutin Pumasok upang i-save at lumabas.
Kung gumagamit ka ng a ufw
firewall sa server, kailangan nating payagan ang mga koneksyon sa UDP sa port para sa VPN server, 51190.
pinapayagan ng ufw ang 51190/udp
Pagsisimula ng Serbisyo
Ngayon habang tapos na ang pagsasaayos, maaari na nating simulan ang serbisyo ng Wireguard VPN.
Upang paganahin ang serbisyo upang magsimula sa oras ng boot, patakbuhin ang:
systemctl paganahin ang wg-quick@wg0
Tandaan na dito wg0
ay ang pangalan ng configuration file.
Upang simulan ang ang serbisyo, tumakbo:
pagsisimula ng serbisyo wg-quick@wg0
I-verify na matagumpay na nagsimula ang serbisyo:
serbisyo wg-mabilis@wg0 katayuan
I-verify na ang interface ginawa namin sa configuration file ay nagsimula, gamit ang IP command.
ip isang palabas wg0
Ang Wireguard VPN Server ay naka-set up at tumatakbo na ngayon. I-configure natin ang kliyente ngayon.
Configuration ng Kliyente
Ang Configuration ng Client para sa Wireguard ay halos kapareho ng configuration ng server. Bumubuo kami ng mga susi para sa kliyente, at pagkatapos ay gumawa ng configuration file.
Mga Security Key
Upang bumuo ng pampubliko/pribadong key pares para sa kliyente, patakbuhin ang:
sudo su cd /etc/wireguard umask 077 wg genkey | tee client_private_key | wg pubkey > client_public_key
Ang mga pampubliko at pribadong key para sa kliyente ay nabuo na ngayon ayon sa pagkakabanggit sa mga file client_private_key
at client_public_key
.
Suriin na ang mga ito ay nilikha, gamit pusa
utos.
pusa client_private_key pusa client_public_key
Kopyahin ang ipinapakitang pribadong key dahil kailangan namin itong idagdag sa configuration file para sa kliyente.
File ng Configuration
Lumikha ng configuration file sa anumang pangalan na gusto mo. Gagawin namin ito gamit ang pangalan wg0-kliyente
para sa halimbawang ito.
vim wg0-client.conf
Idagdag ang sumusunod na configuration.
[Interface] # IP Address at Pribadong Key ng Client Address = 10.20.43.2/24 PrivateKey = [Peer] # Public key, IP Address at Port ng Server PublicKey = Endpoint = :51190 AllowedIPs = 0.0.0.0/0, : :/0
Ilagay ang subnet address para sa kliyente. Tulad ng inilarawan dati, ginagamit namin 10.20.43.2
para sa kliyente sa halimbawang ito.
Idagdag ang client private key nabuo sa nakaraang hakbang sa linya 4 sa configuration code sa itaas.
Sa ilalim ng 'Peer', nagdaragdag kami ng impormasyon tungkol sa Wireguard VPN server gusto naming kumonekta sa.
Ipasok ang pampublikong susi ng server. Pumasok sa IP Address ng server, na dati naming nabanggit, at port sa ibinigay na format laban sa Endpoint. Ito ang port na tinukoy namin sa file ng pagsasaayos ng server at kung saan nagsimula ang serbisyo ng VPN sa server.
Ang mga pinapayagang IP ay dapat na ilagay bilang ibinigay (0.0.0.0/0) upang ang anumang kahilingan sa isang dynamic na pampublikong IP na ginagamit ng kliyente ay palaging ipapasa sa VPN server.
I-save at lumabas sa file. Kapag gumagamit ng vim, pindutin ang Esc, pagkatapos ay i-type :wq
at pindutin Pumasok upang i-save at lumabas.
Paganahin ang serbisyo ng kliyente upang tumakbo sa bawat boot, at simulan ito.
systemctl paganahin ang wg-quick@wg-client service wg-quick@wg-client start
I-verify kung nagsimula na ang serbisyo.
serbisyo wg-quick@wg-client status
Pagdaragdag ng Peer sa Server
Ngayon ay mayroon na kaming VPN server at kliyente na gumagana at tumatakbo. Gayunpaman, ang isang secure na tunnel sa pagitan ng dalawa ay hindi itinatag maliban kung magtatag kami ng isang peer to peer na koneksyon sa pagitan ng server at client.
Bumalik ka sa server. Una, itigil ang serbisyo ng VPN.
serbisyo wg-quick@wg0 stop
Susunod, buksan ang configuration file sa magdagdag ng configuration para sa peer (kliyente).
vim /etc/wireguard/wg0.conf
Idugtong ang mga sumusunod na linya sa file.
[Peer] PublicKey = AllowedIPs = 10.20.43.2/32
ngayon, simulan muli ang serbisyo ng VPN.
pagsisimula ng serbisyo wg-quick@wg0
Ayan yun! Ito ang lahat ng configuration na kailangan para sa Wireguard VPN client at setup ng server. Subukan natin ngayon ang aming VPN.
Pagsubok sa VPN
Una, gawin natin ang isang simpleng ping mula sa kliyente patungo sa server, upang matiyak na gumagana ang komunikasyon ng VPN tunnel. Patakbuhin ang sumusunod sa kliyente:
ping 10.20.43.1
Susunod, magbukas ng web browser at magbukas ng anumang website para tingnan kung nakakakonekta ka sa Internet mula sa client machine. Maaari mo ring suriin ang iyong koneksyon sa internet mula sa command line gamit wget
.
wget
Ngayon, nasuri na namin ang pagkakakonekta ng tunnel at ang pagkakakonekta sa Internet. Kung pareho ay gumagana, kailangan na nating tiyakin na ang lahat ng trapiko sa internet na dumarating sa kliyente ay dumadaan sa server.
Para dito, kailangan lang nating suriin ang IP Address ng kliyente gaya ng nakikita ng Internet. Isang paraan para gawin ito ay pumunta sa whatsmyip.org. O iba pa mula sa command line, maaari tayong mag-query ng isa pang katulad na serbisyo na tinatawag na IP info, gamit ang Curl.
Patakbuhin ang sumusunod sa makina ng kliyente
curl //ipinfo.io/ip
Oo. Ito ang pampublikong IP Address ng Linode kung saan naka-host ang VPN server. Ito ay kung paano nakakamit ang anonymity gamit ang VPN, dahil sa buong Internet ngayon ang IP ng VPN server ay nakikita at hindi sa iyong computer.
Konklusyon
Ang kadalian ng pag-setup ay isa sa pinakamahalagang bentahe ng Wireguard kumpara sa tradisyonal na VPN software tulad ng OpenVPN, na nangangailangan ng mas mataas na antas ng networking at kaalaman sa pagruruta upang mai-set up. Gayunpaman, may kakulangan ng detalyadong opisyal na dokumentasyon para sa Wireguard na maaaring magdulot ng mga problema kung ang iyong Wireguard setup ay nagkakamali o hindi gumagana gaya ng inaasahan.
Gayunpaman, ang Wireguard ay isang mahusay na pagpipilian kung nais mo ang isang self-host na VPN para sa ligtas na komunikasyon sa Internet. Upang matuto nang higit pa tungkol sa Wireguard at ang mga protocol at teknolohiyang ginagamit nito, maaari mong tingnan ang opisyal na site.