Kuidas Linuxis ĂŒhendada ettevĂ”tte VPN-i openconnecti ja vpn-slice'i kaudu

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

Artiklis on palju ĂŒleliigset teavet, kuid ilma nende teadmisteta ei oleks ma suutnud lahendada probleeme, mis mul ootamatult seoses VPN-i seadistamisega tekkisid. Arvan, et igaĂŒhel, kes pĂŒĂŒab seda juhendit rakendada, vĂ”ivad tekkida probleemid, mida mul ei olnud, ja loodetavasti aitab see ĂŒleliigne teave neid probleeme iseseisvalt lahendada.

Enamik juhendis kasutatavaid kĂ€ske tuleb tĂ€ita sudo kaudu, mis on lĂŒhiduse huvides vĂ€lja jĂ€etud. Pidage seda meeles.

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

Mul on Ubuntu 18.04, kuid arvan, et mÔningate muudatustega saab juhist rakendada ka teistele distributsioonidele. Siiski, see tekst kÀsitleb Linuxit == Ubuntu.

Cisco Connect

Need, kes kasutavad Windowsi vĂ”i MacOS-i, saavad meie ettevĂ”tte VPN-iga ĂŒhendada lĂ€bi Cisco Connect, kuhu tuleb sisestada gateway aadress ja igaĂŒhenduse korral sisestada parool, mis koosneb fikseeritud osast ja Google Authenticatori genereeritavast koodist.

Linuxi puhul ei Ônnestunud Cisco Connecti kÀivitada, kuid leidsin soovituse kasutada openconnect'i, mis on loodud just Cisco Connecti asendamiseks.

Openconnect

Ideaaljuhul peaks Ubuntus olema openconnect'i jaoks spetsiaalne graafiline liides, kuid minul see ei töötanud. VÔib-olla on see ka parem.

Ubuntus installitakse openconnect paketihalduri kaudu.

apt install openconnect

Otse pĂ€rast installimist saab proovida VPN-iga ĂŒhenduda.

openconnect --user poxvuibr vpn.evilcorp.com

vpn.evilcorp.com on vÀljamÔeldud VPNi aadress.
poxvuibr on vÀljamÔeldud kasutajanimi.

openconnect palubab kĂŒsib parooli, mis koosneb fikseeritud osast ja Google Authenticator'i koodist, ning proovib seejĂ€rel vpn-iga ĂŒhendust luua. Kui see Ă”nnestub, palju Ă”nne, saate julgelt vaheosa vahele jĂ€tta, kus on palju vaeva, ja liikuda otse openconnect'i taustal töötamise punkti juurde. Kui see ei toimi, siis vĂ”ib jĂ€tkata. Kuigi, kui see Ă”nnestus nĂ€iteks kontori kĂŒlaliswifi kaudu, siis vĂ”ib-olla on varane rÔÔmustamine — proovige kodus sama protseduuri uuesti.

Sertifikaat

Suure tÔenÀosusega ei kÀivitu miski ning openconnect'i vÀljund nÀeb vÀlja jÀrgmiselt:

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

VPN-serveri "vpn.evilcorp.com" sertifikaadi kontrollimine ebaÔnnestus.
PÔhjus: allkirjaandjat ei leitud
Kuna usaldada seda serverit tulevikus, lisage see vÔib-olla oma kÀsureale:
    --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
Sisestage 'jah', et aktsepteerida, 'ei', et katkestada; miski muu, et vaadata: fgets (stdin): Operatsioon jÀtkub praegu.

Ühelt poolt on see ebameeldiv, kuna VPN-iga ĂŒhendust ei saanud, kuid teisalt on pĂ”hjus, kuidas seda probleemi lahendada, pĂ”himĂ”tteliselt arusaadav.

Siin server saatis meile sertifikaadi, mille alusel on vĂ”imalik kindlaks teha, et ĂŒhendus toimub just kohaliku ettevĂ”tte serveriga, mitte kellegi pahatahtliku petisega, ja sĂŒsteemile pole see sertifikaat teada. SeetĂ”ttu ei suuda ta kontrollida, kas server on autentne vĂ”i mitte. Ja seetĂ”ttu lĂ”petab ta igaks juhuks tegevuse.

Kuna openconnect peab siiski serveriga ĂŒhenduma, tuleb talle selgelt öelda, milline sertifikaat VPN-serverilt peab tulema, kasutades vĂ”tit —servercert.

Ja et teada saada, millise sertifikaadi server meile saatis, saame seda otse openconnecti vĂ€ljatrĂŒkist. Just sellest osast:

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

Sellise kĂ€suga saab proovida uuesti ĂŒhenduda.

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

VĂ”ib-olla nĂŒĂŒd toimib, siis vĂ”ib edasi minna. Aga mulle isiklikult nĂ€itas Ubuntu seda sĂ”numit sellisel kujul.

POST https://vpn.evilcorp.com/
Ühendatud 777.777.777.777:443
SSL-i lÀbirÀÀkimised vpn.evilcorp.com-ga
Serveri sertifikaadi kontrollimine ebaÔnnestus: allkirja leidmata
Ühendatud HTTPS-is vpn.evilcorp.com
XML POST on lubatud
Palun sisestage oma kasutajanimi ja parool.
POST https://vpn.evilcorp.com/
Sai CONNECT vastuse: HTTP/1.1 200 OK
CSTP ĂŒhendatud. DPD 300, Keepalive 30
DTLS seadistamine ebaÔnnestus; kasutades selle asemel SSL-i
Ühendatud kui 192.168.333.222, kasutades SSL-i
NOSSSSSHHHHHHHDDDDD
3
NOSSSSSHHHHHHHDDDDD
3
RTNETLINK vastused: Fail eksisteerib
/etc/resolvconf/update.d/libc: Hoiatust: /etc/resolv.conf ei ole sĂŒmboolne link /run/resolvconf/resolv.conf-ile

/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 lahendab, aga sinna ei saa siseneda. Aadressid nagu jira.evilcorp.com ei lahene ĂŒldse.

Mis siin juhtus, ei ole mulle selge. Kuid eksperiment nÀitab, et kui lisada /etc/resolv.conf faili rida

nameserver 192.168.430.534

siis hakkavad aadressid VPN-i sees maagiliselt lahenduma ja nendega saab liikuda, st et see, mida kasutatakse aadresside lahendamiseks, vaatab just nimelt /etc/resolv.conf, mitte kuskile mujale.

Et VPN-iga ĂŒhendus on olemas ja see töötab, saab veenduda ka ilma muudatusteta /etc/resolv.conf, piisab, kui sisestada brauserisse mitte sĂŒmboolne ressursi nimi VPN-ist, vaid selle IP-aadress

KokkuvÔttes on kaks probleemi

  • VPN-i ĂŒhendamisel ei vĂ”eta tema DNS-i kasutusele
  • kogu liiklus lĂ€heb lĂ€bi VPN-i, mis ei luba interneti kasutada

Mida teha, rÀÀgin nĂŒĂŒd, aga kĂ”igepealt veidi automatiseerimisest.

Automaatne fikseeritud parooli osa sisestamine

Seni olete tÔenÀoliselt juba oma parooli sisestanud vÀhemalt viis korda ja see protsess on teid uudistest vÀsitanud. Esiteks, kuna parool on pikk, ja teiseks, kuna sisestamisel tuleb mahtuda fikseeritud ajavahemikku.

Kahjuks ei jÔudnud probleemi lÔplik lahendus artiklisse, kuid saate teha nii, et fikseeritud parooli osa ei peaks mitu korda sisestama.

Oletame, et fikseeritud parooli osa on fixedPassword ja Google Authenticator'i osa on 567 987. Kogu parooli, openconnect, saab edastada tavalise sisendiga, kasutades argumenti —passwd-on-stdin.

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

NĂŒĂŒd saab pidevalt naasta viimati sisestatud kĂ€su juurde ja vahetada seal ainult Google Authenticator'i osa.

Korporatiivne VPN ei luba internetti surfata.

Üldiselt ei ole vĂ€ga mugav, et Habrisse minemiseks peab kasutada eraldi arvutit. Stack Overflow'ist kopeerimise vĂ”imaluse puudumine vĂ”ib töö tĂ€ielikult seiskada, seega tuleb midagi teha.

Peab kuidagi organiseerima, et kui on vaja ressursse sisemisest vĂ”rgust kĂŒlastada, siis Linux kasutaks VPN-i, ja kui on vaja Habrisse siseneda — siis internetti.

OpenConnect, pĂ€rast kĂ€ivitamist ja VPN-iga ĂŒhenduse loomist, kĂ€ivitab spetsiaalse skripti, mis asub aadressil /usr/share/vpnc-scripts/vpnc-script. Skripti sisendiks on mĂ”ned muutujad, mille pĂ”hjal ta seadistab VPN-i. Kahjuks ei suutnud ma aru saada, kuidas jagada liiklust firma VPN-i ja muu interneti vahel sisseehitatud skripti abil.

Ilmselt on just selliste jaoks nagu mina vÀlja töötatud tööriist vpn-slice, mis vÔimaldab suunata liiklust kahe kanali kaudu ilma liigse vaevata. Noh, tantsida tuleb, aga ƥamaan olema ei pea.

Liikluse jagamine vpn-slice'i abil

Esiteks tuleb installida vpn-slice, selle osas tuleb iseseisvalt hakkama saada. Kui kommentaarides tekib kĂŒsimusi, kirjutan selle kohta eraldi postituse. Kuid see on tavaline programm Pythonis, seega ei tohiks raskusi olla. Mina installisin selle virtualenvi abil.

SeejĂ€rel tuleb tööriista rakendada, kasutades lippu —script, mÀÀrates openconnect, et kasutada vpn-slice standardse skripti asemel.

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

—scripti antakse string kĂ€sust, mis tuleb kutsuda vĂ€lja skripti asemel. ./bin/vpn-slice — tee tĂ€idetava faili vpn-slice juurde, 192.168.430.0/24 — aadresside mask, mille kaudu tuleb vpn-is minna. Siin mĂ”eldakse, et kui aadress algab 192.168.430 — siis tuleb seda aadressi otsida vpn-i seest.

NĂŒĂŒd peaks olukord olema peaaegu normaalne. Peaaegu. NĂŒĂŒd on vĂ”imalik pÀÀseda Habrisse ja sisevĂ”rgu ressurssidesse IP kaudu, kuid ei saa sisevĂ”rgu ressurssidesse siseneda sĂŒmboolse nime kaudu. Kui mÀÀrate hosts failis sĂŒmboolse nime ja aadressi vastavuse, peaks kĂ”ik toimima. Ja see töötab, kuni IP muutub. Linux oskab nĂŒĂŒd internetti pÀÀseda vĂ”i sisevĂ”rku siseneda sĂ”ltuvalt IP-st. Kuid aadressi mÀÀramiseks kasutatakse endiselt mitte-korporatiivset DNS-i.

Probleem vĂ”ib esineda ka sellisel kujul — tööl on kĂ”ik normaalne, aga kodus pÀÀseb sisevĂ”rgu ressurssidesse vaid IP kaudu. See on tingitud sellest, et kui oled ĂŒhendatud ettevĂ”tte Wi-Fi-iga, kasutatakse DNS-i, mis on samuti ettevĂ”tte oma, ja seal lahendatakse VPN-i kaudu sĂŒmboolseid aadresse, kuigi sellise aadressi kaudu ilma VPN-ita pÀÀseda ei saa.

Hosts faili automaatne muutmine

Kui vpn-slice viisakalt paluda, vĂ”ib ta pĂ€rast VPN-i loomist minna tema DNS-i, leida sealt vajalike ressursside IP-aadresse nende sĂŒmboolsate nimede jĂ€rgi ja kirjutada need hosts-faili. VPN-i vĂ€ljalĂŒlitamisel need aadressid hosts-ist eemaldatakse. Selleks tuleb edastada sĂŒmboolseid nimesid vpn-slice'ile argumentidena. 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.

Otsida kÔigi alamdomeenide aadresse DNS-ist, mille VPN andis

Kui aadresse sisevĂ”rgus on vĂ€he, siis lĂ€henemine hosts-faili automaatse muutmisega on tĂ€iesti toimiv. Kuid kui ressursse vĂ”rgus on palju, peate pidevalt lisama skripti ridu, nagu zoidberg.test.evilcorp.com, zoidberg — see on ĂŒks testimise seise.

Aga nĂŒĂŒd, kui me natuke aru saame, on seda vajadust vĂ”imalik kĂ”rvaldada.

Kui pÀrast VPN-i loomist vaadata /etc/hosts, vÔib nÀha sellist rida

192.168.430.534 dns0.tun0 # vpn-slice-tun0 AUTOCREATED

Ja resolv.conf-ile on lisatud uus rida. ÜhesĂ”naga, vpn-slice suudab kuidagi mÀÀrata, kus DNS-server VPN-i jaoks asub.

NĂŒĂŒd tuleb teha nii, et Linux lĂ€heks ettevĂ”tte DNS-i, et mÀÀrata IP-aadress domeeninime jaoks, mis lĂ”peb evilcorp.com, ning kui on vaja midagi muud, siis vaikimisi DNS-i.

Olen ĂŒsna kaua guugeldanud ja avastanud, et selline funktsionaalsus on Ubuntus vĂ€lja pakkuda. See tĂ€hendab, et on vĂ”imalus kasutada nimede resolvamiseks lokaalset DNS-serverit dnsmasq.

Seega on vÔimalik teha nii, et Linux lÀheb IP-aadresside pÀrast alati kohaliku DNS-serveri juurde, mis omakorda, sÔltuvalt domeeninimest, otsib IP-d vastavalt vÀlisele DNS-serverile.

KĂ”igi, mis on seotud vĂ”rkude ja vĂ”rguĂŒhendustega, haldamiseks kasutab Ubuntu NetworkManagerit, ja graafiline liides, nĂ€iteks Wi-Fi ĂŒhenduse valimiseks on lihtsalt front sellele.

Peame natuke tema konfiguratsioonides ringi vaatama.

  1. Loo fail aadressil /etc/NetworkManager/dnsmasq.d/evilcorp

address=/.evilcorp.com/192.168.430.534

Pöörake tÀhelepanu punktile evilcorp ees. See annab dnsmasq'le mÀrku, et kÔik aladomeenid evilcorp.com tuleb otsida just ettevÔtte DNS-ist.

  1. Ütle NetworkManagerile, et nimede resolveerimiseks tuleb kasutada dnsmasq'i.

network-manageri konfiguratsioon asub veebilehes /etc/NetworkManager/NetworkManager.conf. Peate sinna lisama:

[main]
dns=dnsmasq

  1. TaaskÀivitage NetworkManager

service network-manager restart

NĂŒĂŒd, pĂ€rast VPN-i ĂŒhendamist openconnect'i ja vpn-slice'i abil, mÀÀratakse IP korralikult, isegi kui sĂŒmboolseid aadresse vpnslice'i argumentidesse ei lisata.

Kuidas minna VPN-i kaudu erinevatesse teenustesse

PĂ€rast VPN-iga ĂŒhenduse loomise edukust olin paar pĂ€eva vĂ€ga Ă”nnelik, kuid seejĂ€rel selgus, et kui VPN-i ei ĂŒhendata kontori vĂ”rgust, ei tööta e-post. Tunnetus on tuttav, eks?

Meie e-post on aadressil mail.publicevilcorp.com, mis tÀhendab, et see ei lÀhe dnsmasq reegli alla ja postiserveri aadressi otsitakse avaliku DNS-i kaudu.

Aga kontoris kasutatakse ikkagi DNS-i, kus see aadress olemas on. Nii ma arvasin. Tegelikult, pÀrast dnsmasq-sse rea lisamist

address=/mail.publicevilcorp.com/192.168.430.534

situatsioon ei muutunud. IP jÀi samaks. Olin sunnitud tööle minema.

Ja juba hiljem, kui sĂŒvenesin olukorda ja natuke lahendasin probleemi, ĂŒtles ĂŒks tark inimene mulle, kuidas seda lahendada. Pidi ĂŒhenduma postiserveriga mitte lihtsalt nii, vaid lĂ€bi VPN-i.

Ma kasutan vpn-slice'i, et VPN-i kaudu sirvida aadresse, mis algavad 192.168.430. Algselt ei ole mitte ainult postiserveri sĂŒmboolne aadress evilcorp alamdomeen, vaid ka selle IP-aadress ei alga 192.168.430. Ja loomulikult ei luba ta kedagi oma ĂŒldvĂ”rgustikku.

Kuna Linux peab postiserverisse ja VPN-i ĂŒhenduma, tuleb lisada see vpn-slice'i. Oletame, et postiserveri aadress on 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 

VPN-i kĂ€ivitamise skript ĂŒhe argumendiga

KÔik see on muidugi pigem ebamugav. Jah, teksti vÔib salvestada faili ja kopeerida terminali, mitte sisestada kÀsitsi, kuid see pole ikkagi meeldiv. Protsessi lihtsustamiseks saab kÀsu mÀhkida skripti, mis asub PATH-is. Siis peab sisestama ainult Google Authenticatorist saadud koodi.

#!/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 skript panna connect~evilcorp~ kausta, saab lihtsalt kirjutada terminalis

connect_evil_corp 567987

Kuid nĂŒĂŒd peab siiski hoidma avatud terminali, kus openconnect on kĂ€ivitunud.

openconnect'i taustal kÀivitamine

Õnneks on openconnecti autorid meie eest hoolitsenud ja lisanud programmile spetsiaalse vĂ”tme —background, mis vĂ”imaldab programmil pĂ€rast kĂ€ivitamist taustal töötada. Kui selle nii kĂ€ivitada, saab konsooli pĂ€rast kĂ€ivitamist 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 vaid arusaamatu, kuhu logid lĂ€hevad. Logisid me tegelikult eriti ei vaja, aga kes teab. Openconnect vĂ”ib need suunata syslog'i, kus nad sĂ€ilivad puutumatuna ja turvaliselt. Seda tuleks lisada kĂ€su vĂ”tmena —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 ongi, et openconnect töötab kusagil seal taustal ja ei sega kedagi, kuid kuidas seda peatada, ei ole selge. Loomulikult saab filtreerida ps vĂ€ljundit grepiga ja otsida protsessi, mille nimes on openconnect, kuid see on natuke tĂŒĂŒtu. AitĂ€h autoritele, kes on ka sellele mĂ”elnud. Openconnect'is on vĂ”tme —pid-file, millega saab openconnect'ile öelda, et see kirjutaks oma protsessi ID faili.

#!/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 protesteerib, kuid ei viska tÔrget. Kui faili pole, siis ei juhtu ka midagi hirmsat, nii et vÔib julgelt protsessi esimeses skripti real tappa.

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 vĂ”ite arvuti sisse lĂŒlitada, avada konsooli ja kĂ€ivitada kĂ€sk, edastades sellele koodi Google Authenticatorist. Konsooli saab hiljem kinni panna.

Ilma vpn-slice'ita. Ilma jÀrelsÔnata

MĂ”ista, kuidas elada ilma vpn-slice'ita, osutus vĂ€ga keeruliseks. Pidin palju lugema ja guugeldama. Õnneks, kui olin probleemiga nii kaua tegelenud, loeti tehnilisi juhendeid ja isegi man openconnect'i nagu kaasahaaravaid romaane.

Tulemuseks selgitasin, et vpn-slice, nagu ka originaalskript, muudab marsruuditaine, et vÔrke jagada.

Marsruuditabel

See on lihtsustatult öeldes selline tabel, mille esimeses veerus on see, kust peaks algama aadress, millega Linux tahab minna, ja teises, millise vÔrguaadapti kaudu seda aadressi lÀbida. Tegelikult on veerge rohkem, kuid see ei muuda sisu.

Marsruuditabeli nÀgemiseks peate kÀivitama kÀsu 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, kuidas minna, et saata sÔnum teatud aadressile. Esimesena kÀib kirjeldus, kust aadress peaks algama. Selleks, et mÔista, mis tÀhendab 192.168.0.0/16, tuleks otsida, mis on IP-aadressi mask. PÀrast dev jÀrgneb adaptori nimi, kuhu sÔnum saata.

VPN jaoks on Linux loonud virtuaalse adapteri — tun0. Rida, mis tagab, et kĂ”ik aadressid, mis algavad 192.168, voolavad lĂ€bi selle, on

192.168.0.0/16 dev tun0 scope link 

Samuti saab vaadata praegust marsruuditabeli seisundit kĂ€su abil route -n (IP-aadressid on oskuslikult anonĂŒĂŒmsed) See kĂ€sk annab tulemused teises vormis ja on tegelikult vananenud, kuid selle vĂ€ljundit kohatakse sageli juhendites internetis ning tuleb osata seda lugeda.

IP-aadressi marsruudi algust saab mĂ”ista siht-kohtade ja Genmaski kombinatsiooni kaudu. Need IP-aadressi osad, millele Genmaskis vastavad numbrid 255, arvestatakse, ning need, kus on 0 — mitte. Seega sihtkoht 192.168.0.0 ja Genmask 255.255.255.0 tĂ€hendab, et kui aadress algab 192.168.0, siis pĂ€ring toimub selle marsruudi kaudu. Kui sihtkoht on 192.168.0.0, aga Genmask 255.255.0.0, siis selle marsruudi kaudu liikuvad pĂ€ringud aadressidele, mis algavad 192.168.

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

Enne VPN-i sisselĂŒlitamist oli olukord selline

route -n 

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

PÀrast openconnecti kÀivitamist ilma vpn-sliceta nÀgi see vÀlja selline

route -n

Kernel IP routing table
Sihtkoht       LĂŒliti         Genmask         Lipud Meetod Viide Kasutaja 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 kÀivitamist koos vpn-slice'iga, on see nii.

Kernel IP routing table
Sihtkoht       LĂŒliti         Genmask         Lipud Meetod Viide Kasutaja 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 kasutada, siis openconnect ĂŒtleb otseselt, et kĂ”ikidele aadressidele, vĂ€lja arvatud eraldi nĂ€idatud, tuleb minna 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 nĂ€idatud veel ĂŒks tee, mida tuleb kasutada, kui aadress, mille kaudu Linux pĂŒĂŒab minna, ei vasta ĂŒhele maskidest tabelis.

0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0

Siin on juba öeldud, et sellisel juhul tuleb minna lÀbi tavalise wifi-adapteri.

Ma arvan, et VPN-i tee kasutatakse, kuna see on marsruudi tabelis esimene.

Ja teoreetiliselt, kui eemaldada see vaikimisi tee marsruudi tabelist, siis koos dnsmasq-iga peaks openconnect tagama normaalse töö.

Ma proovisin

route del default

Ja kÔik töötas.

Soodustused pÀringute suunamiseks meiliserverisse ilma vpn-slice'ita

Aga mul on veel meiliserver aadressiga 555.555.555.555, kuhu tuleb samuti minna lÀbi vpn. Marsruut selle juurde peab ka kÀsitsi lisama.

ip route add 555.555.555.555 via dev tun0

Ja nĂŒĂŒd kĂ”ik on korras. Nii et vpn-slice'ita saab ka hakkama, aga peab teadma, mida teed. MĂ”tlen nĂŒĂŒd, kas viimasel real originaalskripti openconnect'i puhul lisada vaikimisi marsruudi kustutamine ja marsruudi lisamine meiliserverisse pĂ€rast vpn-iga ĂŒhendamist, lihtsalt selleks, et mu jalgratta liikuvad osad oleksid vĂ€hem.

VĂ”ib-olla piisab kellegile VPN-i seadistamise mĂ”istmiseks sellest jĂ€relsĂ”nast. Kuid samal ajal kui ma pĂŒĂŒdsin aru saada, mida ja kuidas teha, lugesin piisavalt palju selliseid juhendeid, mis töötavad autori jaoks, kuid mingil pĂ”hjusel ei töötanud minu jaoks, ja otsustasin siia lisada kĂ”ik leitud tĂŒkid. Oleksin sellisest abist vĂ€ga rÔÔmus.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster