Kuidas ĂŒhendada Linuxis ettevĂ”tte VPN-i openconnect ja vpn-slice abil

Kas soovite tööl Linuxit kasutada, kuid ettevĂ”tte VPN ei luba? Siis vĂ”ib see artikkel aidata, kuigi see ei ole kindel. Soovin eelnevalt hoiatada, et ma ei mĂ”ista vĂ”rguadministreerimise kĂŒsimustest hĂ€sti, seega ei ole vĂ€listatud, et ma tegin kĂ”ik valesti. Teisest kĂŒljest, vĂ”ib-olla suudan kirjutada juhendi nii, et see oleks arusaadav tavalistele inimestele, seega soovitan proovida.

Artiklis on palju liigset teavet, kuid ilma nendeta ei suudaks ma lahendada probleeme, mis mul VPN seadistamisel ootamatult tekkisid. Arvan, et igaĂŒhel, kes pĂŒĂŒab seda juhendit rakendada, vĂ”ivad tekkida probleemid, mida minul ei olnud, ning loodan, et see liigset teavet aitab neid probleeme iseseisvalt lahendada.

Enamiku juhendis kasutatavatest kĂ€skudest tuleb teostada sudo kaudu, mis on lĂŒhiduse huvides eemaldatud. Palun pidage seda meeles.

Enamik IP-aadresse on lĂ€bi teinud tugeva obfuskatsiooni, seega kui nĂ€ete aadressi nagu 435.435.435.435 — seal peaks olema mingi normaalne IP, mis on spetsiifiline teie juhtumi jaoks.

Mul on Ubuntu 18.04, kuid arvan, et vÀikeste muudatustega saab juhendit rakendada ka teistele jaotustele. Siiski, selles tekstis tÀhendab Linux == Ubuntu.

Cisco Connect

Nendel, kes kasutavad Windowsi vĂ”i MacOS-i, on vĂ”imalik meie ettevĂ”tte VPN-i ĂŒhenduda lĂ€bi Cisco Connect, millele tuleb nĂ€idata gateway aadress ja igaĂŒhenduse korral sisestada parool, mis koosneb fikseeritud osast ja Google Authenticator'i genereeritud koodist.

Linuxi puhul ei Ônnestunud mul Cisco Connect'i kÀivitada, kuid leidsin soovituse kasutada openconnect'i, mis on tehtud spetsiaalselt Cisco Connect'i asendamiseks.

Openconnect

Idee kohaselt peaks Ubuntu-s olema openconnect'i jaoks spetsiaalne graafiline liides, kuid mul see ei töötanud. VÔib-olla on see isegi parem.

Ubuntu-s installitakse openconnect paketihalduri kaudu.

apt install openconnect

Vahetult pĂ€rast installimist vĂ”ib proovida VPN-iga ĂŒhendada.

openconnect --user poxvuibr vpn.evilcorp.com

vpn.evilcorp.com on vÀljamÔeldud VPN-i aadress
poxvuibr — vĂ€ljamĂ”eldud kasutajanimi

openconnect kĂŒsib parooli, mis koosneb fikseeritud osast ja Google Authenticatorist saadud koodist, ja proovib seejĂ€rel vpn-iga ĂŒhenduda. Kui see Ă”nnestub, Ă”nnitleme, vĂ”ite julgelt vahele jĂ€tta vaheosa, kus on palju valu, ja minna punkti juurde, mis kĂ€sitleb openconnecti töötamist taustal. Kui ei Ă”nnestunud, siis vĂ”ib jĂ€tkata. Kuigi kui see Ă”nnestus nĂ€iteks töökoha kĂŒlalis-WiFist ĂŒhendudes, siis vĂ”ib-olla on vara rÔÔmustada, tuleb proovida protseduuri kodust uuesti.

Sertifikaat

Suure tÔenÀosusega ei kÀivitu midagi ja openconnecti vÀljund nÀeb vÀlja enam-vÀhem niimoodi:

POST https://vpn.evilcorp.com/
Yhendatud 777.777.777.777:443
SSL lÀbirÀÀkimised vpn.evilcorp.com-iga
Serveri sertifikaadi kontrollimine ebaÔnnestus: allkirjastajat ei leitud

VPN serverilt "vpn.evilcorp.com" saadud sertifikaadi verifitseerimine ebaÔnnestus.
PÔhjus: allkirjastajat ei leitud
Kuna usaldada seda serverit tulevikus, lisage sellele oma kÀsureale:
    --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
Sisestage 'jah', et aktsepteerida, 'ei', et katkestada; midagi muud, et vaadata: fgets (stdin): Operatsioon kÀib.

Ühelt poolt on see ebameeldiv, kuna VPN-i ĂŒhendust ei toimunud, aga teiselt poolt on selles probleemi parandamise pĂ”himĂ”te selge.

Siin saatis server meile sertifikaadi, mille pĂ”hjal on vĂ”imalik mÀÀrata, et ĂŒhendus toimub tĂ”eliselt oma korporatsiooni serveriga, mitte kurja petturiga, aga sĂŒsteemile pole see sertifikaat tundmatu. Ja seetĂ”ttu ei saa ta kontrollida, kas server on tĂ”eline vĂ”i mitte. Ja selle tĂ”ttu katkestab töö.

Selleks, et openconnect siiski serveriga ĂŒhenduks, tuleb talle selgelt öelda, milline sertifikaat peaks tulema VPN-serverilt kasutades vĂ”tme --servercert.

Ja et teada saada, millise sertifikaadi server meile saatis, saame seda otse openconnecti vÀljundist. Siit lausest:

Kuna usaldada seda serverit tulevikus, lisage sellele oma kÀsureale:
    --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
Sisestage 'jah', et aktsepteerida, 'ei', et katkestada; midagi muud, et vaadata: fgets (stdin): Operatsioon kÀib.

Sellise kĂ€suga vĂ”ite proovida uuesti ĂŒhendust luua.

openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr vpn.evilcorp.com

VĂ”ib-olla nĂŒĂŒd Ă”nnestus, siis vĂ”ib minna lĂ”puni. Aga isiklikult nĂ€itas mulle Ubuntu sellist sĂ”rme.

POST https://vpn.evilcorp.com/
Connected to 777.777.777.777:443
SSL negotiation with vpn.evilcorp.com
Server certificate verify failed: signer not found
Connected to HTTPS on vpn.evilcorp.com
XML POST enabled
Please enter your username and password.
POST https://vpn.evilcorp.com/
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 300, Keepalive 30
Set up DTLS failed; using SSL instead
Connected as 192.168.333.222, using SSL
NOSSSSSHHHHHHHDDDDD
3
NOSSSSSHHHHHHHDDDDD
3
RTNETLINK answers: File exists
/etc/resolvconf/update.d/libc: Warning: /etc/resolv.conf is not a symbolic link to /run/resolvconf/resolv.conf

/etc/resolv.conf

# Generated by NetworkManager
search gst.evilcorpguest.com
nameserver 127.0.0.53

/run/resolvconf/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 192.168.430.534
nameserver 127.0.0.53
search evilcorp.com gst.publicevilcorp.com

habr.com resolvib, kuid sinna ei pÀÀse. Aadresse nagu jira.evilcorp.com tegelikult ĂŒldse ei resolvita.

Mis seal juhtus, pole mulle selge. Kuid eksperiment nÀitab, et kui lisada /etc/resolv.conf rida

nameserver 192.168.430.534

siis adresse VPN-i sees hakkavad maagiliselt resolvima ja neid saab kasutada, st see, millest DNS adresse lahendamise korraldusi kĂŒsib, vaatab just /etc/resolv.conf-i, mitte kusagil mujal.

See, et VPN-iga on ĂŒhendus ja see töötab, on vĂ”imalik veenduda ka ilma muudatusteta /etc/resolv.conf-is, piisab, kui brauserisse sisestada mitte ressursi sĂŒmboolne nimi VPN-is, vaid selle IP-aadress.

KokkuvÔttes selgub kaks probleemi

  • VPN-i ĂŒhendamise ajal ei toimu DNS-i lahendamine
  • kogu liiklus lĂ€heb VPN-i kaudu, mis ei vĂ”imalda internetti pÀÀseda

Mida teha, rÀÀgin nĂŒĂŒd, kuid kĂ”igepealt natuke automatiseerimist.

Automaatne fikseeritud parooli osa sisestamine

Seni olete tÔenÀoliselt juba parooli sisestanud vÀhemalt viis korda ja see protseduur on teid juba kurnanud. Esiteks, kuna parool on pikk, teiseks, kuna sisestamisel peab ajavahemikku jÀrgima.

Probleemi lÔplik lahendus ei jÔudnud artiklisse, kuid vÔib teha nii, et fikseeritud parooli osa ei pea korduvalt sisestama.

Oletame, et fikseeritud parooli osa on fixedPassword, ja Google Authenticatori osa 567 987. Kogu parooli openconnect saab edastada standardse sisendiga argumendi abil —passwd-on-stdin.

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr vpn.evilcorp.com --passwd-on-stdin

NĂŒĂŒd saab pidevalt tagasi viimasele sisestatud kĂ€sule ja muuta seal ainult Google Authenticatori osa.

EttevÔtte VPN ei luba internetti pÀÀseda.

Tegelikult on see ĂŒsna ebamugav, kui habrisse minekuks tuleb kasutada eraldi arvutit. Kopeerimise ja kleepimise puudumine stackoverfow-st vĂ”ib tĂ”eliselt töö halvatuks muuta, seega tuleb midagi ette vĂ”tta.

Peab korraldada nii, et kui on vaja pÀÀseda ressursile sisevĂ”rgust, siis Linux kasutab VPN-i ja kui on vaja pÀÀseda Habrist — siis lĂ€heks internetti.

Openconnect kĂ€ivitamisel ja VPN-iga ĂŒhenduse loomisel tĂ€idab see spetsiaalse skripti, mis asub /usr/share/vpnc-scripts/vpnc-script. Skript saab sisendiks mitmed muutujad ja teeb VPN-i seadistuse. Kahjuks ei suutnud ma aru saada, kuidas jagada liiklust ettevĂ”tte VPN-i ja ĂŒlejÀÀnud interneti vahel originaalskripti abil.

Ilmselt on spetsiaalselt sellistele nagu mina vÀlja töötatud utiliit vpn-slice, mis vÔimaldab suunata liiklust kahe kanali vahel ilma tantsudeta. Noh, tantsida tuleb, aga ƥamaaniks olema ei pea.

Liikluse jagamine vpn-slice abil

Esiteks tuleb vpn-slice paigaldada, selle ĂŒle tuleb ise aru saada. Kui kommentaarides on kĂŒsimusi, kirjutan selle kohta eraldi postituse. Kuid see on tavaline programm Pythonis, nii et keerukusi ei tohiks olla. Paigaldasin selle virtualenv abil.

Ja edaspidi tuleb utiliiti rakendada, kasutades pĂ”hiseadet —script, mĂ€rkides openconnect, mida tuleb kasutada vpn-slice'i asemel.

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin 
--script ".\/bin\/vpn-slice 192.168.430.0\/24  " vpn.evilcorp.com 

—script antakse string kĂ€sk, mida tuleb kutsuda skripti asemel. .\/bin\/vpn-slice — tee tĂ€idetava faili vpn-slice juurde 192.168.430.0\/24 — aadresside mask, mida tuleb VPN-i kaudu minna. Siin mĂ”istetakse, et kui aadress algab 192.168.430 — siis tuleb selle aadressiga ressurssi otsida VPN-i seest.

NĂŒĂŒd peaks olukord olema peaaegu normaalne. Peaaegu. NĂŒĂŒd saab minna Habri ja sisevĂ”rgu ressursile IP kaudu, kuid ei saa minna sisevĂ”rgu ressursile sĂŒmboolsest nimest. Kui kirjutada vastavus sĂŒmboolse nime ja aadressi kohta hosts — peaks kĂ”ik töötama. Ja tööle jÀÀma seni, kuni IP ei muutu. Linux suudab nĂŒĂŒd minna internetti vĂ”i sisevĂ”rku sĂ”ltuvalt IP-st. Kuid aadressi mÀÀramiseks kasutatakse endiselt mitteettevĂ”ttelist DNS-i.

Probleem vĂ”ib samuti ilmneda selliselt – kontoris on kĂ”ik korras, aga kodus pÀÀseb ettevĂ”tte sisemistele ressurssidele sisse ainult IP-aadressi kaudu. See on nii, sest kui oled ĂŒhendatud ettevĂ”tte Wi-Fi-ga, kasutatakse DNS-i, mis on samuti ettevĂ”ttele omane, ja seal lahendatakse VPN-i sĂŒmboolsed aadressid, ehkki nendele aadressidele ei pÀÀse ilma VPN-ita juurde.

Faili hosts automaatne modifikatsioon

Kui vpn-slice'ilt viisakalt paluda, vĂ”ib see pĂ€rast VPN-i ĂŒlesseadmist kĂŒlastada selle DNS-i, leida seal vajadusel ressursside sĂŒmboolsed nimed ja kirjutada nende IP-aadressid hosts-faili. VPN-i vĂ€ljalĂŒlitamisel eemaldatakse need aadressid hosts-failist. Selleks tuleb sĂŒmboolsed nimed vpn-slice'ile argumendina edastada. NĂ€iteks nii.

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin
--script ".\/bin\/vpn-slice 192.168.430.0\/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com 

NĂŒĂŒd peaks kĂ”ik töötama nii kontoris kui ka rannas.

Otsige DNS-i, mille andis VPN, kÔigi alamdomeenide aadresse.

Kui aadresse sisese vĂ”rgu sees on vĂ€he, siis lĂ€henemine failide hosts automaatse modifikatsiooni kaudu on tĂ€iesti toimiv. Kuid kui ressursse on vĂ”rgus palju, siis peate pidevalt lisama skripti ridu, nagu zoidberg.test.evilcorp.com - zoidberg on ĂŒks testimise platvorme.

Aga nĂŒĂŒd, kui me saame veidi aru, mida see kĂ”ik endast kujutab, on seda vajadust vĂ”imalik vĂ€ltida.

Kui pÀrast VPN-i seadistamist vaadata /etc/hosts, vÔib seal nÀha jÀrgmist rida.

192.168.430.534 dns0.tun0 # vpn-slice-tun0 AUTOCREATED

Ja resolv.conf-i lisati uus rida. ÜhesĂ”naga, vpn-slice leidis kuidagi, kus asub VPN-i DNS-server.

NĂŒĂŒd tuleb teha nii, et Linux uuriks IP-aadressi, mis lĂ”ppeb evilcorp.com, ettevĂ”tte DNS-ist, ja kui vaja midagi muud, siis vaikimisi.

Ma otsisin ĂŒsna kaua ja avastasin, et selline funktsionaalsus on Ubuntu's vaikimisi olemas. Silmas peetakse vĂ”imalust kasutada nime lahendamiseks kohaliku DNS-serveri dnsmasq.

See tÀhendab, et Linux kÀib alati IP-aadresside jÀrgi kohaliku DNS-serveri poole, mis omakorda otsib vastavalt domeeninimele IP-aadresse vastaval vÀlisel DNS-serveril.

Ubuntu's NetworkManager is used to manage everything related to networks and network connections, and the graphical interface for selecting, for example, Wi-Fi connections is simply a front end to it.

We will need to explore its configurations.

  1. Create a file in /etc/NetworkManager/dnsmasq.d/evilcorp

address=/.evilcorp.com/192.168.430.534

Note the dot before evilcorp. It signals to dnsmasq that all subdomains of evilcorp.com should be resolved using the corporate DNS.

  1. Tell NetworkManager to use dnsmasq for name resolution.

The network-manager configuration is located at /etc/NetworkManager/NetworkManager.conf. We need to add the following:

[main]
dns=dnsmasq

  1. Restart NetworkManager.

service network-manager restart

Now, after connecting to VPN using the openconnect and vpn-slice bundle, the IP will be properly identified, even if symbolic addresses are not added to the vpnslice arguments.

How to access separate services over VPN

After successfully connecting to the VPN, I was very happy for a couple of days, but then I found out that if I connect to the VPN not from the office network, email doesn’t work. The symptom is familiar, isn’t it?

Our email is located at mail.publicevilcorp.com, which means it doesn't fall under the rule in dnsmasq, and the address of the mail server is searched through public DNS.

But in the office, DNS is still used, which has this address. That’s what I thought. In reality, after adding the line in dnsmasq,

address=/mail.publicevilcorp.com/192.168.430.534

the situation didn't change at all. The IP remained the same. I had to go to work.

Only later, when I delved into the situation and figured out the problem a bit, a smart person told me how to resolve it. It was necessary to connect to the mail server not just directly, but through VPN.

I use vpn-slice to go through the VPN for addresses that start with 192.168.430. The mail server not only has a symbolic address that's not a subdomain of evilcorp, but it also has an IP address that doesn't start with 192.168.430. And of course, it doesn’t allow anyone in from the general network.

To ensure Linux can access the mail server through VPN, it needs to be added to vpn-slice as well. Suppose the address of the mail server is 555.555.555.555.

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin --script "./bin/vpn-slice 555.555.555.555 192.168.430.0/24" vpn.evilcorp.com 

Script to establish VPN with a single argument.

KÔik see pole muidugi vÀga mugav. Jah, tekst vÔib salvestada faili ja kleepida konsooli ning mitte kÀsitsi sisestada, aga see pole siiski kuigi meeldiv. Protsessi lihtsustamiseks vÔib kÀsu panna skripti, mis asub PATH-is. Ja siis tuleb vaid sisestada Google Authenticatorist saadud kood.

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin 
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com 

Kui panna skript connect~evilcorp~ kausta, siis vÔib lihtsalt konsoolis kirjutada.

connect_evil_corp 567987

Aga nĂŒĂŒd tuleb konsool, kus openconnect töötab, ikkagi mingil pĂ”hjusel lahti hoida.

Openconnecti taustal kÀivitamine.

KĂ€esolevalt on openconnect autorid meie jaoks hoolitsenud ja lisanud programmi spetsiaalse vĂ”tme —background, mis teeb nii, et programm töötab pĂ€rast kĂ€ivitamist taustal. Kui kĂ€ivitada seda nii, siis vĂ”ib pĂ€rast kĂ€ivitamist konsooli sulgeda.

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 
--user poxvuibr 
--passwd-on-stdin 
--background 
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  

NĂŒĂŒd on aga arusaamatu, kuhu logid lĂ€hevad. Logid pole meile tingimata vajalikud, aga kes teab. Openconnect vĂ”ib suunata need syslogi, kus need saavad olla tervena ja turvaliselt. Selle jaoks tuleb kĂ€sklusse lisada vĂ”ti —syslog.

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 
--user poxvuibr 
--passwd-on-stdin 
--background 
--syslog 
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  

Ja nii juhtub, et openconnect töötab kuskil taustal ja ei sega kedagi, aga kuidas seda peatada, ei ole arusaadav. Loomulikult vĂ”ib ps vĂ€ljundit filtreerida ja otsida protsessi, mille nimi sisaldab openconnecti, aga see on kuidagi tĂŒlikas. AitĂ€h autoritele, kes sellele samuti mĂ”tlesid. Openconnectil on vĂ”tme —pid-file, millega saab nĂ”ustada openconnectit oma protsessi ID faili kirjutama.

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 
--user poxvuibr 
--passwd-on-stdin 
--background  
--syslog 
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  
--pid-file ~/vpn-pid

NĂŒĂŒd saab protsessi alati lĂ”petada kĂ€suga.

kill $(cat ~/vpn-pid)

Kui protsessi pole, siis kill kurjustab, aga viga ei viska. Kui faili pole, siis samuti ei juhtu midagi hullu, seega vÔib julgelt protsessi esimeses skripti real lÔpetada.

kill $(cat ~/vpn-pid)
#! /bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 
--user poxvuibr 
--passwd-on-stdin 
--background 
--syslog 
--script ". /bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  
--pid-file ~/vpn-pid

NĂŒĂŒd saab arvuti sisse lĂŒlitada, avada konsooli ja kĂ€ivitada kĂ€sk, edastades sellele Google Authenticatorist saadud koodi. Konsooli vĂ”ib siis lĂ”petada.

Ilma vpn-sliceta. JÀrelsÔnana.

MĂ”ista, kuidas elada ilma vpn-sliceta, osutus vĂ€ga keeruliseks. Pidin palju lugema ja googeldama. Õnneks, kui palju aega probleemiga veetsin, loetakse tehnilised juhised ja isegi man openconnect nagu pĂ”nevaid romaane.

LÔpuks selgitasin vÀlja, et vpn-slice, nagu ka kohandatud skript, muudab vÔrgud jagades marsruudingu tabelit.

Marsruudingu tabel

Seda vÔib lihtsustatult defineerida kui tabelit, mille esimeses veerus on aadressi algus, mille kaudu Linux soovib minna, ja teises, millise vÔrguadapteri kaudu seda aadressi jÀrgida. Tegelikult on veerge rohkem, kuid see ei muuda asja olemust.

Marsruudingu tabeli vaatamiseks tuleb kÀivitada kÀsk ip route

default via 192.168.1.1 dev wlp3s0 proto dhcp metric 600 
192.168.430.0/24 dev tun0 scope link 
192.168.1.0/24 dev wlp3s0 proto kernel scope link src 192.168.1.534 metric 600 
192.168.430.534 dev tun0 scope link 

Siin vastutab iga rida selle eest, kuhu minna, et saata sÔnum teatud aadressile. Esimene on kirjeldus, millest aadress algama peab. Selleks, et mÔista, kuidas mÀÀrata, et 192.168.0.0/16 tÀhendab, et aadress peab algama 192.168-iga, tuleb googeldada, mis on IP-aadressi mask. PÀrast dev asub adapteri nimi, kuhu sÔnum saata.

VPN-i jaoks lÔi Linux virtuaalse adapteri - tun0. Rida, mis tagab, et kÔik aadressid, mis algavad 192.168, lÀhevad selle kaudu, on

192.168.0.0/16 dev tun0 scope link 

Samuti saab marsruudingu tabeli hetkeseisu vaadata kĂ€suga route -n (IP-aadressid on oskuslikult anonĂŒĂŒmsed) See kĂ€sk tagastab tulemusi teises vormingus ja on ĂŒldiselt aegunud, kuid selle vĂ€ljundit kohtab sageli juhendites ja tuleb osata seda lugeda.

IP-aadressi algust marsruudi jaoks saab mÔista veergude Destination ja Genmask kombinatsioonist. Need IP-aadressi osad, mille Genmaskis on numbrid 255, arvestatakse, ja need, kus on 0 - ei arvestata. Seega kombinatsioon Destination 192.168.0.0 ja Genmask 255.255.255.0 tÀhendab, et kui aadress algab 192.168.0, siis lÀheb pÀring sellele marsruudile. Kui aga Destination on 192.168.0.0 ja Genmask 255.255.0.0, siis selle marsruudi kaudu lÀhevad pÀringud aadressidele, mis algavad 192.168.

Et mÔista, mida vpn-slice tegelikult teeb, otsustasin vaadata tabelite olekuid enne ja pÀrast

Enne VPN-i sisselĂŒlitamist oli see nii

route -n 

Kernel IP marsruudi tabel
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0
222.222.222.0   0.0.0.0         255.255.255.0   U     600    0        0 wlp3s0
333.333.333.333 222.222.222.1   255.255.255.255 UGH   0      0        0 wlp3s0

PÀrast openconnecti kÀivitamist ilma vpn-slice'ita nÀgi see vÀlja nii

route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 tun0
0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0
222.222.222.0   0.0.0.0         255.255.255.0   U     600    0        0 wlp3s0
333.333.333.333 222.222.222.1   255.255.255.255 UGH   0      0        0 wlp3s0
192.168.430.0   0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.430.534 0.0.0.0         255.255.255.255 UH    0      0        0 tun0

Ja pÀrast openconnect'i ja vpn-slice'i kutset on see nii

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0
222.222.222.0   0.0.0.0         255.255.255.0   U     600    0        0 wlp3s0
333.333.333.333 222.222.222.1   255.255.255.255 UGH   0      0        0 wlp3s0
192.168.430.0   0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.430.534 0.0.0.0         255.255.255.255 UH    0      0        0 tun0

On nĂ€ha, et kui vpn-slice'i ei kasutata, siis openconnect ĂŒtleb selgelt, et kĂ”ik aadressid, vĂ€lja arvatud eraldi mÀÀratud, tuleb lĂ€bida vpn-i kaudu.

Siin:

0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 tun0

Seal on kohe kĂ”rval mĂ€rgitud veel ĂŒks tee, mida tuleb kasutada, kui aadress, millega Linux ĂŒritab minna, ei vasta ĂŒhele maskile tabelis.

0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0

Siin on juba kirjutatud, et sellisel juhul tuleb minna lÀbi tavandard WiFi.

Ma arvan, et VPN-i teed kasutatakse, kuna see on marsruuditabelis esimene.

Teoreetiliselt, kui see vaikimisi tee marsruuditabelist eemaldada, siis koos dnsmasq'iga peaks openconnect tagama normaalse töö.

Ma proovisin

route del default

Ja kÔik töötas.

KĂŒsimuste marsruutimine postiserverisse ilma vpn-slice'ita

Aga mul on veel postiserver aadressiga 555.555.555.555, millele peab samuti minema VPN kaudu. Marsruut sinna tuleb ka kÀsitsi lisada.

ip route add 555.555.555.555 via dev tun0

Ja nĂŒĂŒd on kĂ”ik normaalne. Nii et vpn-slice'ita on tĂ”esti vĂ”imalik hakkama saada, aga juba peab hĂ€sti teadma, mida teed. Ma mĂ”tlen praegu, et kas lisada viimasesse openconnect'i skripti vaikimisi marsruudi eemaldamine ja postiserveri marsruudi lisamine pĂ€rast VPN-iga ĂŒhendamist, lihtsalt et mu jalgrattal oleksid liikuvad osad vĂ€hem.

VĂ”ib-olla piisaks kellelegi, et mĂ”ista, kuidas VPN-i seadistada, sellest jĂ€relmĂ€rkusest. Kuid mina, samal ajal pĂŒĂŒdes aru saada, mida ja kuidas teha, lugesin ĂŒsna palju selliseid juhendeid, mis töötavad autori jaoks, kuid mingil pĂ”hjusel mitte minu jaoks, ja otsustasin siia lisada kĂ”ik leitud tĂŒkikesed. Ma oleksin sellistest asjadest vĂ€ga rÔÔmus olnud.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster