
Problematika
Ende shumë kohësh, shumë njerëz nuk e dinin si është të punosh nga shtëpia. Pandemia e ndryshoi me shpejtësi situatën në botë, të gjithë filluan të adaptohen me rrethanat e krijuara, sidomos me faktin që dalja nga shtëpia bëri gjithnjë e më shumë rrezik. Disa ishin të detyruar të organizonin shpejt punën nga shtëpia për punonjësit e tyre.
Megjithatë, mungesa e një qasjeje të mençur në zgjedhjen e zgjidhjeve për punën në distancë mund të çojë në humbje të pariparueshme. Fjalëkalimet e përdoruesve mund të vidhen, dhe kjo do t'i japë mundësinë një keqbërësi të lidhë pa kontroll në rrjetin dhe burimet IT të ndërmarrjes.
Pikërisht për këtë arsye, tani është rritur kërkesa për krijimin e rrjeteve VPN korporative të besueshme. Unë do t'ju flas për një rrjet VPN, e sigurt dhe të thjeshtë për t'u përdorur.
Ajo funksionon sipas skemës IPsec/L2TP, duke përdorur çelësa të parekuperueshëm dhe certifikata për autentifikimin e klientëve, të ruajtura në token, si dhe transmeton të dhëna përmes rrjetit në formën e koduar.
Si për demonstrare e konfigurimeve u përdor një server me CentOS 7 (adresa: centos.vpn.server.ad) dhe një klient me Ubuntu 20.04, si dhe një klient me Windows 10.
Përshkrimi i sistemit
VPN do të funksionojë sipas skemës IPSec + L2TP + PPP. Protokolli Protokolli Pikë në Pikë (PPP) punon në nivelin e kanalit të modelit OSI dhe siguron autentifikimin e përdoruesve dhe enkriptimin e të dhënave të transmetuara. Të dhënat e tij inkapsulohen në të dhënat e protokollit L2TP, i cili në thelb siguron krijimin e lidhjes në rrjetin VPN, por nuk siguron autentifikim dhe enkriptim.
Të dhënat L2TP inkapsulohen në protokollin IPSec, i cili gjithashtu siguron autentifikim dhe enkriptim, por ndryshe nga protokolli PPP, autentifikimi dhe enkriptimi ndodhin në nivelin e pajisjeve, jo në nivelin e përdoruesve.
Kjo veçori mundëson autentifikimin e përdoruesve vetëm nga pajisje të caktuara. Ne do të përdorim protokollin IPSec për këtë dhe do të lejojmë autentifikimin e përdoruesve nga çdo pajisje.

Autentifikimi i përdoruesit përmes kartave inteligjente do të kryhet në nivelin e protokollit PPP duke përdorur protokollin EAP-TLS.
Informacione më të detajuara mbi funksionimin e kësaj skeme mund të gjenden në .
Pse kjo skemë përmbush të tre kërkesat e një rrjeti VPN të mirë
- Besueshmëria e kësaj skeme është provuar me kohën. Ajo përdoret për implementimin e rrjeteve VPN që nga viti 2000.
- Protokolli PPP siguron autentikimin e sigurtë të përdoruesit. nuk siguron një nivel të mjaftueshëm sigurie, pasi për autentikimin përdoret, në rastin më të mirë, autentikimi me anë të emrit të përdoruesit dhe fjalëkalimit. Të gjithë e dimë se emri i përdoruesit-fjalëkalimi mund të shikohet, të zbulohet ose të vjedhet. Megjithatë, prej kohësh, zhvilluesi në të këtij protokolli e ka korrigjuar këtë çështje dhe ka shtuar mundësinë e përdorimit të protokolleve të bazuara në enkriptimin asimetrik për autentikim, si EAP-TLS. Për më tepër, ai ka shtuar mundësinë e përdorimit të kartelave inteligjente për autentikim, çka e ka bërë këtë sistem më të sigurt.
Aktualisht, po zhvillohen negociata aktive për bashkimin e këtyre dy projekteve dhe mund të jeni të sigurt se herët a vonë, kjo do të ndodhë. Për shembull, në depot e Fedora ka për një kohë të gjatë një version të patched të PPP, që përdor protokolle të sigurta për autentikim. - Ende më parë, kjo rrjetë mund të përdorej vetëm nga përdoruesit e Windows, por kolegët tanë nga MGJ, Vasily Shokov dhe Aleksandr Smirnov, zbuluan dhe e përmirësuan atë. Me përpjekje të përbashkëta, kemi korrigjuar shumë bugs dhe mangësi në funksionimin e klientit, duke e thjeshtuar instalimin dhe konfigurimin e sistemit, madje edhe gjatë ndërtimit nga burimet. Disa nga përmirësimet më të rëndësishme përfshijnë:
- Kemi rregulluar problemet e pajtueshmërisë së klientit të vjetër me ndërfaqen e versioneve të reja të openssl dhe qt.
- Kemi hequr kalimin e PIN-it të tokenit pppd përmes një skedari përkohësor.
- Kemi korrigjuar fillimin e gabuar të programit për kërkesën e fjalëkalimit përmes ndërfaqes grafike. Kjo është bërë duke vendosur një mjedis të saktë për shërbimin xl2tpd.
- Ndërtimi i demonit L2tpIpsecVpn tani bëhet së bashku me ndërtimin e vetë klientit, duke e lehtësuar procesin e ndërtimit dhe konfigurimit.
- Për lehtësimin e zhvillimit, kemi integruar sistemin Azure Pipelines për të testuar saktësinë e ndërtimit.
- Shtuar mundësinë për ta detyruar uljen e në kontekstin e openssl. Kjo është e dobishme për mbështetje të saktë për sistemet operative të reja, ku niveli standard i sigurisë është vendosur në 2, me rrjete VPN që përdorin certifikata që nuk përmbushin kërkesat e sigurisë së këtij niveli. Kjo opsion do të jetë e dobishme për punën me rrjete VPN të vjetra ekzistuese.
Versionin e rregulluar mund ta gjeni në .
Ky klient mbështet përdorimin e kartave inteligjente për autentifikim, si dhe fsheh sa më shumë mundësi dhe vështirësi të konfigurimit të këtij skeme nën Linux, duke e bërë konfiguruarjen e klientit sa më të thjeshtë dhe të shpejtë.
Sigurisht, për lidhjen e rehatshme PPP dhe GUI e klientit nuk ka qenë pa ndryshime të shtesave të çdo projekti, por megjithatë të gjitha ndryshimet janë minimizuar dhe janë reduktuar në minimum:
- Është korrigjuar
- Është korrigjuar . Ky kjo gabim nuk lejonte ngarkimin e skedarit lokal /etc/ppp/openssl.cnf me konfigurimin e tij, përveç informacioneve rreth motorëve openssl për punën me kartat inteligjente, që përbënte një shqetësim të madh, nëse, për shembull, përveç informacionit mbi motorët, do të donim të vendosnim diçka tjetër. Për shembull, të përcaktonim nivelin e sigurisë gjatë vendosjes së lidhjes.
Tani mund të fillojmë konfigurimin.
Konfigurimi i serverit
Le të instalojmë të gjithë paketat e nevojshme.
Instalimi i strongswan (IPsec)
Së pari, do të konfigurojmë firewall-in për të funksionuar me ipsec
sudo firewall-cmd --permanent --add-port=1701/{tcp,udp}
sudo firewall-cmd --permanent --add-service=ipsec
sudo firewall-cmd --reloadPastaj, do të kalojmë në instalim
sudo yum install epel-release ipsec-tools dnf
sudo dnf install strongswanPas instalimit, është e nevojshme të përcaktojmë konfigurimin për strongswan (një nga realizimet e IPSec). Për këtë, do të redaktojmë skedarin /etc/strongswan/ipsec.conf :
konfigurimi i setup
nat_traversal=po
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=off
protostack=netkey
conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=jo
auto=shto
keyingtries=3
rekey=jo
ikelifetime=8h
keylife=1h
type=transport
left=%any
leftprotoport=udp/1701
right=%any
rightprotoport=udp/%any
ike=aes128-sha1-modp1536,aes128-sha1-modp1024,aes128-md5-modp1536,aes128-md5-modp1024,3des-sha1-modp1536,3des-sha1-modp1024,3des-md5-modp1536,3des-md5-modp1024
esp=aes128-sha1-modp1536,aes128-sha1-modp1024,aes128-md5-modp1536,aes128-md5-modp1024,3des-sha1-modp1536,3des-sha1-modp1024,3des-md5-modp1536,3des-md5-modp1024Gjithashtu do të vendosim një fjalëkalim të përbashkët për hyrje. Fjalëkalimi i përbashkët duhet të jetë i njohur për të gjithë pjesëtarët e rrjetit për autentifikim. Ky metodë është potencialisht e pasigurt, pasi që fjalëkalimi mund të bëhet lehtësisht i njohur për individët që ne nuk dëshirojmë t'u japim akses në rrjet.
Megjithatë, edhe ky fakt nuk do të ndikojë në sigurinë e rrjetit, pasi kriptimi i të dhënave dhe autentikimi i përdoruesve realizohet nga protokolli PPP. Por për të qenë të drejtë, vlen të theksohet se strongswan mbështet teknologji më të sigurta për autentikimin, për shembull, përmes çelësave privatë. Gjithashtu, në strongswan ka mundësi për të siguruar autentikimin përmes kartave inteligjente, por për momentin mbështetet një gamë e kufizuar e pajisjeve dhe, prandaj, autentikimi me tokene dhe kartat intelligente Rutoken është ende i vështirë. Le të caktojmë një fjalëkalim të përgjithshëm përmes skedarit. /etc/strongswan/ipsec.secrets:
# ipsec.secrets - strongSwan IPsec secrets file
%any %any : PSK "SECRET_PASSPHRASE"Rinisëm strongswan:
sudo systemctl enable strongswan
sudo systemctl restart strongswanInstalimi i xl2tp
sudo dnf install xl2tpdTa konfigurojmë atë përmes skedarit /etc/xl2tpd/xl2tpd.conf:
[global]
force userspace = yes
listen-addr = 0.0.0.0
ipsec saref = yes
[lns default]
exclusive = no
; përcakton adresën statike të serverit në rrjetin virtual
local ip = 100.10.10.1
; përcakton gamën e adresave virtuale
ip range = 100.10.10.1-100.10.10.254
assign ip = yes
refuse pap = yes
require authentication = yes
; kjo opsion mund të çaktivizohet pas përfundimit të configurimit të rrjetit
ppp debug = yes
length bit = yes
pppoptfile = /etc/ppp/options.xl2tpd
; tregon adresën e serverit në rrjet
name = centos.vpn.server.adRinisëm shërbimin:
sudo systemctl enable xl2tpd
sudo systemctl restart xl2tpdKonfigurimi i PPP
Është e rekomandueshme të instaloni versionin më të fundit të pppd. Për këtë, do të realizojmë rendin e mëposhtëm të komandave:
sudo yum install git make gcc openssl-devel
git clone "https://github.com/jjkeijser/ppp"
cd ppp
./configure --prefix /usr
make -j4
sudo make installShkruani në skedarin /etc/ppp/options.xl2tpd këtë vijim (nëse ka ndonjë vlerë aty, ato mund të hiqen):
ipcp-accept-local
ipcp-accept-remote
ms-dns 8.8.8.8
ms-dns 1.1.1.1
noccp
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000Shkruani certifikatën rrënjësore dhe certifikatën e serverit:
#директория с сертификатами пользователей, УЦ и сервера
sudo mkdir /etc/ppp/certs
#директория с закрытыми ключами сервера и УЦ
sudo mkdir /etc/ppp/keys
#запрещаем любой доступ к этой дирректории кроме администатора
sudo chmod 0600 /etc/ppp/keys/
#генерируем ключ и выписываем сертификат УЦ
sudo openssl genrsa -out /etc/ppp/keys/ca.pem 2048
sudo openssl req -key /etc/ppp/keys/ca.pem -new -x509 -out /etc/ppp/certs/ca.pem -subj "/C=RU/CN=L2TP CA"
#генерируем ключ и выписываем сертификат сервера
sudo openssl genrsa -out /etc/ppp/keys/server.pem 2048
sudo openssl req -new -out server.req -key /etc/ppp/keys/server.pem -subj "/C=RU/CN=centos.vpn.server.ad"
sudo openssl x509 -req -in server.req -CAkey /etc/ppp/keys/ca.pem -CA /etc/ppp/certs/ca.pem -out /etc/ppp/certs/server.pem -CAcreateserialKështu, ne përfunduam me konfigurimin kryesor të serverit. Pjesa tjetër e konfigurimit të serverit lidhet me shtimin e klientëve të rinj.
Shtimi i klientit të ri
Për të shtuar një klient të ri në rrjet, është e nevojshme të regjistrohet certifikata e tij në listën e besuar për këtë klient.
Nëse përdoruesi dëshiron të bëhet pjesë e rrjetit VPN, ai krijon një çift çelësash dhe një kërkesë për certifikatë për këtë klient. Nëse përdoruesi është i besuar, atëherë kjo kërkesë mund të nënshkruhet, dhe certifikata e krijuar regjistrohet në direktorinë e certifikatave:
sudo openssl x509 -req -in client.req -CAkey /etc/ppp/keys/ca.pem -CA /etc/ppp/certs/ca.pem -out /etc/ppp/certs/client.pem -CAcreateserialShtojmë një rresht në skedarin /etc/ppp/eaptls-server për të lidhur emrin e klientit me certifikatën e tij:
"client" * /etc/ppp/certs/client.pem /etc/ppp/certs/server.pem /etc/ppp/certs/ca.pem /etc/ppp/keys/server.pem *SHËNIM
Për të mos u ngatërruar, është më mirë që: Emri i zakonshëm, emri i skedarit të certifikatës dhe emri i përdoruesit të jenë unike.
Gjithashtu është e nevojshme të kontrolloni që në skedarët e tjerë të verifikimit të mos figurojë emri i përdoruesit që po shtojmë, ndryshe do të kemi probleme me metodën e autentifikimit të përdoruesit.
Këtë certifikatë duhet t'ia dërgoni përsëri përdoruesit.
Gjenerimi i çiftit të çelësave dhe certifikatës
Për autentifikim të suksesshëm, klienti duhet:
- të gjenerojë një çift çelësash;
- të ketë certifikatën rrënjësore të CA;
- të ketë certifikatën për çiftin e tij të çelësave, e nënshkruar nga CA rrënjësore.
për klientin në Linux
Në fillim, ne do të gjenerojmë një çift çelësash në token dhe do të krijojmë një kërkesë për certifikatë:
#идентификатор ключа (параметр --id) можно заменить на любой другой.
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa:2048 -l --id 45
openssl
OpenSSL> engine dynamic -pre SO_PATH:/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:librtpkcs11ecp.so
...
OpenSSL> req -engine pkcs11 -new -key 45 -keyform engine -out client.req -subj "/C=RU/CN=client"Kërkesën e shfaqur client.req dërgojeni në CA. Pasi të merrni certifikatën për çiftin tuaj të çelësave, shkruani atë në token me të njëjtin id si ai i çelësit:
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w ./client.pem --id 45për klientët Windows dhe Linux (një metodë më universale)
Ky gjenerim është më universale, duke lejuar krijimin e një çelësi dhe një certifikate, e cila do të njohët me sukses nga përdoruesit e Windows dhe Linux, por kërkon një makinë me Windows për të realizuar procedurën e krijimit të çelësit.
Para se të krijoni kërkesat dhe të importoni certifikatat, duhet të shtoni certifikatën rrënjë të rrjetit VPN në listën e certifikatave të besuara. Për këtë, hapni atë dhe në dritaren që do hapet, zgjidhni opsionin "Instalo certifikatën":

Në dritaren e hapur, zgjidhni instalimin e certifikatës për përdoruesin lokal:

Instaloni certifikatën në depozitat e certifikatave të besuara të Autoritetit të Certifikimit:

Pas të gjitha këtyre veprimeve, pranojmë të gjitha pikat e mëtejshme. Tani sistemi është i konfiguruar.
Krijoni skedarin cert.tmp me përmbajtjen e mëposhtme:
[NewRequest]
Subject = "CN=client"
KeyLength = 2048
KeySpec = "AT_KEYEXCHANGE"
ProviderName = "Microsoft Base Smart Card Crypto Provider"
KeyUsage = "CERT_KEY_ENCIPHERMENT_KEY_USAGE"
KeyUsageProperty = "NCRYPT_ALLOW_DECRYPT_FLAG"
RequestType = PKCS10
SMIME = FALSEPas kësaj, do të gjenerojmë çiftin e çelësave dhe do të krijojmë një kërkesë për certifikatën. Për këtë, hapim powershell dhe shkruajmë komandën e mëposhtme:
certreq.exe -new -pin $PIN .cert.tmp .client.reqDërgoni kërkesën e krijuar client.req në autoritetin tuaj dhe prisni marrjen e certifikatës client.pem. Ajo mund të regjistrohet në token dhe të shtohet në magazinën e certifikatave Windows me komandën e mëposhtme:
certreq.exe -accept .client.pemVlen të përmendet se veprime të ngjashme mund të përfundojnë përmes ndërfaqes grafike të programit mmc, por ky mënyrë është më e ndërlikuar dhe më pak e programueshme.
Konfigurimi i klientit Ubuntu
SHËNIM
Konfigurimi i klientit në Linux aktualisht është një proces mjaft i gjatë, pasi kërkon ndërtimin e programeve të veçanta nga burimi. Ne do të përpiqemi që sa më shpejt të jetë e mundur, të gjitha ndryshimet të përfshihen në depot zyrtare.
Për të siguruar lidhjen në nivel IPSec me serverin — përdoret paketa strongswan dhe demon xl2tp. Për të thjeshtuar lidhjen me rrjetin përmes kartave inteligjente – do të përdorim paketën l2tp-ipsec-vpn, që ofron një ndërfaqe grafike për konfigurimin e thjeshtuar të lidhjes.
Të fillojmë ndërtimin e elementeve gradualisht, por para kësaj të instalojmë të gjitha paketat e nevojshme për funksionimin e VPN:
sudo apt-get install xl2tpd strongswan libp11-3Instalimi i softverit për punën me tokenët
Instaloni versionin më të fundit të bibliotekës librtpkcs11ecp.so me , gjithashtu bibliotekat për punën me kartat inteligente:
sudo apt-get install pcscd pcsc-tools opensc libengine-pkcs11-opensslLidhni Rutoken dhe kontrolloni që të njihet nga sistemi:
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O -lInstalimi i ppp të modifikuar
sudo apt-get -y install git make gcc libssl-dev
git clone "https://github.com/jjkeijser/ppp"
cd ppp
./configure --prefix /usr
make -j4
sudo make installInstalimi i klientit L2tpIpsecVpn
Aktualisht, klienti gjithashtu duhet të ndërtohet nga burimet. Kjo bëhet me ndihmën e rendit të mëposhtëm të komandave:
sudo apt-get -y install git qt5-qmake qt5-default build-essential libctemplate-dev libltdl-dev
git clone "https://github.com/Sander80/l2tp-ipsec-vpn"
cd l2tp-ipsec-vpn
make -j4
sudo make installKonfigurimi i klientit L2tpIpsecVpn
Nisni klientin e instaluar:

Pas nisjes, duhet të hapet applet L2tpIpsecVPN. Klikoni me të djathtën mbi të dhe konfiguroni lidhjen:

Për të punuar me tokenët, së pari do të tregojmë rrugën e motorit opensc të OpenSSL dhe bibliotekën PKCS#11. Për këtë hapni skedën "Preferences" për të konfiguruar parametrat e openssl:
.
Mbyllni dritaren e konfigurimit të OpenSSL dhe kaloni në konfigurimin e rrjetit. Shtoni një rrjet të ri duke klikuar në butonin Add… në panelin e konfigurimeve dhe shkruani emrin e rrjetit:

Pas kësaj, kjo rrjet do të bëhet e aksesueshme në panelin e konfigurimeve. Do të klikojmë me të djathtën mbi rrjetin e ri për ta konfiguruar atë. Në tabin e parë, është e nevojshme të bëhen konfigurimet IPsec. Do të përcaktojmë adresën e serverit dhe çelësin e përbashkët:

Pas kësaj, kalojmë në tabin e konfigurimit PPP dhe do të specifikojmë emrin e përdoruesit me të cilin dëshirojmë të hyjmë në rrjet:

Pas kësaj, do të hapim tabin Properties dhe do të caktojmë rrugën deri te çelësi, certifikata e klientit dhe UÇ:

Do të mbyllim këtë tab dhe do të kryejmë konfigurimin përfundimtar, për këtë do të hapim tabin "IP settings" dhe do të vendosim një shenjë në opsionin "Obtain DNS server address automatically":

Ky opsion do të lejojë klientin të marrë një IP personale nga serveri brenda rrjetit.
Pas të gjitha konfigurimeve, do të mbyllim të gjitha tabet dhe do të rinisim klientin:

Lidhja me rrjetin
Pas konfigurimeve, mund të kryhet lidhja me rrjetin. Për këtë, do të hapim tabin e aplikacionit dhe do të zgjidhim rrjetin me të cilin dëshirojmë të lidhemi:

Gjatë procesit të vendosjes së lidhjes, klienti do të kërkojë të fusim PIN-in e Rutoken:

Nëse në status-bar shfaqet një njoftim që lidhja është vendosur me sukses, atëherë konfigurimi është kryer me sukses:

Në rastin e tjetër, duhet të kuptoni pse lidhja nuk u krijua. Për këtë, shihni logun e programit, duke zgjedhur opsionin "Informacion mbi lidhjen":

Konfigurimi i klientit Windows
Konfigurimi i klientit në Windows është shumë më i lehtë se në Linux, pasi të gjitha softueret e nevojshme janë tashmë të integruara në sistem.
Konfigurimi i sistemit
Do të instalojmë të gjitha drejtuesit e nevojshëm për të punuar me Rutokenët duke i shkarkuar nga .
Importimi i certifikatës rrënjë për autentifikim
Do të shkarkojmë certifikatën rrënjë të serverit dhe do ta instalojmë në sistem. Për këtë, hapeni atë dhe në dritaren e shfaqur zgjidhni opsionin "Instalo certifikatën":

Në dritaren e shfaqur, zgjidhni instalimin e certifikatës për përdoruesin lokal. Nëse dëshironi që certifikata të jetë e aksesueshme për të gjitha përdoruesit në kompjuter, atëherë duhet të zgjidhni instalimin e certifikatës në kompjuterin lokal:

Instaloni certifikatën në depozitat e certifikatave të besuara të Autoritetit të Certifikimit:

Pas të gjitha këtyre veprimeve, pranojmë të gjitha pikat e mëtejshme. Tani sistemi është i konfiguruar.
Konfigurimi i lidhjes VPN
Për të konfiguruar lidhjen VPN, shkoni në panelin e kontrollit dhe zgjidhni opsionin për krijimin e një lidhjeje të re.

Në dritaren që shfaqet, zgjidhni opsionin për krijimin e një lidhjeje për t'u lidhur me vendin e punës:

Në dritaren tjetër, zgjidhni lidhjen përmes VPN:

dhe shkruani të dhënat e lidhjes VPN, si dhe specifikoni opsionin për përdorimin e kartelës inteligente:

Me këtë nuk përfundojmë konfigurimin. Na mbetet të specifikojmë çelësin e përbashkët për protokollin IPsec, për këtë do të kalojmë në skedën "Cilësimet e lidhjeve në rrjet" dhe pastaj do të kalojmë në skedën "Pronat për këtë lidhje":

Në dritaren e hapur, do të kalojmë në skedën "Siguria", do të specifikojmë si lloj rrjeti "Rrjeti L2TP/IPsec" dhe do të zgjedhim "Opsionet e avancuara":

Në dritaren e hapur, do të specifikojmë çelësin e përbashkët IPsec:

Lidhja
Pasi të përfundojmë konfigurimin, mund të provoni të lidhni në rrjet:

Gjatë procesit të lidhjes, do të kërkohet të shkruani PIN-in e token-it:

Ne kemi konfiguruar një rrjet VPN të sigurt dhe kemi verifikuar se kjo nuk është e komplikuar.
Faleminderit
Dëshiroj të falënderoj përsëri kolegët tanë Vasili Shokov dhe Aleksandër Smirnov për punën e përbashkët për të lehtësuar krijimin e lidhjeve VPN për klientët Linux.
Burimi: habr.com
