PHP hook-ka OpenVPN: trusted_ip iyo ifconfig_pool_remote_ip
Laba ciwaan oo laba macne kala duwan leh, oo ay akhridayaan geedi socod aadan bilaabin. Waa maxay doorsoomayaasha hook-ka, iyo sababta $_ENV madhan waxba uusan caddayn.
Array $_ENV madhan oo ku jira script hook-ka waxay u egtahay caddayn in OpenVPN aanu waxba gudbin. Badanaa waxay caddaynaysaa wax kale gebi ahaan: PHP waxaa loo habeeyay in aanu buuxin superglobal-kaas, qiimayaashuna waxay ku jireen deegaanka geedi socodka waqti kasta. Gabagabada labaad ee khaldan ayaa ka sii adag, sababtoo ah labada doorsoome ee ciwaanka ee hook-ka xidhiidhka waxay ka dhigan yihiin waxyaabo kala duwan oo si isdhaafsi ah loo isticmaalo. Labada khalad waxay ku kacaan galab haddii aad ka bilowdo kan qaldan.
Laba ciwaan, laba sheegasho oo kala duwan
Barta dibadda waa waxa server-ku arkay markii macmiilku xidhmay, oo la heli karo trusted_ip ahaan IPv4 iyo trusted_ip6 ahaan IPv6. Ciwaanka dadban waa waxa barkadu u qoondeysay fadhigan, oo la heli karo ifconfig_pool_remote_ip ahaan.
Waxay ka jawaabaan su'aalo kala duwan, diiwaankuna badanaa wuxuu u baahan yahay midkood, ma aha labadaba. Kan koowaad waa halka xidhiidhku ka yimid, taasoo laga yaabo inay tahay ciwaan NAT la wadaago oo ay isticmaalaan boqolaal qof. Kan labaad waa halka fadhiganu ku nool yahay gudaha tunnel-ka, waana la siin karaa fadhi kale mar dambe. Labada isku qasidda waxay soo saartaa diiwaanno u muuqda kuwo macquul ah oo khaldan.
Akhris ugu yar ayaa sidan u eg.
$outer4 = getenv('trusted_ip');
$outer6 = getenv('trusted_ip6');
$inner = getenv('ifconfig_pool_remote_ip');
$outer = $outer4 !== false ? $outer4 : $outer6;Midkoodna ma aqoonsado qof. Mid waa indhayn shabakadeed, kan kalena waa kireyn, diiwaan u qaata midkoodna aqoonsi qalab oo joogto ah wuu khaldanaan doonaa markii ugu horreysa ee macmiilku ka soo xidhmo shabakad kale ama uu helo ciwaan barkad kale. Dooro goobta su'aasha ay tahay in diiwaanku ka jawaabo, ka dibna su'aashaas ku qor dhinaca tiirka.
Hubi sida PHP loo bilaabay, ma aha shell-kaaga
Hook-ku wuxuu u shaqeeyaa sidii ilmo daemon-ka VPN oo leh deegaan uu daemon-ku dhisay. Shell-kaaga isdhexgalka ahi wuxuu leeyahay mid kale, script-ka gacanta ku shaqeeynta waxay tijaabisaa deegaanka shell-ka, ma aha kan hook-ka.
Ku bilow inaad xaqiijiso in hook-ku run ahaantii ka shaqeeyay marxaladda aad filaysay. Script ku dheggan marxalad qaldan, ama mid aan waligiis shaqeyn sababtoo ah tilmaantu waxay tilmaamaysaa waddo kale, waxay soo saartaa calaamad la mid ah doorsoome maqan. Ku dar sadar calaamadeyn ula kac ah script-ka dusheeda oo xaqiiji inay soo baxdo ka hor intaadan wax kale baarin. Hal sadar oo waqti-xambaar ku leh log-ka ayaa kala saara «waligiis ma shaqeyn» iyo «shaqadeeyay isagoon qiime lahayn».
Ka dib xaqiiji tarjumaankooda iyo feylka hagaajinta ee wicitaanku isticmaalo. Beddelka hagaajinta PHP ee server-ka web-ka wax wax ka beddelin maayo geedi socod CLI uu OpenVPN bilaabay, labaduna waxay rari karaan feyllo php.ini gebi ahaan kala duwan.
Sababta $_ENV madhan waxba uusan caddayn
PHP tixraaca getenv wuxuu sharraxayaa akhris toos ah oo deegaanka geedi socodka, kaasoo soo celiya false marka magacu maqan yahay. Superglobal-ka $_ENV si gooni ah ayaa loo buuxiyaa, tilmaanta variables_order waxay go'aamisaa superglobal-ka loo buuxinayo.
Haddii tilmaantaas laga tago E, $_ENV wuu madhan yahay si kasta oo deegaanku wax u qabto. Koodhka isaga tilmaama ayaa markaas soo sheega doorsoome maqan oo dhab ahaan jira, baaritaankuna wuxuu u jeestaa OpenVPN halka jawaabtu ku jirto php.ini. Hubi tilmaanta gaar ahaan hagaajinta CLI, ma aha server-ka web-ka.
Akhriska getenv waxay ka fogaataa dhammaan jahawareerkan, script-ka duubka ah ee deegaanka nadiifiya ka hor inta uusan u yeedhin tarjumaanka ayaa dib u soo celiya qaab kale.
Kaydi xidhiidh, ma aha cusboonaysiin sadar
Go'aanso qiimaha diiwaanku u baahan yahay ka hor intaadan qorin. Haddii yoolku yahay in la xuso halka fadhigu ka yimid, kaydi barta dibadda oo u calaamadee indhayn. Haddii yoolku yahay in fadhi lagu xidho ciwaan tunnel-ka inta uu xidhiidhku socdo, kaydi ciwaanka barkada oo ku xidh fadhiga.
Cusboonaysii aqoonsiga la xaqiijiyay iyo fadhiga hadda socda, ma aha sadar kasta oo wadaaga ciwaan tunnel, sababtoo ah ciwaannada barkada waa dib loo isticmaalaa oo dhacdo go'is dambe ayaa haddii kale tirtiri karta xogta xidhiidh cusub. U maamul IPv6 si cad halkii aad si aamusan u qori lahayd oo kaliya qiimaha IPv4. Sadar leh ciwaan dibadda NULL ayaa ka fiican sadar leh kan qaldan, sababtoo ah kan koowaad si muuqata ayuu u dhiman yahay.
Ku xidh qorista aqoonsiga fadhiga uu OpenVPN bixiyo si dib u xidhmi kasta uu abuuro diiwaan cusub halkii uu wax ka beddeli lahaa kan hore. Isticmaal oraahyo parameter leh iyo akoon leh oo kaliya fasaxyada ay hawshu u baahan tahay. Hook-ku wuxuu ku shaqeeyaa awoodda daemon-ka, markaa weydiin taxadar la'aan ah waa dhibaato ka ballaaran sadar log qaldan.
Baar iyada oo aan la tuurin deegaanka
Diiwaangeli magacyada jira, marxaladda shaqeeyay iyo tarjumaanka la isticmaalay. Ha daabicin dhammaan deegaanka, sababtoo ah geedi socodka hook-ka wuxuu dhaxli karaa qiimayaal aan xidhiidh lahayn oo aan ku habboonayn inay ku dhammaadaan feyl log.
Xaqiiji hal xidhiidh min bilow ilaa dhammaad: akhri barta dibadda, akhri ciwaanka la qoondeeyay, oo labadaba la jaanqaad aragtida server-ka ee fadhigaas. Marka lammaanaha loo xaqiijiyo hal macmiil, xidhiidhka meelo kale ayaa lagu kalsoonaan karaa.