Mae tair naid WireGuard yn cyrraedd rhwydwaith heb gyfeiriad cyhoeddus, ac yna mae’r peiriant canol yn stopio ateb ar y porthladd yr oedd i fod i wrando arno. Mae’r twnnel ymlaen yn dal i weithio, mae’r gwesteiwr pell yn dal i ymateb, a dim ond y gweinydd canol ei hun sydd wedi mynd yn dawel o’r tu allan. Mae’r cyfuniad hwnnw’n ddryslyd yn union oherwydd ei fod wedi’i achosi ganddo’i hun: mae’r naid ganol yn ufuddhau i’w thabl llwybro ei hun, ac mae’r tabl yn anfon ei hatebion y ffordd anghywir.

Cadwyn sy’n gweithio nes i chi siarad â’r blwch canol

Cymerwch gadwyn ddarluniadol: mae cleient A yn cyrraedd gweinydd B ar UDP 500, ac mae B yn mynd ymlaen i weinydd C ar UDP 500. Dim ond o gyfeiriad ei unig bartner y mae C yn derbyn traffig, sy’n ei wneud yn ddeilen ac yn cadw ei ymddygiad yn syml. Nid yw B yn ddeilen, ac mae popeth diddorol am y methiant hwn yn digwydd yno.

Mae’r gwahaniaeth yn bwysig oherwydd bod rolau deilen a chanol yn tynnu i gyfeiriadau croes. Gall deilen anfon popeth i un twnnel heb ganlyniad, gan nad oes dim arall yn dibynnu arni. Mae naid ganol ar yr un pryd yn bwynt terfyn i gleientiaid ac yn gleient tuag at yr ochr bell, ac mae’r ddau swydd hynny eisiau llwybro gwahanol.

Pam mae’r ateb yn gadael trwy’r twnnel

Ar B, mae’r rhyngwyneb sy’n wynebu C yn cario AllowedIPs = 0.0.0.0/0 ynghyd â’r llwybr diofyn cyfatebol. Felly mae pob pecyn y mae B yn ei greu yn mynd i’r twnnel hwnnw, oni bai bod rhywbeth mwy penodol yn cael blaenoriaeth.

Mae pecyn o A wedi’i gyfeirio at B yn cyrraedd ac yn cael ei dderbyn, oherwydd B yw’r cyrchfan ac mae danfoniad lleol yn digwydd gyntaf. Mae’r ateb yn becyn newydd sbon a gynhyrchwyd yn lleol ac wedi’i anelu at gyfeiriad cyhoeddus A, ac mae’r gyrchfan honno’n cyfateb i’r llwybr diofyn i mewn i’r twnnel. Mae C yn ei dderbyn, nid yw’n berchen ar y cyfeiriad hwnnw, ac mae’n ei ollwng.

Mae’r symptom yn darllen fel problem wal dân neu gamgymhariad allwedd, ac nid yw’r naill na’r llall yn wir yma. Mae cipio ar y twnnel tuag at C yn dangos bod yr atebion yn mynd i’r cyfeiriad anghywir. Mae’r un arsylwi hwnnw’n arbed mwy o amser nag unrhyw faint o ddarllen ffurfweddiad, felly nodwch ef cyn dechrau newid allweddi. Bydd unrhyw un nad yw wedi gweld y cipiad yn tybio bod y twnnel ei hun wedi torri.

Y trwsiad cul: rheolau polisi sy’n cyfateb i borthladd ffynhonnell

Mae atebion o soced gwrando B yn gadael gyda phorthladd ffynhonnell 500. Gall rheol polisi gyfateb i hynny ac anfon y pecunau hynny’n ôl i’r tabl arferol:

ip rule add sport 500 table main priority 100
ip rule add sport 8080 table main priority 101

Mae rheolau polisi’n cael eu hystyried yn nhrefn blaenoriaeth, ac mae’r prif dabl yn eistedd ar 32766, felly gofynnir i reol ar 100 cyn i lwybr diofyn y twnnel gael dweud ei ddweud. Ychwanegwch un cofnod fesul porthladd sy’n rhaid aros yn gyrraeddadwy o’r tu allan a dim mwy, fel bod traffig a anfonir ymlaen yn dal i ddefnyddio’r twnnel y cafodd ei adeiladu ar ei gyfer.

Gwybyddwch derfyn y tric hwn. Mae’r detholydd sport yn cyfateb i becunau a gynhyrchwyd yn lleol, sy’n cwmpasu’n union achos yr ateb ac yn fwriadol nid yw’n cwmpasu traffig y mae B yn unig yn ei anfon ymlaen ar gyfer rhywun arall. Mae gwasanaeth a gynhelir y tu ôl i B yn dal i fod angen ei ateb ei hun, ac mae esgus fel arall yn cynhyrchu trwsiad sy’n gweithio i’r gwasanaeth cyntaf ac yn methu i’r ail.

Rhowch berchemnog i’r rheol

Mae rheol a deipiwyd mewn prompt yn diflannu’r tro nesaf y caiff y rhyngwyneb ei ailadeiladu. Mewn sefyllfa WireGuard, rhowch ef lle mae’r rhyngwyneb yn cael ei greu a’i dynnu:

PostUp = ip rule add sport 500 table main priority 100
PostDown = ip rule del sport 500 table main priority 100

Os NetworkManager, bachyn dosbarthiad neu bwynt mynediad cynhwysydd sy’n berchen ar y rhyngwyneb, mae’r pâr yn perthyn i’r perchemnog hwnnw yn hytrach nag i ffeil a olygwyd â llaw. Gwiriwch y rheolau effeithiol ar ôl ailgysylltu, nid yn unig ar ôl y cychwyn cyntaf, oherwydd y cychwyn cyntaf yw’r achos sy’n gweithio bob amser.

Cymharwch yr amrywiolion yn onest

Mae’r rheol porthladd ffynhonnell yn un o bedwar ffordd allan, ac yn y culaf ohonynt. Mae ganddi’r fantais o beidio â chyffwrdd â pholisi’r twnnel o gwbl, a dyna pam mae’n tueddu i oroesi newidiadau diweddarach. Mae trwsiadau cul hefyd yn methu’n glir pan fyddant yn peidio â chymhwyso, tra bod eithriad eang yn parhau i weithio’n ddistaw ymhell ar ôl i’r rheswm ddiflannu. Mae’r gwahaniaeth hwnnw’n bwysicach nag elegans pan fydd rhywun arall yn berchen ar y blwch mewn dwy flynedd.

ApproachWhat it costsWhere it breaks
Source-port policy ruleOne rule per exposed portAnything B forwards rather than originates
Destination exception routeA route pinned to specific client addressesClients whose address changes
Stop full-tunnelling on BLoses the catch-all path toward CDesigns that depend on it
Split into two tunnelsMore interfaces and more policyNothing, at the cost of complexity

Gwiriwch o’r ddau ben unwaith y byddwch wedi dewis. O A, dechreuwch gysylltiad â phorthladd B a’i gadw’n brysur am gyfnod. Ar B, gwnewch i’r cnewyllyn gyfiawnhau llwybr yr ateb â rhywbeth fel ip route get <address-of-A> sport 500, a chadarnhewch ei fod yn enwi’r rhyngwyneb WAN yn hytrach na’r twnnel. Wedi hynny, gwiriwch fod rhywbeth y tu ôl i C yn dal i ateb trwy’r gadwyn, sy’n profi bod yr eithriad wedi aros yn gul yn hytrach na throi’n osgoi. Yn olaf, cofnodwch y porthladdoedd yn y nodiadau dylunio, neu bydd y gweithredwr nesaf yn ailddarganfod hyn ar wasanaeth gwahanol.

Erthyglau cysylltiedig