Llwybr wedi’i wrthod oherwydd bitiau gwesteiwr? Dewch o hyd i’r rhagddodiad a fwriadwyd
Mae llinell llwybr a wrthodir fel arfer yn bitiau gwesteiwr, nid yn broblem anfon ymlaen. Gweithiwch allan y rhagddodiad a olygech yn lle lledaenu’r mwgwd nes iddo ddod i mewn.
Mae eich llinell llwybr yn dod yn ôl wedi’i gwrthod, a’r cyngor a welwch yn dweud i alluogi anfon IP ymlaen. Mae’r ddau beth hyn ar wahanol gamau o’r broblem. Mae anfon ymlaen yn penderfynu a all gwesteiwr symud pecynnau rhwng rhyngwynebau; nid oes ganddo farn ynghylch a yw’r cyrchfan a deipioch yn rhwydwaith ddilys. Trwsiwch y rhagddodiad yn gyntaf, oherwydd ni fydd anfon ymlaen yn achub cyfeiriad a mwgwd sy’n anghytuno.
Am beth mae’r parser yn cwyno mewn gwirionedd
Rhaid i gyrchfan a ysgrifennir fel cyfeiriad a mwgwd ddisgrifio rhwydwaith, ac mae rhwydwaith yn dechrau â bitiau gwesteiwr wedi’u sero. Pan fo’r cyfeiriad a roddwch yn dal gwerth yn y rhan gwesteiwr, mae’r pâr yn anghyson yn fewnol: mae 172.20.130.0 yn edrych yn daclus oherwydd ei fod yn gorffen â sero, ond nid sero yn yr wythfed bedwaredd yw’r unig beth sy’n bwysig. Yr wythfed drydedd sy’n dal bitiau crwydr yma.
Mae offer yn trin yr anghysondeb hwnnw’n wahanol. Mae parsers llym yn gwrthod y llinell ac yn enwi bitiau gwesteiwr. Mae parsers goddefgar yn mygu’r cyfeiriad ac yn gosod rhywbeth na ofynnoch amdano, sy’n waeth, oherwydd mae’r ffurfweddiad nawr yn llwybro ystod na fwriadwyd gennych erioed. Mae modiwl ipaddress Python yn datgelu’r dewis yn uniongyrchol: mae dosrannu rhwydwaith llym yn codi gwall, ac mae strict=False yn mygu’r bitiau gwesteiwr allan. Gall eich cleient fod yn llym, yn oddefgar neu’n anghyson rhwng fersiynau, felly darllenwch y neges yn lle ymddiried mewn arfer.
Gweithiwch y rheol allan â llaw
Cymerwch dwnnel sydd angen cyrraedd 172.20.130.0 gyda mwgwd /20. Mae /20 yn benthyca pedwar bit o’r drydedd wythfed, felly dim ond mewn camau o 16 y mae’r wythfed honno’n cyfrif: 0, 16, 32 ac ymlaen hyd at 240. Mae gwerth 130 yn disgyn rhwng 128 a 143, sy’n golygu bod y rhwydwaith amgylchynol yn dechrau ar 172.20.128.0, nid ar 172.20.130.0 gyda’r wythfed olaf wedi’i glirio.
Wedi’i hysgrifennu, mae’r bloc yn rhedeg o 172.20.128.0 i 172.20.143.255 ac yn dal 4,096 o gyfeiriadau. Mae bwydo’r un gwerthoedd i parser nad yw’n llym yn dangos yr amnewidiad y byddai wedi’i wneud ar eich rhan:
$ python3 -c "import ipaddress; n=ipaddress.ip_network('172.20.130.0/20', strict=False); print(n, n.num_addresses)"
172.20.128.0/20 4096Penderfynwch pa gyrchfan a olygech mewn gwirionedd
Mae’r llinell a wrthodwyd fel arfer yn cuddio un o dri bwriad, a dim ond chi all ddewis. Os oes angen y bloc cyfan ar y twnnel, ysgrifennwch 172.20.128.0/20, y cyfeiriad rhwydwaith canonig. Os nad oes angen ond segment 130 ar y twnnel, roedd y mwgwd yn anghywir a 172.20.130.0/24 yw’r ffurf onest. Os mai un peiriant yw’r targed, llwybr gwesteiwr IPv4 yw /32 ac nid oes unrhyw rifyddeg mwgwd yn rhan o hyn.
Mae pob un ohonynt yn awdurdodi swm gwahanol o draffig, a dyna’r gwir reswm dros beidio â lledaenu’r mwgwd nes bod y gŵyn yn stopio. Mae /16 yn derbyn y llinell bron ym mhob man ac yn anfon traffig tuag at gyrchfannau na fwriadwyd gennych eu llwybro drwy’r twnnel. Ysgrifennwch y rhagddodiad culaf sy’n cyfateb i’r bwriad, yna cadarnhewch ef yn erbyn y naid nesaf a ddisgwyliwch, nid yn erbyn distawrwydd y parser.
Pam na fu anfon ymlaen yn ateb erioed
Nid yw llwybr a wrthodwyd byth yn cyrraedd llwybr anfon ymlaen, felly ni all toglu net.ipv4.ip_forward newid y canlyniad. Mae’r gosodiad hwnnw’n bwysig yn ddiweddarach, pan fo’n rhaid i’r gwesteiwr basio pecynnau rhwng rhyngwynebau, ac mae ei droi ymlaen cyn bod y tabl yn gywir yn newid yn unig pa gam fydd yn methu nesaf.
Mae dau beth arall yn aml yn cael eu beio ar yr un pwynt. Gall y llwybr gael ei dderbyn ac eto golli i lwybr mwy penodol, a gall rheol wal dân ollwng traffig ar ôl chwiliad cywir. Cadwch y camau ar wahân: cystrawen, gosod, dewis, hidlo. Mae gweithio ar y cam anghywir yn teimlo’n gynhyrchiol oherwydd bod pob newid yn ailgychwyn rhywbeth.
Gwiriwch y llwybr sydd wedi’i osod a’r llwybr y mae’n ei ennill
Unwaith y bydd y cleient yn derbyn y llinell, edrychwch beth a osododd a pha lwybr y mae’r cnewyllyn yn ei ddewis ar gyfer cyfeiriad cynrychioladol o fewn y bloc. Os yw’r rhagddodiad a osodwyd yn wahanol i’r hyn a ysgrifennoch, gweithredodd normalydd ar eich rhan.
Holwch gyfeiriad aelod yn ogystal ag un y tu allan i’r bloc, fel bod y gymhariaeth yn ystyrlon yn hytrach nag yn un llinell gysurlon:
ip -4 route show 172.20.128.0/20
ip -4 route get 172.20.140.10
ip -4 route get 172.20.200.10Dylai’r trydydd ymholiad ddisgyn y tu allan i’r twnnel os yw eich rhagddodiad yn gywir, a phan nad yw, mae’r llwybr a adeiladwyd gennych yn lletach nag yr ydych yn ei feddwl. Cofnodwch beth oedd y rhagddodiad i fod i’w gynnwys cyn i chi gyffwrdd â’r gosodiad nesaf, oherwydd mae llwybr sy’n dosrannu a llwybr sy’n gweithio yn parhau’n arsylwadau ar wahân.