Bachyn client-connect OpenVPN: i ble mae'ch cyfeiriad yn mynd mewn gwirionedd
Ni all sgript client-connect ddychwelyd cyfeiriad drwy ei argraffu. Gweler sut mae ffeil dros dro'r bachyn, statws allanfa a thopoleg yn penderfynu IP y cleient.
Mae dychwelyd cyfeiriad o sgript client-connect yn edrych fel pe dylai osod IP y cleient. Nid yw'n gwneud hynny: yr unig sianel gan y bachyn at y gweinydd yw ffeil dros dro y mae ei llwybr yn cyrraedd fel dadl olaf y sgript, ac mae'n rhaid ysgrifennu'r cyfeiriad yno yn nhrefn ifconfig-push. Mae sgript sy'n argraffu'r cyfeiriad neu'n gorffen gyda sero heb ysgrifennu dim yn creu cleient cysylltiedig â chyfeiriad o'r pwll, ac mae cofnod y gweinydd yn edrych yn berffaith iach.
Mae'r dryswch yn rhesymol, oherwydd mae sawl bachyn arall yn siarad yn ôl drwy godau allanfa neu newidynnau amgylchedd. Mae gan hwn ei gontract ei hun, ac mae'r contract yn dechrau gydag enw ffeil.
Mae'r bachyn yn ysgrifennu ffeil, nid gwerth dychwelyd
Dwy linell yw'r datganiad: script-security 2 i ganiatáu'r alwad, yna client-connect /etc/openvpn/server/assign-address.sh. Pan fydd cleient yn dilysu, mae'r gweinydd yn rhedeg y sgript honno gyda llwybr y ffeil a gynhyrchwyd wedi'i atodi fel y ddadl olaf, sef $1 yn unig os nad yw'r datganiad yn pasio unrhyw ddadleuon ychwanegol ei hun. Mae popeth a gymhwysir i'r cleient hwnnw yn mynd i'r ffeil honno fel cyfarwyddebau cyffredin, un y llinell, yn union fel y byddent yn ymddangos mewn ffurfweddiad. Mae troellwr sy'n ychwanegu ei baramedrau ei hun yn symud y safle, a'r symptom clasurol yw sgript sy'n ysgrifennu i lwybr sy'n edrych fel --verbose.
Statws allanfa yw hanner arall y contract. Mae sero yn golygu derbyn a darllen y ffeil; mae unrhyw beth arall yn gwrthod y cysylltiad, a dyna sut mae hunaniaeth heb ei mapio yn cael ei gwrthod yn lle llithro'n ôl i'r pwll yn dawel. Ysgrifennwch y gyfarwyddeb gyflawn cyn dychwelyd llwyddiant, fel na fydd ffeil hanner-ysgrifenedig byth yn dod yn ffurfweddiad cleient.
Mae dwy gyfarwyddeb yn haeddu sylw oherwydd eu bod yn rhyngweithio â phopeth arall. Mae ifconfig-push yn trwsio'r cyfeiriad, tra mae route a wthir yn dweud wrth y cleient beth sy'n gyrraeddadwy drwy'r twnnel; dychwelwch y gyntaf ac anghofiwch yr ail a chewch gleient â chyfeiriad a dim man i fynd. Nid yw trefn o fewn y ffeil yn bwysig, ond mae cyflawnrwydd yn bwysig. Mae bachyn sy'n gwthio llwybr ar gyfer rhagddodiad nad oes unrhyw bartner yn gallu ei gyrraedd yr un camgymeriad, wedi'i weld o'r pen arall.
Mae mewnbynnau'n cyrraedd drwy newidynnau amgylchedd: common_name, trusted_ip, ifconfig_pool_remote_ip a'r gweddill. Triniwch bob un ohonynt fel llinynnau o'r tu allan i'r gweinydd, byth fel darnau cragen.
Mae mapio cyfeiriadau yn bolisi, nid rhifyddeg
Un llwybr byr sy'n demtio yw dosrannu enw'r dystysgrif a defnyddio'i ddigidau fel yr wythfed olaf. Nid yw hynny'n ddyrannydd, ac mae'n methu mewn ffyrdd cyffredin: mae dau enw â'r un olddodiad yn gwrthdaro, nid yw enw'n gorffen gyda 300 yn gyfeiriad, ac mae tystysgrif a ail-enwir gan weinyddwr yn symud dyfais yn dawel. Dilyswch aelodaeth is-rwydwaith, yr ystod gwesteiwyr y gellir ei defnyddio, cyfeiriadau neilltuedig ac unigrywiaeth ar bob galwad, a chadwch y mapio mewn tabl y gall person ei ddarllen.
Pwy bynnag sy'n rheoli'r enw sy'n rheoli'r cyfeiriad, felly penderfynwch beth mae common_name yn ei gynrychioli mewn gwirionedd yn y defnydd hwn. Gyda username-as-common-name wedi'i alluogi, y mewngofnod yw'r hunaniaeth yn hytrach na phwnc y dystysgrif. Peidiwch byth â phasio'r gwerth hwnnw i werthuso cragen, a pheidiwch byth â gadael i'r cleient ddylanwadu ar lwybr ffeil.
Rhaid i ddyrannydd a gefnogir gan gofrestr wrthsefyll cydredeg. Neilltuwch y cyfeiriad yn atomig, triniwch ysgrifeniad a fethodd heb dderbyn cleient hanner-ffurfweddedig, a thagiwch bob dyranniad â'r cysylltiad sy'n berchen arno, fel na all datgysylltiad hwyr o sesiwn hŷn ryddhau cyfeiriad y mae un newydd yn dal eisoes. Mae sawl achos o weinydd yn rhannu un pwll yn gwneud y gofyniad hwnnw'n fwy miniog yn hytrach nag yn ddewisol.
Mae topoleg yn penderfynu beth mae ifconfig-push yn ei olygu
Gyda topology subnet ar 10.77.0.0/24, mae ifconfig-push 10.77.0.20 255.255.255.0 yn gyfeiriad ynghyd â'i gôr rhwydwaith. O dan topology net30 nid yw'r ail ddadl yn gôr o gwbl ond yn gyfeiriad y partner, felly mae copïo'r ffurf is-rwydwaith i weinydd net30 yn rhoi cleient sy'n cysylltu ac na all basio traffig. Newidiwch y topoleg yn fwriadol, byth i wneud i enghraifft edrych yn gyson. Mae gan weinydd sy'n rhedeg net30 eisoes gleientiaid byw ar yr hen gyfeiriadaeth, felly mae'r newid yn fudo gyda ffenestr gynnal a chadw, nid yn olygiad un llinell.
Rhaid i gyfeiriadau statig fod y tu allan i'r pwll dynamig ac y tu allan i bob aseiniad statig arall, gan gynnwys y rhai a roddir gan ffeiliau client-config-dir cyffredin. Os gall dau fecanwaith gynhyrchu'r un cyfeiriad ar gyfer cleientiaid gwahanol, bydd un ohonynt yn y pen draw yn gwneud hynny.
Profwch bedwar achos cyn ymddiried ynddo
Rhedwch yr un gwiriadau yn erbyn hunaniaeth wedi'i mapio, un heb ei mapio, ailgysylltiad a methiant cofrestr efelychiedig. Mae openvpn --config client.ovpn --verb 4 yn dangos y cyfeiriad a neilltuwyd yn yr ateb gwthio, ac ar y gweinydd mae grep -A2 PUSH_REPLY /var/log/openvpn/openvpn.log yn cadarnhau'r hyn a anfonwyd mewn gwirionedd. Ar gyfer yr hunaniaeth heb ei mapio, y canlyniad disgwyliedig yw cysylltiad a wrthodwyd, nid cyfeiriad o'r pwll.
Yna archwiliwch y cyfeiriadur y mae'r daemon yn ysgrifennu'r ffeiliau dros dro hynny iddo. Mae'r sgript yn rhedeg yng nghyd-destun y gwasanaeth a ostyngwyd, felly mae llwybr y gall root ysgrifennu iddo ond na all y daemon yn troi pob cysylltiad yn wrthodiad gyda gwall caniatâd wedi'i gladdu sawl llinell i lawr yn y cofnod.
Nid yw dyrannu yn awdurdodi: nid yw cyfeiriad wedi'i binio yn dal i roi mynediad i bob cyrchfan y tu ôl i'r gweinydd. Cadwch y polisi llwybro a mur tân yn ei haen ei hun, a'i ddilysu yn erbyn y cyfeiriad yr ydych newydd ei drwsio.