Vai vÄlaties izmantot Linux darbÄ, bet jÅ«su uzÅÄmuma VPN to neļaus? Tad Å”is raksts var palÄ«dzÄt, lai gan tas nav droÅ”i. Jau iepriekÅ” vÄlos brÄ«dinÄt, ka labi nesaprotu tÄ«kla administrÄÅ”anas jautÄjumus, tÄpÄc, iespÄjams, ka visu izdarÄ«ju nepareizi. No otras puses, iespÄjams, ka es varu uzrakstÄ«t ceļvedi tÄ, lai tas bÅ«tu saprotams parastajiem cilvÄkiem, tÄpÄc iesaku to izmÄÄ£inÄt.
RakstÄ ir daudz nevajadzÄ«gas informÄcijas, taÄu bez Ŕīm zinÄÅ”anÄm es nebÅ«tu varÄjis atrisinÄt problÄmas, kas man negaidÄ«ti parÄdÄ«jÄs ar VPN iestatÄ«Å”anu. Es domÄju, ka ikvienam, kurÅ” mÄÄ£inÄs izmantot Å”o rokasgrÄmatu, bÅ«s problÄmas, kuras man nebija, un es ceru, ka Ŕī papildu informÄcija palÄ«dzÄs atrisinÄt Ŕīs problÄmas paÅ”as no sevis.
LielÄkÄ daļa Å”ajÄ rokasgrÄmatÄ izmantoto komandu ir jÄpalaiž, izmantojot sudo, kas Ä«suma labad ir noÅemta. Paturi prÄtÄ.
LielÄkÄ daļa IP adreÅ”u ir nopietni aizsegtas, tÄdÄļ, ja redzat adresi, piemÄram, 435.435.435.435, tur ir jÄbÅ«t kÄdai parastai IP adresei, kas ir raksturÄ«ga jÅ«su gadÄ«jumam.
Man ir Ubuntu 18.04, bet es domÄju, ka ar nelielÄm izmaiÅÄm ceļvedi var piemÄrot citiem izplatÄ«jumiem. TomÄr Å”ajÄ tekstÄ Linux == Ubuntu.
Cisco Connect
Tie, kas izmanto operÄtÄjsistÄmu Windows vai MacOS, var izveidot savienojumu ar mÅ«su korporatÄ«vo VPN, izmantojot Cisco Connect, kuram ir jÄnorÄda vÄrtejas adrese un ikreiz, kad izveidojat savienojumu, jÄievada parole, kas sastÄv no fiksÄtas daļas un Google autentifikatora Ä£enerÄta koda.
Linux gadÄ«jumÄ es nevarÄju palaist Cisco Connect, bet man izdevÄs Google ieteikums izmantot openconnect, kas Ä«paÅ”i izstrÄdÄts, lai aizstÄtu Cisco Connect.
Atveriet savienojumu
TeorÄtiski Ubuntu ir Ä«paÅ”s grafiskais interfeiss openconnect, taÄu tas man nedarbojÄs. VarbÅ«t tas ir uz labu.
Ubuntu programmÄ openconnect ir instalÄts no pakotÅu pÄrvaldnieka.
apt install openconnect
TÅ«lÄ«t pÄc instalÄÅ”anas varat mÄÄ£inÄt izveidot savienojumu ar VPN
openconnect --user poxvuibr vpn.evilcorp.com
vpn.evilcorp.com ir fiktīva VPN adrese
poxvuibr - fiktÄ«vs lietotÄjvÄrds
openconnect lÅ«gs ievadÄ«t paroli, kas, atgÄdinÄÅ”u, sastÄv no fiksÄtas daļas un koda no Google Authenticator, un tad tas mÄÄ£inÄs izveidot savienojumu ar vpn. Ja tas darbojas, apsveicam, varat droÅ”i izlaist vidu, kas ir ļoti sÄpÄ«gi, un pÄriet uz punktu par openconnect darbÄ«bu fonÄ. Ja tas nedarbojas, varat turpinÄt. Lai gan, ja tas strÄdÄja, pieslÄdzoties, piemÄram, no viesa Wi-Fi darbÄ, tad var bÅ«t par agru priecÄties, jums vajadzÄtu mÄÄ£inÄt atkÄrtot procedÅ«ru no mÄjÄm.
SertifikÄts
PastÄv liela varbÅ«tÄ«ba, ka nekas nesÄksies, un openconnect izvade izskatÄ«sies apmÄram Å”Ädi:
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
Certificate from VPN server "vpn.evilcorp.com" failed verification.
Reason: signer not found
To trust this server in future, perhaps add this to your command line:
--servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
Enter 'yes' to accept, 'no' to abort; anything else to view: fgets (stdin): Operation now in progress
No vienas puses, tas ir nepatÄ«kami, jo nebija savienojuma ar VPN, bet, no otras puses, kÄ Å”o problÄmu novÄrst, principÄ ir skaidrs.
Å eit serveris mums atsÅ«tÄ«ja sertifikÄtu, pÄc kura mÄs varam noteikt, ka savienojums tiek izveidots ar mÅ«su dzimtÄs korporÄcijas serveri, nevis ar ļaunu krÄpnieku, un Å”is sertifikÄts sistÄmai nav zinÄms. Un tÄpÄc viÅa nevar pÄrbaudÄ«t, vai serveris ir Ä«sts vai nÄ. Un tÄpÄc katram gadÄ«jumam tas pÄrstÄj darboties.
Lai openconnect izveidotu savienojumu ar serveri, jums ir skaidri jÄnorÄda, kuram sertifikÄtam ir jÄnÄk no VPN servera, izmantojot servera atslÄgu.
Un jÅ«s varat uzzinÄt, kuru sertifikÄtu serveris mums nosÅ«tÄ«ja tieÅ”i no tÄ, ko izdrukÄja openconnect. LÅ«k, no Ŕī gabala:
To trust this server in future, perhaps add this to your command line:
--servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
Enter 'yes' to accept, 'no' to abort; anything else to view: fgets (stdin): Operation now in progress
Ar Å”o komandu varat mÄÄ£inÄt vÄlreiz izveidot savienojumu
openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr vpn.evilcorp.com
VarbÅ«t tagad tas darbojas, tad varat pÄriet uz beigÄm. Bet personÄ«gi Ubunta man parÄdÄ«ja vÄ«Ä£i Å”ÄdÄ formÄ
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
vietne habr.com atrisinÄs, taÄu jÅ«s nevarÄsit tur doties. TÄdas adreses kÄ jira.evilcorp.com vispÄr netiek atrisinÄtas.
Kas Å”eit notika, man nav skaidrs. TaÄu eksperiments parÄda, ka, pievienojot rindiÅu failam /etc/resolv.conf
nameserver 192.168.430.534
tad VPN iekÅ”ienÄ esoÅ”Äs adreses sÄks maÄ£iski atrisinÄties, un jÅ«s varat tÄs izstaigÄt, tas ir, tas, ko DNS meklÄ, lai atrisinÄtu adreses, izskatÄs Ä«paÅ”i mapÄ /etc/resolv.conf, nevis kaut kur citur.
Varat pÄrbaudÄ«t, vai ir izveidots savienojums ar VPN un tas darbojas, neveicot nekÄdas izmaiÅas failÄ /etc/resolv.conf; lai to izdarÄ«tu, pÄrlÅ«kprogrammÄ ievadiet nevis VPN resursa simbolisko nosaukumu, bet gan tÄ IP adresi.
RezultÄtÄ ir divas problÄmas
- PieslÄdzoties VPN, tÄ dns netiek uztverts
- visa trafika notiek caur VPN, kas neļauj piekļūt internetam
Es jums pateikÅ”u, ko darÄ«t tagad, bet vispirms nedaudz automatizÄcijas.
Paroles fiksÄtÄs daļas automÄtiska ievade
Å obrÄ«d jÅ«s, visticamÄk, jau esat ievadÄ«jis savu paroli vismaz piecas reizes, un Ŕī procedÅ«ra jÅ«s jau ir nogurdinÄjusi. PirmkÄrt, tÄpÄc, ka parole ir gara, un, otrkÄrt, tÄpÄc, ka ievadot ir jÄiekļaujas noteiktÄ laika periodÄ
GalÄ«gais problÄmas risinÄjums rakstÄ netika iekļauts, taÄu varat pÄrliecinÄties, ka paroles fiksÄtÄ daļa nav jÄievada daudzas reizes.
PieÅemsim, ka paroles fiksÄtÄ daļa ir FiksÄtaPassword, bet Google autentifikatora daļa ir 567 987. Visu paroli var nodot openconnect, izmantojot standarta ievadi, izmantojot argumentu --passwd-on-stdin.
echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr vpn.evilcorp.com --passwd-on-stdin
Tagad varat pastÄvÄ«gi atgriezties pie pÄdÄjÄs ievadÄ«tÄs komandas un tajÄ mainÄ«t tikai daļu no Google autentifikatora.
KorporatÄ«vais VPN neļauj sÄrfot internetÄ.
KopumÄ tas nav Ä«paÅ”i neÄrti, ja jums ir jÄizmanto atseviŔķs dators, lai dotos uz Habru. NespÄja kopÄt-ielÄ«mÄt no stackoverfow parasti var paralizÄt darbu, tÄpÄc kaut kas ir jÄdara.
Mums tas ir kaut kÄ jÄorganizÄ tÄ, lai tad, kad jums ir nepiecieÅ”ams piekļūt resursam no iekÅ”ÄjÄ tÄ«kla, Linux pÄriet uz VPN, bet, kad jums ir jÄiet uz Habr, tas pÄriet uz internetu.
openconnect pÄc palaiÅ”anas un savienojuma ar vpn izveidoÅ”anas izpilda Ä«paÅ”u skriptu, kas atrodas mapÄ /usr/share/vpnc-scripts/vpnc-script. Daži mainÄ«gie tiek nodoti skriptam kÄ ievade, un tas konfigurÄ VPN. DiemžÄl es nevarÄju izdomÄt, kÄ sadalÄ«t trafika plÅ«smas starp korporatÄ«vo VPN un pÄrÄjo internetu, izmantojot vietÄjo skriptu.
AcÄ«mredzot vpn-slice utilÄ«ta tika izstrÄdÄta Ä«paÅ”i tÄdiem cilvÄkiem kÄ es, kas ļauj nosÅ«tÄ«t trafiku pa diviem kanÄliem, nedejojot ar tamburÄ«nu. Nu, tas ir, jums bÅ«s jÄdejo, bet jums nav jÄbÅ«t Å”amanim.
Satiksmes atdalīŔana, izmantojot vpn-slice
PirmkÄrt, jums bÅ«s jÄinstalÄ vpn-slice, jums tas bÅ«s jÄizdomÄ paÅ”am. Ja komentÄros ir jautÄjumi, par to uzrakstÄ«Å”u atseviŔķu ierakstu. Bet Ŕī ir parasta Python programma, tÄpÄc nevajadzÄtu rasties grÅ«tÄ«bÄm. Es instalÄju, izmantojot virtualenv.
Un tad ir jÄpiemÄro utilÄ«ta, izmantojot slÄdzi -script, kas norÄda, lai atvÄrtu savienojumu, ka standarta skripta vietÄ ir jÄizmanto vpn-slice
echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin
--script "./bin/vpn-slice 192.168.430.0/24 " vpn.evilcorp.com
--script tiek nodota virkne ar komandu, kas jÄizsauc skripta vietÄ. ./bin/vpn-slice ā ceļŔ uz vpn-slice izpildÄmo failu 192.168.430.0/24 ā adreÅ”u maska, uz kuru jÄdodas vpn. Å eit mÄs domÄjam, ka, ja adrese sÄkas ar 192.168.430, tad resurss ar Å”o adresi ir jÄmeklÄ VPN iekÅ”ienÄ.
SituÄcijai tagad vajadzÄtu bÅ«t gandrÄ«z normÄlai. GandrÄ«z. Tagad jÅ«s varat doties uz Habr un jÅ«s varat doties uz uzÅÄmuma iekÅ”Äjo resursu ar ip, bet jÅ«s nevarat doties uz uzÅÄmuma iekÅ”Äjo resursu ar simbolisku nosaukumu. Ja saimniekos norÄdÄt atbilstÄ«bu starp simbolisko nosaukumu un adresi, visam vajadzÄtu darboties. Un strÄdÄ, kamÄr mainÄs ip. Linux tagad var piekļūt internetam vai iekÅ”tÄ«klam atkarÄ«bÄ no IP. Bet adreses noteikÅ”anai joprojÄm tiek izmantots nekorporatÄ«vs DNS.
ProblÄma var izpausties arÄ« Å”ÄdÄ formÄ - darbÄ viss ir kÄrtÄ«bÄ, bet mÄjÄs var piekļūt tikai iekÅ”Äjiem korporatÄ«vajiem resursiem caur IP. Tas ir tÄpÄc, ka, izveidojot savienojumu ar korporatÄ«vo Wi-Fi, tiek izmantots arÄ« korporatÄ«vais DNS, un tajÄ tiek atrisinÄtas simboliskÄs adreses no VPN, neskatoties uz to, ka joprojÄm nav iespÄjams nokļūt uz Å”Ädu adresi, neizmantojot VPN.
AutomÄtiska saimniekdatora faila modifikÄcija
Ja vpn-slice pajautÄ pieklÄjÄ«gi, tad pÄc VPN pacelÅ”anas tas var aiziet uz savu DNS, atrast tur nepiecieÅ”amo resursu IP adreses pÄc to simboliskajiem nosaukumiem un ievadÄ«t hostos. PÄc VPN izslÄgÅ”anas Ŕīs adreses tiks noÅemtas no saimniekiem. Lai to izdarÄ«tu, vpn-slice kÄ argumenti ir jÄnodod simbolisks nosaukumi. KÄ Å”is.
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
Tagad visam vajadzÄtu darboties gan birojÄ, gan pludmalÄ.
MeklÄjiet visu apakÅ”domÄnu adreses VPN norÄdÄ«tajÄ DNS
Ja tÄ«klÄ ir maz adreÅ”u, resursdatora faila automÄtiskÄs modificÄÅ”anas pieeja darbojas diezgan labi. Bet, ja tÄ«klÄ ir daudz resursu, jums pastÄvÄ«gi bÅ«s jÄpievieno rindas, piemÄram, zoidberg.test.evilcorp.com. Zoidberg ir viena testa stenda nosaukums.
Bet tagad, kad mÄs mazliet saprotam, kÄpÄc Å”o vajadzÄ«bu var novÄrst.
Ja pÄc VPN palielinÄÅ”anas skatÄties /etc/hosts, varat redzÄt Å”o rindiÅu
192.168.430.534 dns0.tun0 # vpn-slice-tun0 AUTOMÄTISVEIDOTS
Un failam resolv.conf tika pievienota jauna rinda. ÄŖsÄk sakot, vpn-slice kaut kÄdÄ veidÄ noteica, kur atrodas vpn DNS serveris.
Tagad mums ir jÄpÄrliecinÄs, ka, lai uzzinÄtu IP adresi domÄna vÄrdam, kas beidzas ar evilcorp.com, Linux pÄriet uz korporatÄ«vo DNS un, ja nepiecieÅ”ams kaut kas cits, tad uz noklusÄjuma.
Es diezgan ilgu laiku meklÄju Google un atklÄju, ka Å”Äda funkcionalitÄte ir pieejama Ubuntu. Tas nozÄ«mÄ iespÄju izmantot vietÄjo DNS serveri dnsmasq, lai atrisinÄtu nosaukumus.
Tas ir, jÅ«s varat pÄrliecinÄties, ka Linux vienmÄr dodas uz lokÄlo DNS serveri pÄc IP adresÄm, kas savukÄrt atkarÄ«bÄ no domÄna nosaukuma meklÄs IP attiecÄ«gajÄ ÄrÄjÄ DNS serverÄ«.
Lai pÄrvaldÄ«tu visu, kas saistÄ«ts ar tÄ«kliem un tÄ«kla savienojumiem, Ubuntu izmanto NetworkManager, un grafiskais interfeiss, piemÄram, Wi-Fi savienojumu izvÄlei, ir tikai tÄ priekÅ”gals.
Mums vajadzÄs kÄpt tÄ konfigurÄcijÄ.
- Izveidojiet failu mapÄ /etc/NetworkManager/dnsmasq.d/evilcorp
adrese=/.evilcorp.com/192.168.430.534
PievÄrsiet uzmanÄ«bu punktam evilcorp priekÅ”Ä. Tas signalizÄ dnsmasq, ka visi evilcorp.com apakÅ”domÄni ir jÄmeklÄ korporatÄ«vajÄ DNS.
- PastÄstiet NetworkManager, lai vÄrda izŔķirÅ”anai izmantotu dnsmasq
TÄ«kla pÄrvaldnieka konfigurÄcija atrodas mapÄ /etc/NetworkManager/NetworkManager.conf Tur jÄpievieno:
[galvenais] dns=dnsmasq
- RestartÄjiet programmu NetworkManager
service network-manager restart
Tagad, pÄc savienojuma izveides ar VPN, izmantojot openconnect un vpn-slice, IP tiks noteikts normÄli, pat ja vpnslice argumentiem nepievienosiet simboliskas adreses.
KÄ piekļūt atseviŔķiem pakalpojumiem, izmantojot VPN
PÄc tam, kad izdevÄs izveidot savienojumu ar VPN, divas dienas biju ļoti priecÄ«gs, un tad izrÄdÄ«jÄs, ka, ja pieslÄdzos VPN no Ärpus biroja tÄ«kla, tad pasts nedarbojas. Simptoms ir pazÄ«stams, vai ne?
MÅ«su pasts atrodas vietnÄ mail.publicevilcorp.com, kas nozÄ«mÄ, ka uz to neattiecas dnsmasq noteikums, un pasta servera adrese tiek meklÄta, izmantojot publisko DNS.
Nu, birojs joprojÄm izmanto DNS, kurÄ ir Ŕī adrese. TÄ es domÄju. Faktiski pÄc rindas pievienoÅ”anas dnsmasq
address=/mail.publicevilcorp.com/192.168.430.534
situÄcija nemaz nav mainÄ«jusies. ip palika tas pats. Man bija jÄiet uz darbu.
Un tikai vÄlÄk, kad es iedziļinÄjos situÄcijÄ un nedaudz sapratu problÄmu, viens gudrs cilvÄks man teica, kÄ to atrisinÄt. Bija nepiecieÅ”ams izveidot savienojumu ar pasta serveri ne tikai tÄ, bet caur VPN
Es izmantoju vpn-slice, lai pÄrietu caur VPN uz adresÄm, kas sÄkas ar 192.168.430. Un pasta serverim ir ne tikai simboliska adrese, kas nav evilcorp apakÅ”domÄns, bet arÄ« nav IP adreses, kas sÄkas ar 192.168.430. Un, protams, viÅÅ” neļauj nevienam no vispÄrÄjÄ tÄ«kla ierasties pie viÅa.
Lai Linux varÄtu iet caur VPN un pasta serveri, jums tas jÄpievieno arÄ« vpn-slice. PieÅemsim, ka pasta sÅ«tÄ«tÄja adrese ir 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
Skripts VPN palielinÄÅ”anai ar vienu argumentu
Tas viss, protams, nav Ä«paÅ”i Ärti. JÄ, jÅ«s varat saglabÄt tekstu failÄ un kopÄt un ielÄ«mÄt to konsolÄ, nevis rakstÄ«t ar roku, taÄu tas joprojÄm nav Ä«paÅ”i patÄ«kami. Lai atvieglotu procesu, komandu varat ietÄ«t skriptÄ, kas atradÄ«sies mapÄ PATH. Un tad jums bÅ«s jÄievada tikai kods, kas saÅemts no Google autentifikatora
#!/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
Ja ievietojat skriptu mapÄ connect~evilcorp~, varat vienkÄrÅ”i rakstÄ«t konsolÄ
connect_evil_corp 567987
Bet tagad jums joprojÄm ir jÄpatur atvÄrta konsole, kurÄ darbojas openconnect kaut kÄdu iemeslu dÄļ
FonÄ darbojas openconnect
Par laimi, openconnect autori parÅ«pÄjÄs par mums un pievienoja programmai speciÄlu atslÄgu -background, kas liek programmai pÄc palaiÅ”anas darboties fonÄ. Ja palaižat to Å”Ädi, pÄc palaiÅ”anas varat aizvÄrt konsoli
#!/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
Tagad vienkÄrÅ”i nav skaidrs, kur baļķi nonÄk. KopumÄ mums nav Ä«sti vajadzÄ«gi apaļkoki, taÄu jÅ«s nekad to nevarat zinÄt. openconnect var tos novirzÄ«t uz syslog, kur tie tiks glabÄti droŔībÄ. komandai jÄpievieno slÄdzis ā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
Un tÄ, izrÄdÄs, ka openconnect darbojas kaut kur fonÄ un nevienu netraucÄ, taÄu nav skaidrs, kÄ to apturÄt. Tas ir, jÅ«s, protams, varat filtrÄt ps izvadi, izmantojot grep, un meklÄt procesu, kura nosaukumÄ ir ietverts openconnect, taÄu tas ir kaut kÄ nogurdinoÅ”i. Paldies autoriem, kuri arÄ« par to domÄja. Openconnect ir atslÄga -pid-fails, ar kuru varat uzdot openconnect ierakstÄ«t failÄ tÄ procesa identifikatoru.
#!/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
Tagad jÅ«s vienmÄr varat nogalinÄt procesu ar komandu
kill $(cat ~/vpn-pid)
Ja procesa nav, kill nolÄdÄs, bet neizmetÄ«s kļūdu. Ja fails tur nav, tad arÄ« nekas slikts nenotiks, tÄpÄc varat droÅ”i nogalinÄt procesu skripta pirmajÄ rindÄ.
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
Tagad varat ieslÄgt datoru, atvÄrt konsoli un palaist komandu, nosÅ«tot tai kodu no Google autentifikatora. PÄc tam konsoli var pienaglot.
Bez VPN sadaļas. PÄcvÄrda vietÄ
IzrÄdÄ«jÄs ļoti grÅ«ti saprast, kÄ dzÄ«vot bez VPN ŔķÄles. Man nÄcÄs daudz lasÄ«t un googlÄt. Par laimi, tik daudz laika pavadot problÄmas risinÄÅ”anai, tehniskÄs rokasgrÄmatas un pat man openconnect lasÄs kÄ aizraujoÅ”i romÄni.
RezultÄtÄ es atklÄju, ka vpn-slice, tÄpat kÄ vietÄjais skripts, pÄrveido marÅ”rutÄÅ”anas tabulu, lai atdalÄ«tu tÄ«klus.
MarÅ”rutÄÅ”anas tabula
VienkÄrÅ”i sakot, Ŕī ir tabula pirmajÄ kolonnÄ, kurÄ ir norÄdÄ«ts, ar ko jÄsÄkas adresei, kuru vÄlas izmantot Linux, un otrajÄ kolonnÄ, kuram tÄ«kla adapterim Å”ajÄ adresÄ jÄiet cauri. PatiesÄ«bÄ runÄtÄju ir vairÄk, bet bÅ«tÄ«bu tas nemaina.
Lai skatÄ«tu marÅ”rutÄÅ”anas tabulu, ir jÄpalaiž komanda 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
Å eit katra rinda ir atbildÄ«ga par to, kur jums jÄiet, lai nosÅ«tÄ«tu ziÅojumu uz kÄdu adresi. Pirmais ir apraksts, kur adresei jÄsÄkas. Lai saprastu, kÄ noteikt, ka 192.168.0.0/16 nozÄ«mÄ, ka adresei jÄsÄkas ar 192.168, google jÄpameklÄ, kas ir IP adreses maska. PÄc dev ir tÄ adaptera nosaukums, kuram jÄnosÅ«ta ziÅojums.
VPN Linux izveidoja virtuÄlo adapteri - tun0. LÄ«nija nodroÅ”ina, ka caur to iet trafika visÄm adresÄm, kas sÄkas ar 192.168
192.168.0.0/16 dev tun0 scope link
Varat arÄ« apskatÄ«t marÅ”rutÄÅ”anas tabulas paÅ”reizÄjo stÄvokli, izmantojot komandu marÅ”ruts -n (IP adreses ir gudri anonimizÄtas) Å Ä« komanda rada rezultÄtus citÄ formÄ un parasti ir novecojusi, taÄu tÄs izvade bieži ir atrodama rokasgrÄmatÄs internetÄ, un jums ir jÄspÄj to izlasÄ«t.
Kur jÄsÄkas marÅ”ruta IP adresei, var saprast no kolonnu Destination un Genmask kombinÄcijas. Tiek Åemtas vÄrÄ tÄs IP adreses daļas, kas atbilst skaitļiem 255 GenmaskÄ, bet tÄs, kurÄs ir 0, netiek Åemtas vÄrÄ. Tas nozÄ«mÄ, ka galamÄrÄ·a 192.168.0.0 un Genmask 255.255.255.0 kombinÄcija nozÄ«mÄ, ka, ja adrese sÄkas ar 192.168.0, tad pieprasÄ«jums tai tiks nosÅ«tÄ«ts pa Å”o marÅ”rutu. Un, ja galamÄrÄ·is 192.168.0.0, bet Genmask 255.255.0.0, tad pieprasÄ«jumi uz adresÄm, kas sÄkas ar 192.168, tiks nosÅ«tÄ«ti pa Å”o marÅ”rutu.
Lai noskaidrotu, ko vpn-slice patiesÄ«bÄ dara, es nolÄmu apskatÄ«t tabulu stÄvokļus pirms un pÄc
Pirms VPN ieslÄgÅ”anas tas bija Å”Ädi
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Äc openconnect izsaukÅ”anas bez vpn-slices tas kļuva Å”Äds
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
Un pÄc openconnect izsaukÅ”anas kopÄ ar vpn-slice kÄ Å”is
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
Redzams, ka, ja neizmanto vpn-slice, tad openconnect tieÅ”i raksta, ka visÄm adresÄm, izÅemot Ä«paÅ”i norÄdÄ«tÄs, ir jÄpiekļūst caur vpn.
TieŔi Ŕeit:
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 tun0
Tur blakus uzreiz norÄdÄ«ts cits ceļŔ, kas jÄizmanto, ja adrese, pa kuru Linux mÄÄ£ina iziet, neatbilst nevienai maskai no tabulas.
0.0.0.0 222.222.222.1 0.0.0.0 UG 600 0 0 wlp3s0
Å eit jau ir rakstÄ«ts, ka Å”ajÄ gadÄ«jumÄ ir jÄizmanto standarta Wi-Fi adapteris.
Es uzskatu, ka VPN ceļŔ tiek izmantots, jo tas ir pirmais marÅ”rutÄÅ”anas tabulÄ.
Un teorÄtiski, ja jÅ«s noÅemat Å”o noklusÄjuma ceļu no marÅ”rutÄÅ”anas tabulas, tad kopÄ ar dnsmasq openconnect vajadzÄtu nodroÅ”inÄt normÄlu darbÄ«bu.
ES mÄÄ£inÄju
route del default
Un viss strÄdÄja.
PieprasÄ«jumu marÅ”rutÄÅ”ana uz pasta serveri bez vpn-slice
Bet man ir arÄ« pasta serveris ar adresi 555.555.555.555, kuram arÄ« ir jÄpiekļūst caur VPN. MarÅ”ruts uz to arÄ« jÄpievieno manuÄli.
ip route add 555.555.555.555 via dev tun0
Un tagad viss ir kÄrtÄ«bÄ. TÄtad jÅ«s varat iztikt bez vpn-slice, bet jums ir labi jÄzina, ko jÅ«s darÄt. Tagad es domÄju pievienot vietÄjÄ openconnect skripta pÄdÄjai rindai noklusÄjuma marÅ”ruta noÅemÅ”anu un pasta sÅ«tÄ«tÄja marÅ”ruta pievienoÅ”anu pÄc savienojuma ar VPN, lai manÄ velosipÄdÄ bÅ«tu mazÄk kustÄ«go daļu.
IespÄjams, ar Å”o pÄcvÄrdu pietiktu, lai kÄds saprastu, kÄ izveidot VPN. Bet, kamÄr es mÄÄ£inÄju saprast, ko un kÄ darÄ«t, es izlasÄ«ju diezgan daudz Å”Ädu ceļvežu, kas autoram der, bet man nez kÄpÄc neder, un nolÄmu pievienot Å”eit visus atrastos gabalus. Es ļoti priecÄtos par ko tÄdu.
Avots: www.habr.com