$_ENV array huts batek kako script batean ematen du OpenVPN ez zuela ezer pasatu. Normalean beste zerbaiten froga da: PHP superglobal hori betetzeko konfiguratuta ez zegoen, eta balioak prozesuaren ingurunean egon dira denbora osoan. Bigarren ondorio faltsua sotilagoa da, konexio-kako baten bi helbide-aldagaiek gauza desberdinak esan nahi dituztelako eta trukatuta erabiltzen direlako. Bi hutsek arratsalde bat balio dute, okerretik abiatzen bazara.

Bi helbide, bi aldarrikapen desberdin

Kanpoko muturra zerbitzariak bezeroa konektatu zenean behatutakoa da, trusted_ip gisa eskuragarri IPv4rako eta trusted_ip6 gisa IPv6rako. Helbide birtuala poolak saio honetarako esleitutakoa da, ifconfig_pool_remote_ip gisa eskuragarri.

Galdera desberdinei erantzuten diete, eta erregistro batek normalean bietako bat behar du, ez biak. Lehena konexioa nondik iritsi zen da, ehunka pertsonak erabiltzen duten NAT helbide partekatu bat izan daitekeena. Bigarrena saio hau tunelaren barruan non bizi den da, eta geroago beste saio bati eslei dakioke. Biak nahasteak sinesgarri diruditen eta okerrak diren erregistroak sortzen ditu.

Irakurketa minimo batek horrela dirudi.

$outer4 = getenv('trusted_ip');
$outer6 = getenv('trusted_ip6');
$inner  = getenv('ifconfig_pool_remote_ip');
$outer  = $outer4 !== false ? $outer4 : $outer6;

Bi balioetatik batek ere ez du pertsona bat identifikatzen. Bata sare-behaketa da, bestea alokairua, eta edozein gailu-identifikatzaile egonkor gisa tratatzen duen erregistroa okerra izango da bezeroa beste sare batetik berriz konektatzen den edo pool helbide desberdin bat jasotzen duen lehen aldian. Hauta ezazu eremua erregistroak erantzun behar duen galderaren arabera, eta gero idatzi galdera hori zutabearen ondoan.

Egiaztatu PHP nola abiarazi zen, ez zure shell-a

Kakoa VPN daemonaren seme gisa exekutatzen da, daemonak eraikitzen duen ingurunearekin. Zure shell interaktiboak beste bat du, eta scripta eskuz exekutatzeak shell-aren ingurunea probatzen du, ez kakoarena.

Hasi kakoa espero zenuen etapan benetan abiarazi zela egiaztatzen. Etapa okerrean lotutako script batek, edo direktibak beste bide bat seinalatzen duelako inoiz exekutatu ez zen batek, aldagai bat falta denean bezalako sintoma bera sortzen du. Gehitu markatzaile-lerro bat scriptaren goialdean eta egiaztatu agertzen dela beste edozer ikusi aurretik. Erregistroko denbora-markadun lerro batek inoiz exekutatu ez zena baliorik gabe exekutatu zenetik bereizten du.

Gero egiaztatu deialdi horrek zein interprete eta zein konfigurazio-fitxategi erabiltzen dituen. Web zerbitzari baterako PHP konfigurazioa aldatzeak ez du ezer aldatzen OpenVPN-k abiarazitako CLI prozesu batean, eta biek guztiz desberdinak diren php.ini fitxategiak karga ditzakete.

Zergatik $_ENV huts batek ezer frogatzen ez duen

PHPren getenv erreferentziak prozesuaren ingurunearen irakurketa zuzena dokumentatzen du, eta false itzultzen du izena falta denean. $_ENV superglobala aparte betetzen da, eta variables_order direktibak erabakitzen du zein superglobal beteko diren.

Direktiba horrek E baztertzen badu, $_ENV hutsik geratzen da inguruneak edozein eduki arren. Hura indexatzen duen kodeak falta den aldagai bat salatzen du, benetan existitzen dena, eta ikerketa OpenVPN aldera doa erantzuna php.ini-n dagoen bitartean. Egiaztatu direktiba CLI konfiguraziorako bereziki, ez web zerbitzariko.

getenv erabiliz irakurtzeak nahasketa-mota osoa saihesten du, eta interpretea deitu aurretik ingurunea garbitzen duen bilgarri-script batek beste forma batean sartzen du berriro.

Gorde elkarketa bat, ez errenkada-eguneratze bat

Erabaki erregistroak zein balio behar duen idatzi aurretik. Helburua saio bat nondik etorri zen adieraztea bada, gorde kanpoko muturra eta etiketa ezazu behaketa gisa. Helburua saio bat tunel-helbide bati lotzea bada konexio baten iraupenean, gorde pool helbidea eta lotu saioari.

Eguneratu autentifikatutako identitatearen eta uneko saioaren arabera, tunel-helbide bat partekatzen duen errenkada bakoitzaren arabera baino, pool helbideak berrerabiltzen direlako eta berandu iritsitako deskonexio-gertaera batek konexio berriago baten datuak gainidatz ditzakeelako. Landu IPv6 espresuki, IPv4 balioa soilik isilka idatzi ordez. Kanpo-helbidea NULL duen errenkada bat hobea da okerra duen errenkada bat baino, lehena bistako osatugabea delako.

Lotu idazketa OpenVPN-k ematen duen saio-identifikatzaileari, berriz konektatzeak erregistro berria sor dezan zaharra editatu ordez. Erabili parametrizatutako adierazpenak eta eragiketak behar dituen baimenak soilik dituen kontua. Kakoa daemonaren autoritatearekin exekutatzen da, beraz kontsulta arduragabea log lerro oker bat baino arazo zabalagoa da.

Diagnostikatu ingurunea bota gabe

Erregistratu zein izen zeuden, zein etapa exekutatu zen eta zein interprete erabili zen. Ez inprimatu ingurune osoa, kakoko prozesu batek erregistro-fitxategi batera iritsi behar ez luketen balio erlazionatu gabeak hereda ditzakeelako.

Egiaztatu konexio bat hasieratik amaierara: irakurri kanpoko muturra, irakurri esleitutako helbidea, eta egiaztatu biak zerbitzariak saio horri buruz duen ikuspegiaren aurka. Behin bikotea bezero batentzat egiaztatuta, elkarketa beste nonbait fidagarria da.

Erlazionatutako artikuluak