Diiwaanku wuxuu muujinayaa ikhtiyaarka uu serverku riixay, tunnelku wuu shaqeynayaa, magacyada gudahana wali way guuldareystaan. Su'aal toos ah oo xalliyaha loo diray ayaa ka jawaabta, marka serverku wuu fiican yahay, laakiin codsi kastaa wuxuu sii weydiinayaa router-ka maxalliga ah. Waxa macmiilka gaadhay waa soo jeedin, ma aha isbeddel ku yimid xalliyaha, qaybta leh xallinta magacyaduna way ku kala duwan tahay Linux, Windows iyo macOS. Markaad ikhtiyaarka ka soocdo milkiilaha, afar cillad ayaa daboolaya ku dhowaad warbixin kasta: hook ma jiro, laba hook oo tartamaya, DNS qaybsan oo u shaqeeya sidii loo qorsheeyay, ama magac gaaban oo u baahan dheeraad ma aha server.

Ikhtiyaar la riixay waa soo jeedin, ma aha rakibaad

Serverka, laba tilmaamood ayaa qeexaya ujeeddo, ma aha saameyn:

push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DOMAIN corp.example"

Macmiilku ma helo xalliye la habeeyay. Wuxuu helaa doorsoomayaal deegaan, foreign_option_1 iyo kuwa xiga, mid kasta oo line la riixay, waxna maxalli ah waa inuu akhriyaa oo dib u qoraa xaaladda xalliyaha nidaamka hawlgalka. Linux dhexdiisa waxba si caadi ah uma sameeyo taas, sidaas darteed server sax ah iyo macmiil ku xiran ayaa wali magacyada ku xallin kara LAN.

Labada daraf waxaa u dhexeeya saddex marxaladood: riixiddu waa inay gaadho, macmiilku waa inuu soo bandhigo, hookna waa inuu fuliyaa. Akhri marxaladda dhexe diiwaanka macmiilka iyo tan ugu dambeysa xaaladda xalliyaha, marnaba ma aha lidka, maxaa yeelay hal line oo diiwaan ah waxay caddeynaysaa oo kaliya labada hore.

Xaqiiji in riixiddu gaadhay oo hel milkiilaha

Ku bilow magaca shidaalka: amar openvpn qoran, systemd instance, NetworkManager ama macmiil iibiyuhu leeyahay. Taasi waxay go'aaminaysaa halka hook ku noolaan karo. Host leh systemd-resolved, resolvectl status wuxuu liis dhigaa xiriir kasta iyada oo la socota server-yada DNS iyo domain-yada raadinta ee ay dhab ahaan isticmaasho, xiriirka tunnelkuna had iyo jeer lama yiraahdo tun0.

Haddii cinwaanka la riixay uu ka muuqdo diiwaanka laakiin aan ku jirin xiriir kasta, isku-xirku ma jiro. Haddii uu ku jiro xiriirka oo su'aalaha wali meel kale u baxaan, dhibaatadu waa su'aalaha tee ayaa doorta xiriirkaas. NetworkManager dns=dnsmasq faylka /etc/NetworkManager/NetworkManager.conf wuxuu shaqeeya gudbiye maxalli ah oo ula kac u fuliya DNS qaybsan: magacyada gudaha domain VPN waxay u tagaan xalliyaha VPN, wax kasta oo kale waxay haysataa jidkii hore. Dabeecaddan waxay u muuqataa cillad markaad filaysay in dhammaan taraafikadu dhaqaaqdo; hubi dejinta xiriir kasta iyada oo la isticmaalayo nmcli connection show "My VPN", halkaas ipv4.dns iyo ipv4.dns-search ay hayaan qiyamka ka dambeeya waxa qalabku soo sheegto, ka hor inta aadan ugu yeerin jaban. Haddii su'aal kastaa dhab ahaan tahay inay gaadho xalliyaha VPN, ka saar dns=dnsmasq ka NetworkManager.conf faylka oo dib u bilow NetworkManager, taas oo xallinta magacyada ku celinaysa dejinta xiriirka; haddii kale hayso DNS qaybsan oo sax liiska domain-yada la riixay.

Linux: u dhiib ikhtiyaarada xalliyaha

Baakadaha qaybinta waxay keenaan hook arrintan, macmiilkana waa in loo oggolaadaa inuu shaqeeyo. Habka caadiga ah ee host aan lahayn systemd-resolved:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

systemd-resolved, script-ga resolv.conf ee hore waxaa laga yaabaa inuusan wax muhiim ah beddelin, maxaa yeelay stub xalliyuhu wuxuu haysaa xaalad xiriir kasta. update-systemd-resolved kaaliyuhu wuxuu diiwaangelinayaa qaab hook oo isticmaala up-restart iyo down-pre, taas oo muhiim ah marka interface-ku ka badbaado hal isku day xiriir. Wax kasta oo aad dooratid, hal qayb waa inay haysataa xaaladda. Ku darista hook aan xiriir la lahayn NetworkManager agtiisa waxay xiriir isku mid ah siinaysaa laba qoraa, natiijaduna waxay markaas ku xiran tahay nidaamka ma aha habayntaada.

Waxaa sidoo kale jira kiis uu NetworkManager gabi ahaanba iska indhatiray ikhtiyaarka la riixay ilaa cinwaanka serverka lagu qoray dejinta IPv4 ee xiriirka, ka dibna xaaladda xalliyuhu muujisay in la isticmaalayo. Waa mudan in la tijaabiyo ka hor inta aan la dib u qorin script-yada, maxaa yeelay waxay dhibaatada ka rartaa shell hook u gudubto profile xiriirka oo horey u qaada tunnelka.

Windows iyo macOS waxay fuliyaan qaybo kala duwan

Macmiilka Windows wuxuu dhab ahaan dejiyaa server-yada DNS ee adapterka VPN, laakiin Windows wali wuxuu doortaa interface metrik ahaan oo wali wuxuu u baahan yahay dheeraad si uu u ballaariyo magac gaaban. Xaqiiji xaaladda adapterka ma aha profile-ka:

Get-DnsClientServerAddress -InterfaceAlias "My VPN"
Get-DnsClientNrptPolicy

Haddii cinwaanku maqan yahay, ku deji Set-DnsClientServerAddress -InterfaceAlias "My VPN" -ServerAddresses 10.8.0.1, ka dibna ku dar dheeraadka sifooyinka IPv4 ee adapterka si fileserver uu noqdo fileserver.corp.example. Qiime SearchList mashiinka oo dhan hoosta Tcpip\Parameters ayaa isla wax sameeya. Meesha magaca dheer la xalliyo kan qaawan la xallin, xalliyuhu horey ayuu u saxan yahay oo eedda waxaa leh liiska raadinta. Hagaajinta, si kala horreyn ah: riix DOMAIN si macmiilku u barto dheeraadka, ku dar dheeraadkaas liiska raadinta adapterka ama xiriirka, iyo tallaabo ku meel gaar ah ku dheji magaca hosts faylka, ama LMHOSTS gudaha Windows; baaritaanka NetBIOS ma gudbo router, sidaas darteed faafinta ka helaysa magac gaaban LAN-ka xafiiska marnaba ma gaadho macmiil tunnel.

block-outside-dns block-outside-dns waa dabeecad macmiil Windows, ma aha line profile la qaadan karo, oo ku koobista profile Linux ama macOS kuma soo celiso halkaas. Haddii magacyada dadweynaha ay shaqeeyaan oo kuwa gudaha ay Windows ku guuldareystaan, isbarbardhig nidaamka adapterka ee hoos Dejinta horumarsan la ipconfig /all. macOS, nidaamka xalliyaha adeeg kastaa waxaa leh nidaamka, sidaas darteed isticmaal scutil --dns si aad u aragto xalliye tee loo weydiiyo domain tee, oo u qaado wax kasta oo hagaajin profile ah oo la soo sheegay mid ku xiran macmiilka ma aha mid guud.

Mashiin dalwadeed oo isla laptopka ah waxba kama dhaxlo tan. Sii martida gelitaan xalliye u gaar ah domainka gudaha, ama u oggolow NAT-ka hypervisor-ka inuu su'aalahiisa hostka dhex maro, taas oo sax ah oo kaliya inta tunnelka hostku shaqeynayo.

Taariikhdu waa sababta saddexaad. Server-yada DNS ama dejinta dheeraadka profile hore waxay ka badbaadi karaan dib u xiriir, sidaas darteed marka adapterku u muuqdo mid saxan oo raadintu wali guuldareysto, isbarbardhig adapterka nool la Get-VpnConnection oo tirtir ama dib u qor gelitaanka duugoobay ka hor inta aadan taaban serverka.

Caddee halka su'aashu tagtay

Qabasho inta lagu jiro hal raadin ayaa go'aamisa doodda: tcpdump -ni eth0 port 53 waxay muujinaysaa su'aalo ku yaal interface-ka jireed, taas oo macneheedu yahay inay ka baxaan tunnelka oo xalliyaha marnaba lama beddelin. dig @10.8.0.1 name.corp.example ka dibna kala sooc labada kiis ee hadhay. Haddii su'aasha tooska ah ay ka jawaabto, xalliyuhu wuu shaqeynayaa macmiilkuna ma isticmaalo; haddii waqtigu dhammaado, xalliyaha tunnel ahaan lama gaadhi karo oo isbeddel maxalli ah ma caawin doono.

Haddii xalliyaha wali la isticmaalayo uu yahay kii bixiyuhu qaybsaday, tunnelku wuxuu sireeyaa taraafikada laakiin magacyadu waxay u muuqdaan bixiyahaas. Waa su'aal daadin ah oo ma aha mid shaqeyn, qabashada isku mid ahna way ka jawaabtaa: su'aal ku taal interface-ka jireed waxay u socotaa qof ka baxsan tunnelka.

Gaadhitaanku waxaa ku jira firewall-ka hostka VPN, kaas oo waa inuu oggolaado UDP iyo TCP 53 oo ka imanaya barkada. Boortada xiran waxay u egtahay sidii riixid jaban, sidaas oo kale xalliye ka jawaaba oo kaliya gudaha shabakadda tunnelka. Ku celi qabashada ka dib hal goyn iyo dib u xiriir, maxaa yeelay dejinta ka soo muuqata xiriirka koowaad oo ku lunta labaad waa cillad wareeg nololeed oo hook dhexdiisa, ma aha ikhtiyaar maqan.

Hayso hal milkiile oo si kala horreyn ah u xaqiiji

Script dib u qorta DNS-ka adapterka iyada oo ku salaysan xaalad tunnel la qiyaasay waxay labanlaabtaa habaynta uu profile-ku horey u qaado, oo si aamusan ayay u guuldareysataa marka ugu horreysa ee qiyaastu khaldanto. Dooro dejinta DNS ee xiriirka laftiisa ama hal hook oo diiwaangashan, oo qor midkaad dooratay si qofka xiga uusan labaad u darin.

Wareegga ku xir afar hubin: cinwaanka la riixay oo ku yaal xiriirka tunnelka, magaca gudaha oo loo xalliyo magac si buuxda u qalma, isla magacaas oo la xalliyo iyada oo aan dheeraadka lahayn, iyo labaduba wali run ka dib hal dib u xiriir. Hal qabasho ayaa kuu sheegta midka afarta ka mid ah uu guuldareystay. Buugga OpenVPN 2.6 wuxuu liis dhigaa dhcp-option iyo tilmaamaha script oo la socda qoraalladooda platform.

Maqaallo la xiriira