Mae'n rhaid i un cleient ar eich gweinydd OpenVPN golli mynediad i'r LAN tra bo pob twnnel arall yn dal i weithio. Os chwiliwch am hyn, mae'r ateb gorau fel arfer yn dweud na all y daemon wneud hyn, sy'n hanner gwir yn unig: nid oes gan OpenVPN wal dân fesul cleient, ond mae'r llu sy'n terfynu'r twnnel eisoes yn hidlo pecynnau. Y ddau benderfyniad sy'n cyfrif yw'r hunaniaeth rydych yn ei blocio a safle'r rheol. Gwnewch y rhain yn iawn ac mae'r newid yn dod yn un llinell y gallwch ei phrofi a'i thynnu.

Pinio'r cleient cyn ysgrifennu'r rheol

Mae OpenVPN yn rhentu cyfeiriadau twnnel o gronfa, felly sedd yw 10.8.0.6, nid person. Pan ddaw'r sesiwn i ben mae'r rhent yn dychwelyd a gellir ei roi i'r cysylltiad nesaf, sy'n golygu bod rheol a ysgrifennwyd yn erbyn y cyfeiriad hwnnw yn dilyn y sedd, nid y defnyddiwr. Felly penderfynwch yn gyntaf beth rydych yn ei blocio mewn gwirionedd: cyfeiriad ar gyfer arbrawf byr, neu dystysgrif ar gyfer rhywun rydych am ei gadw allan.

I rwymo'r cyfeiriad i'r dystysgrif, crëwch ffeil yn y cyfeiriadur a enwir gan client-config-dir a rhowch enw cyffredin y dystysgrif yn union i'r ffeil. Rhowch un gorchymyn ynddi, ifconfig-push 10.8.0.6 255.255.255.0, ac mae'r cleient hwnnw'n cadw'r un cyfeiriad twnnel ar draws ailgysylltu. Mae angen dau osodiad i hyn weithio: rhaid datgan client-config-dir yng nghyfluniad y gweinydd, a rhaid i'r cyfeiriad a wthir fod mewn is-rwydwaith y gall y gweinydd ei lwybro. Os collwch un, anwybyddir y ffeil heb gamgymeriad, sy'n gwneud y prawf wal dân nesaf yn gamarweiniol.

Gall bloc dros dro ddefnyddio cyfeiriad o'r gronfa, cyn belled ag y bydd y tocyn yn cofnodi pa sesiwn a'i dal ar y pryd.

Mae'r drefn yn penderfynu a yw'r gollwng yn rhedeg

Ar borth Linux sy'n anfon rhwng y twnnel a'r LAN, mae pecynnau'n croesi cadwyn FORWARD. Darllenwch y gorchymyn isod fel brawddeg: mewnosod ar flaen FORWARD, paru traffig sy'n dod i mewn o tun0, o'r un llu hwnnw, wedi'i gyfeirio at is-rwydwaith y LAN, a'i ollwng.

iptables -I FORWARD -i tun0 -s 10.8.0.6/32 -d 192.168.1.0/24 -j DROP

Y -I sy'n gwneud i'r rheol redeg. Wedi'i hychwanegu gyda -A, mae'n glanio o dan unrhyw dderbyniad eang ar gyfer is-rwydwaith y twnnel ac yn gweld pecyn byth. Gwirwch y safle gyda iptables -vnL FORWARD --line-numbers, a darllenwch y cyfrifwyr hefyd: gollwng ar y brig nad yw'n cyfrif dim yn golygu bod y traffig yn cyrraedd trwy lwybr arall.

Mae cyfeiriad LAN y porth ei hun yn llwybr gwahanol. Mae pecynnau a anfonir at y blwch ei hun yn mynd i INPUT, nid FORWARD, felly gall cleient golli llu yn y LAN ac agor tudalen weinyddu'r llwybrydd o hyd. Ychwanegwch y rheol INPUT gyfatebol pan fydd hynny'n bwysig.

Yr hyn na all y hidlydd ei weld

Mae hidlo'n digwydd pan werthusir pecyn, felly gall sesiwn TCP sefydledig barhau nes iddi gau neu gael ei hailosod. Os oes rhaid i'r bloc frathu ar unwaith, cliriwch y ffrydiau a olrheinir ar gyfer y ffynhonnell honno gyda conntrack -D -s 10.8.0.6 ar ôl i'r rheol fynd i mewn. Os yw ychydig eiliadau o orgyffwrdd yn dderbyniol, cofnodwch y dewis hwnnw yn lle ei adael yn ymhlyg. Naill ffordd neu'r llall, mae angen i'r person nesaf wybod a yw'r rheol yn atal traffig byw neu dim ond cysylltiadau newydd.

Nid yw traffig rhwng cymheiriaid byth yn cyffwrdd wal dân y llu. Gyda client-to-client wedi'i alluogi, mae OpenVPN yn anfon y pecynnau hynny y tu mewn i'r daemon, felly nid yw FORWARD na INPUT yn eu gweld. Yr unig atebion yw diffodd client-to-client neu dderbyn y gall cymheiriaid gyrraedd ei gilydd; ni fydd rheol iptables yn gweld y traffig hwnnw.

IPv6, firmware a goroesi ailgychwyn

Nid yw rheol IPv4 yn dweud dim am IPv6. Os yw'r twnnel a'r LAN yn cario'r ddwy deulu, rhaid i'r rheol gyfatebol fodoli yn ip6tables, neu yn y set rheolau nftables sy'n berchen ar y polisi ar y llu hwnnw. Mae firmware llwybrydd yn aml yn cuddio netfilter y tu ôl i'w haniaeth ei hun, felly efallai na fydd cystrawen ac enwau tablau a gopïwyd o fforwm yn berthnasol.

Ar OpenWrt, y llwybr dogfennedig yw cofnod cyfluniad wal dân yn hytrach na llinell iptables a ysgrifennwyd â llaw, a gall llinell a ysgrifennwyd â llaw ddiflannu pan ail-lwythir y wal dân. Mae dosbarthiadau eraill yn adfer rheolau trwy netfilter-persistent, uned gychwyn neu storfa gwerthwr, ac nid yw'r mecanweithiau hynny'n gyfnewidiol. Profwch yr un a ddewisoch ag ailgychwyn, oherwydd mae ail-lwytho'n ymarfer llwybr gwahanol.

Gwirio fesul llwybr, yna rholio'n ôl yn lân

Profwch bob llwybr ar wahân, oherwydd mae un prawf llwyddiannus yn cuddio'r lleill. Dylai cleient a flociwyd gyrraedd y rhyngrwyd trwy'r twnnel o hyd tra'n methu yn erbyn llu yn y LAN, dylai ail gleient gyrraedd yr un llu, ac mae angen eu harsylwi eu hunain ar gyfer cyfeiriad y porth a'r llwybr cymhar. Ysgrifennwch y canlyniadau wrth ymyl y rheol fel bod gan y newid nesaf linell sylfaen. Y tabl isod yw'r set sy'n werth ei chadw yn y tocyn.

LlwybrDisgwyliedig gyda'r rheolPan fydd yn methu
Cleient a flociwyd i llu yn y LANDim atebMae'r rheol o dan dderbyniad, neu nid yw'r ffynhonnell yn cyfateb
Cleient a flociwyd i'r rhyngrwydYn gweithio trwy tun0Mae'r rheol yn rhy eang, heb gyfatebiaeth cyrchfan
Ail gleient i'r un llu yn y LANYn gweithioMae'r rheol wedi cyfateb mwy na'r llu a fwriadwyd
Cleient a flociwyd i gyfeiriad LAN y porthWedi'i flocio dim ond gyda'r rheol INPUT gyfatebolRheol INPUT ar goll
Cleient a flociwyd i gyfeiriad twnnel cymharYn dal i weithioclient-to-client wedi'i alluogi ac y tu allan i gylch y wal dân

Mae rholio'n ôl yn ddileu trwy fanyleb, nid flush: iptables -D FORWARD -i tun0 -s 10.8.0.6/32 -d 192.168.1.0/24 -j DROP yn tynnu'r cofnod hwnnw'n union ac yn gadael gweddill y gadwyn yn gyfan. Tynnwch yr un llinell o ba bynnag ffeil sy'n adfer y rheolau wrth gychwyn, ail-lwythwch hi, a chadarnhewch fod y cleient yn cyrraedd y llu yn y LAN eto. Byddai fflysio FORWARD hefyd yn dad-wneud rheolau na ysgrifennoch, sy'n troi rholio'n ôl yn ail ddigwyddiad.

Cyn cau'r tocyn, cadarnhewch dri pheth: mae'r cyfeiriad a binwyd yn cyfateb i'r dystysgrif, mae'r rheol uwchben y derbyniadau gyda chyfrifydd nad yw'n sero, ac mae'r ffeil parhaus yn cynnwys yr un rheol a brofwyd gennych. Os oes unrhyw un o'r rhain ar goll, mae'r bloc yn rhith sesiwn shell.

Erthyglau cysylltiedig