Rhagddodiad gwesteiwr WireGuard: pam mae un cyfeiriad yn gweithio a’r lleill ddim
Mae /32 ar y rhyngwyneb yn rhagddodiad gwesteiwr dilys ac yn llwybro’r cyfeiriad hwnnw yn unig. Ychwanegwch y llwybr y mae AllowedIPs yn ei awgrymu, yna gwiriwch y llwybr yn ôl.
Mae’r twnnel i fyny, mae’r handshake yn digwydd bob dwy funud, ac mae’n union un cyfeiriad ar yr ochr arall yn ateb. Mae pingiau i gyfeiriad twnnel y cymar yn gweithio; nid oes unrhyw beth y tu ôl iddo yn gweithio. Mae rhywun yn darllen ffurfweddiad y rhyngwyneb, yn gweld rhagddodiad gwesteiwr ac yn casglu bod y mwgwd yn anghywir. Mae ei ehangu i /24 yn trwsio’r ping am gyfnod ac yna’n torri rhywbeth arall. Nid y rhagddodiad oedd y bai erioed, ac nid y llwybr oedd ar goll yw’r un y mae’r mwgwd yn ei reoli.
Beth mae rhagddodiad y rhyngwyneb yn ei greu mewn gwirionedd
Ar Linux mae neilltuo cyfeiriad i ryngwyneb yn creu llwybr cysylltiedig ar gyfer y rhagddodiad hwnnw. Os neilltuwch ragddodiad gwesteiwr mae’r llwybr cysylltiedig yn cwmpasu un cyfeiriad. Os neilltuwch /24 mae’n cwmpasu 256, ac mae pob un ohonynt bellach yn cael ei ystyried yn gyrhaeddadwy dros y cyswllt hwnnw.
ip -4 addr show dev wg0
ip -4 route show dev wg0
ip route get 10.80.7.1
Mae rhagddodiad gwesteiwr yn ddewis hollol normal ar gyfer twnnel pwynt-i-bwynt, oherwydd bod yn union un cymar ar yr ochr arall. Y trydydd gorchymyn yw’r un sy’n ateb cwestiwn y defnyddiwr: mae’n dweud pa ryngwyneb y byddai’r cnewyllyn yn ei ddefnyddio ar gyfer y cyrchfan honno, ac ni fydd yn dangos unrhyw beth defnyddiol os nad oes unrhyw lwybr yn cyfateb.
Dyna’r holl esboniad am y symptom. Mae un cyfeiriad yn ateb oherwydd bod llwybr cysylltiedig ar ei gyfer, neu oherwydd bod y rhestr a ganiateir gan y cymar yn ei gynnwys trwy ddamwain. Nid oes gan bopeth arall lwybr ac mae’n cael ei ollwng cyn i WireGuard fod yn rhan ohoni o gwbl. Mae’r twnnel yn iach drwy’r amser, a dyna pam mae’r cyfrifydd handshake yn parhau i edrych yn dawel.
Mae AllowedIPs yn ddwy reol o dan un enw
Mae’r rhestr a ganiateir fesul cymar yn WireGuard yn gwneud dau waith ar unwaith, ac mae cystrawen y ffurfweddiad yn gwneud iddynt edrych fel un. Ar y ffordd i mewn mae’n caniatáu pa gyfeiriadau ffynhonnell y caiff cymar eu cyflwyno. Ar y ffordd allan mae’n dewis pa gymar y mae pecyn yn cael ei anfon ato, drwy ddod o hyd i’r cyfatebiad mwyaf penodol.
Nid yw’r un o’r ddau waith yn llwybro. Rhaid i’r cnewyllyn benderfynu o hyd bod pecyn yn perthyn i ryngwyneb y twnnel cyn i WireGuard edrych arno, ac mae’r penderfyniad hwnnw’n dod o’r tabl llwybro. Nid yw cofnod cymar â rhestr a ganiateir llydan yn gosod llwybr ar ei ben ei hun.
Dyna pam y gall ffurfweddiad edrych yn gyflawn ac ymddwyn yn anghymesur. Mae’r cleient yn anfon at yr ochr arall oherwydd bod llwybr yn bodoli, ac ni fydd atebion byth yn cyrraedd oherwydd nad yw’r rhestr a ganiateir ar yr ochr arall yn caniatáu ffynhonnell y cleient, neu oherwydd nad oes gan yr ochr arall lwybr yn ôl. Mae’r ddau gyfeiriad yn benderfyniadau ar wahân â moddau methu ar wahân. Mae ysgrifennu pa un yr ydych yn ei brofi yn hanner y diagnosis.
O ble mae’r llwybr yn dod
Os ydych yn defnyddio wg-quick, mae’r llwybrau’n cael eu cynhyrchu i chi o restr a ganiateir pob cymar, oni bai eich bod wedi gosod Table = off ac wedi cymryd yr awenau eich hun. Dyna’r ymddygiad a ddogfenir gan yr offeryn, a dyna’r rheswm pam mae ffurfweddiad heb gyfarwyddebau llwybr penodol yn gweithio o hyd.
sudo wg show wg0 allowed-ips
ip route show | grep wg0
sudo wg-quick strip wg0
Cymharwch y rhestr a ganiateir â’r llwybrau sydd yno mewn gwirionedd. Mae cymar sy’n caniatáu is-rwydwaith cyfan ond na chreuodd ond llwybr gwesteiwr yn golygu na redodd y cynorthwyydd erioed, neu eich bod yn rheoli’r rhyngwyneb yn uniongyrchol gyda wg a ip, ac yn yr achos hwnnw nid oes unrhyw beth yn cynhyrchu llwybrau i chi.
Pan fyddwch yn ei reoli â llaw, un llinell yw’r llwybr ac mae ei siâp yn benodol: y gyrchfan drwy’r rhyngwyneb, heb giât oherwydd bod y cyswllt yn bwynt-i-bwynt. Nid yw ei ychwanegu yn ffordd o osgoi rhagddodiad gwael; hanner coll y dyluniad a ddewisodd gymryd y llwybro ar ei le ei hun ydyw.
Nid yw rhagddodiad lletach yn ychwanegu cofnod y cymar
Y cywiriad temtasiwn yw newid y cyfeiriad i /24 fel bod y llwybr cysylltiedig yn cwmpasu LAN y gweinydd. Mae’n ymddangos ei fod yn gweithio, a’r rheswm pam mae’n ymddangos ei fod yn gweithio yw bod y llwybr cysylltiedig yn cyfateb nawr, nid bod WireGuard wedi dysgu unrhyw beth newydd.
Yr hyn a wnaethoch hefyd yw hawlio’r amrediad cyfan fel un a ellir ei gyrraedd yn uniongyrchol dros y cyswllt hwnnw, gan gynnwys cyfeiriadau sy’n perthyn i gymarau eraill neu i LAN sydd mewn gwirionedd y tu ôl i’r gweinydd. Mae traffig i’r cyfeiriadau hynny nawr yn mynd i mewn i’r twnnel, ac mae a yw’n dod allan yr ochr arall yn dibynnu ar lwybro a rhestrau a ganiateir y gweinydd ei hun.
Nid yw’r ochr grifftograffaidd yn cael ei heffeithio mewn unrhyw achos. Mae WireGuard yn dal i fod angen cofnod ar y rhestr a ganiateir sy’n cwmpasu’r gyrchfan i ddewis cymar, ac mae ar yr ochr arall angen cofnod sy’n cwmpasu eich ffynhonnell i’w dderbyn. Ni all rhagddodiad rhyngwyneb lletach ddarparu’r naill na’r llall.
Cadarnhewch y ddau gyfeiriad cyn newid unrhyw beth
Gweithiwch ar y ddau ben ar wahân ac ysgrifennwch beth mae pob un yn ei ddweud. Ar y cleient y llwybr a chofnod y cymar; ar y gweinydd y ddelwedd ddrych ynghyd â’i lwybr yn ôl ei hun:
ip route get 192.168.70.20
sudo wg show wg0 allowed-ips
sudo wg show wg0 latest-handshakes
sudo tcpdump -ni wg0 -c 10
Y daliad yw’r peth sy’n setlo anghytundebau am gyfeiriad. Os yw pecynnau allan yn ymddangos ar ryngwyneb y twnnel ac nad yw’r gweinydd yn cofnodi unrhyw beth, mae’r pen pellaf yn eu gwrthod, fel arfer oherwydd bod eich ffynhonnell y tu allan i’w restr a ganiateir. Os nad oes unrhyw beth yn ymddangos o gwbl, mae’r llwybr ar goll neu’n pwyntio rywle arall.
Yna trwsiwch y pen culaf. Cofnod ar y rhestr a ganiateir ar ochr y gweinydd ar gyfer cyfeiriad eich cleient a chofnod ar ochr y cleient ar gyfer yr is-rwydwaith cyrchfan yw’r ffurf arferol, ac mae’n gadael rhagddodiad y rhyngwyneb yn llonydd. Peidiwch â lledaenu’r rhagddodiad oni bai bod y cynllun cyfeiriadau wir yn dymuno is-rwydwaith a rennir ar y cyswllt hwnnw, a gwnewch hynny fel newid cynllun yn hytrach na cham dadfygio.