Ir-ritorn ta' indirizz minn skript client-connect jidher li għandu jistabbilixxi l-IP tal-klijent. Iżda ma jagħmilx hekk: l-uniku kanal tal-hook lejn is-server huwa fajl temporanju li l-passaġġ tiegħu jiġi bħala l-aħħar argument tal-iskript, u l-indirizz irid jinkiteb hemm fis-sintassi ta' ifconfig-push. Skript li jipprintha l-indirizz jew joħroġ b'żero mingħajr ma jikteb xejn jipproduċi klijent konness b'indirizz mill-pool, u l-log tas-server jidher perfettament b'saħħtu.

Il-konfużjoni hija raġonevoli, għax diversi hooks oħra tassew iwieġbu permezz ta' kodiċijiet tal-ħruġ jew varjabbli tal-ambjent. Dan għandu l-kuntratt tiegħu stess, u l-kuntratt jibda b'isem ta' fajl.

Il-hook jikteb fajl, mhux valur ta' ritorn

Id-dikjarazzjoni hija żewġ linji: script-security 2 biex tippermetti s-sejħa, imbagħad client-connect /etc/openvpn/server/assign-address.sh. Meta klijent jawtentika ruħu, is-server iħaddem dak l-iskript bil-passaġġ tal-fajl iġġenerat miżjud bħala l-aħħar argument, li huwa $1 biss jekk id-dikjarazzjoni ma tgħaddix argumenti addizzjonali tagħha stess. Kollox li jiġi applikat għal dak il-klijent imur f'dak il-fajl bħala direttivi ordinarji, waħda f'kull linja, eżattament kif jidhru f'konfigurazzjoni. Wrapper li jżid il-parametri tiegħu jċaqlaq il-pożizzjoni, u s-sintomu klassiku huwa skript li jikteb f'passaġġ li jidher bħal --verbose.

L-istat tal-ħruġ huwa n-nofs l-ieħor tal-kuntratt. Żero jfisser aċċetta u aqra l-fajl; kull ħaġ'oħra tirrifjuta l-konnessjoni, u hekk identità mhux immappjata tiġi miċħuda minflok ma taqa' lura fis-skiet fil-pool. Ikteb id-direttiva sħiħa qabel ma tirritorna suċċess, sabiex fajl nofshu miktub qatt ma jsir konfigurazzjoni ta' klijent.

Żewġ direttivi jixirqilhom attenzjoni għax jinteraġixxu ma' kollox l-ieħor. ifconfig-push jiffissa l-indirizz, filwaqt li route mibgħuta tgħid lill-klijent x'inhu aċċessibbli permezz tat-tunnel; ġib l-ewwel waħda u nesa t-tieni u tikseb klijent b'indirizz u mkien fejn imur. L-ordni fil-fajl mhijiex importanti, iżda l-kompletezza hija. Hook li jbagħat rotta għal prefiss li ħadd ma jista' jilħaq huwa l-istess żball li jidher mill-banded l-oħra.

L-inputs jiġu permezz ta' varjabbli tal-ambjent: common_name, trusted_ip, ifconfig_pool_remote_ip u l-bqija. Ittrattahom kollha bħala strings minn barra s-server, qatt bħala frammenti tal-shell.

Il-mapping tal-indirizzi hija politika, mhux aritmetika

Aċċess qasir li jġarrab huwa li tanalizza l-isem taċ-ċertifikat u tuża ċ-ċifri tiegħu bħala l-aħħar ottett. Dan mhuwiex allokatur, u jfalli b'modi ordinarji: żewġ ismijiet bl-istess suffiss jaħbtu, isem li jispiċċa b'300 mhuwiex indirizz, u ċertifikat imsemmi mill-ġdid minn amministratur iċaqlaq apparat fis-skiet. Ivvalida s-sħubija fis-subnet, il-medda tal-hosts li tista' tintuża, l-indirizzi riżervati u l-uniċità f'kull sejħa, u żomm il-mapping f'tabella li bniedem jista' jaqra.

Min jikkontrolla l-isem jikkontrolla l-indirizz, għalhekk iddeċiedi x'inhu jirrappreżenta common_name f'dan l-użu. B'username-as-common-name attivat, l-identità hija l-login u mhux is-suġġett taċ-ċertifikat. Qatt tgħaddix dak il-valur lill-evalwazzjoni tal-shell, u qatt tħalli lill-klijent jinfluwenza passaġġ ta' fajl.

Allokatur ibbażat fuq reġistru irid jiflaħ għall-konkorrenza. Irriżerva l-indirizz b'mod atomiku, immaniġġja kitba falluta mingħajr ma tammetti klijent nofsu kkonfigurat, u ttikketti kull allokazzjoni bil-konnessjoni li tippossjediha, sabiex skonnessjoni tard minn sessjoni eqdem ma tistax teħles indirizz li waħda eqdem diġà għandha. Diversi istanzi tas-server li jaqsmu pool wieħed jagħmlu dak ir-rekwiżit aktar qawwi milli fakultattiv.

It-topoloġija tiddeċiedi x'ifisser ifconfig-push

B'topology subnet fuq 10.77.0.0/24, ifconfig-push 10.77.0.20 255.255.255.0 huwa indirizz flimkien man-netmask tiegħu. Taħt topology net30 it-tieni argument mhuwiex netmask xejn iżda l-indirizz tal-pari, għalhekk l-ikkupjar tal-forma tas-subnet fuq server net30 jagħtik klijent li jassoċja u ma jistax jgħaddi traffiku. Ibdel it-topoloġija b'mod deliberat, qatt biex eżempju jidher konsistenti. Server li diġà qed iħaddem net30 għandu klijenti ħajjin fuq l-indirizzar antik, għalhekk il-bidla hija migrazzjoni b'tieqa ta' manutenzjoni, mhux editjar ta' linja waħda.

L-indirizzi statiċi għandhom ikunu barra mill-pool dinamiku u barra minn kull assenjazzjoni statika oħra, inklużi dawk mogħtija minn fajls client-config-dir ordinarji. Jekk żewġ mekkaniżmi jistgħu jipproduċu l-istess indirizz għal klijenti differenti, wieħed minnhom eventwalment se jagħmel hekk.

Ittesta erba' każijiet qabel ma tafdah

Ħaddem l-istess kontrolli fuq identità mmappjata, waħda mhux immappjata, rikonnessjoni u falliment tar-reġistru simulat. openvpn --config client.ovpn --verb 4 juri l-indirizz assenjat fir-risposta push, u fuq is-server grep -A2 PUSH_REPLY /var/log/openvpn/openvpn.log jikkonferma x'inġabar tassew. Għall-identità mhux immappjata r-riżultat mistenni huwa konnessjoni miċħuda, mhux indirizz mill-pool.

Imbagħad iċċekkja d-direttorju li fih id-daemon jikteb dawk il-fajls temporanji. L-iskript jaħdem fil-kuntest tas-servizz imnaqqas, għalhekk passaġġ li root jista' jikteb fih iżda d-daemon le jibdel kull konnessjoni f'rifjut b'żball ta' permess midfun diversi linji 'l isfel fil-log.

L-allokazzjoni mhijiex awtorizzazzjoni: indirizz ippinnjat xorta ma jagħtix aċċess għal kull destinazzjoni wara s-server. Żomm il-politika tal-irrotar u tal-firewall fil-livell tagħha stess, u vverifikaha kontra l-indirizz li għadek kif iffissajt.

Artikli relatati