IPv6 lleol-i'r-ddolen ddim yn gweithio dros VPN: pam mae fe80 yn aros ar y ddolen
Dim ond ar un ddolen y mae cyfeiriad fe80:: yn golygu rhywbeth. Gwelwch pam na all VPN a lwybrir ei gludo, sut mae'r methiant yn edrych, a pha gyfeiriad i'w ddefnyddio yn ei le.
Rydych yn codi'r twnnel, yn pingio fe80::1 gyda'r twnnel fel y rhyngwyneb ffynhonnell, ac yn dychwelyd yn wag. Nid yw'n rheol mur tân a anghofioch. Dim ond ar yr un ddolen lle y ffurfiwyd ef y mae cyfeiriad lleol-i'r-ddolen yn golygu rhywbeth, ac nid yw VPN a lwybrir yn y ddolen honno. Mae fe80::1 y llwybrydd pell yn byw ar segment pell y LAN; rydych chi un naid i ffwrdd ar segment gwahanol, ac nid oes gan IPv6 unrhyw fecanwaith i lwybrydd anfon pecynnau lleol-i'r-ddolen ymlaen o gwbl.
Mae'r rhagddodiad fe80 yn disgrifio cwmpas, nid amrediad
Unicast lleol-i'r-ddolen yw fe80::/10, a'r nodwedd sy'n diffinio yw'r cwmpas, nid y rhif. Dim ond ar un ddolen y mae'r cyfeiriad yn ddilys, ac mae pob rhyngwyneb yn ffurfio un o'i adnabyddwr ei hun; dyna pam y gall dau beiriant di-gysylltiad ar ddwy rwydwaith ddi-gysylltiad ateb ill dau i fe80::1 heb unrhyw wrthdaro. Yn y bôn mae'r rhagddodiad yn dweud “ar ryw ddolen”; daw'r ddolen ei hun o'r cyd-destun.
Ar westeiwr, y cyd-destun hwnnw yw'r parth, neu'r ID cwmpas, a ychwanegwch ar ôl arwydd y cant: fe80::1%eth0 ar Linux, fe80::1%3 neu fe80::1%12 ar Windows ac mewn offer sy'n dangos mynegeion rhyngwyneb. Mae'r cnewyllyn yn datrys y cyfeiriad ynghyd â mynegai'r rhyngwyneb ac yna'n anfon. Os tynnwch y parth, mae'r gyrchfan yn amwys, felly nid oes gan y pentwr ffordd i ddewis segment.
Pam na all twnnel a lwybrir ei chludo
Mae VPN a lwybrir yn rhyngwyneb pwynt-i-bwynt sy'n cario ei gyfeiriadau ei hun, fel arfer /64 o ofod IPv6 unigryw-leol neu breifat y tu mewn i'r twnnel. Mae'r LAN pell yn ddolen ar wahân, a gyrrheir ati trwy lwybro a chyfeirio pen y twnnel ar eich rhan. Dau segment ar wahan yw'r rhain, felly nid yw cyfeiriad o'r naill yn gyrchfan ddilys ar y llall.
Mae'r rheol gyfeirio yn glir yn y safon ac nid yn rhyfeddod yn eich cleient: nid yw llwybryddion yn cyfeirio pecynnau â ffynhonnell neu gyrchfan lleol-i'r-ddolen. Dyna pam mae'r pecyn yn marw hyd yn oed pan fo'r tabl llwybro yn edrych yn gywir. Ychwanegwch lwybr ar gyfer fe80::/64 at y twnnel ac mae pentwr sy'n cydymffurfio naill ai'n ei wrthod neu'n ei dderbyn ac yn gollwng pob pecyn sy'n cyfateb: mae cwmpas y gyrchfan yn dweud “y ddolen hon yn unig”, ac nid y ddolen honno yw'r rhyngwyneb allan.
Mae darganfod cymdogion yn atgyfnerthu'r un ffin. Mae gwesteiwyr yn datrys neidiau nesaf lleol-i'r-ddolen gyda chais cymydog a anfonir at multicast cwmpas dolen â therfyn naid o 255, fel y gall llwybryddion wrthod unrhyw beth a gyfeirir. Byddai gwneud hynny'n gweithio dros dwnnel yn golygu dirprwyo darganfyddiad ar gyfer segment pell, sef pont haen 2 mewn het wahanol.
Mae ail fethiant tawelach, ac mae'n baglu pobl sy'n ceisio gorfodi'r llwybr beth bynnag: y parth. Pa bynnag barth a deipiwch yn lleol, mae'n enwi rhyngwyneb y twnnel, tra bod y cyfeiriad rydych ei eisiau wedi'i rwymo i ryngwyneb y LAN pell. Nid yw'r ddau byth yn cyfateb, felly ni ellir cyfeirio'r pecyn at y rhyngwyneb cywir ar y pen pell.
Sut mae'r methiant yn edrych yn ymarferol
Mae allbwn offer ar gyfer camgymeriad cwmpas yn darllen fel gwall llwybro neu fur tân, a dyna'n union pam mae pobl yn treulio prynhawn yn y haen anghywir.
| What you run | What you see | What it means |
|---|---|---|
| ping fe80::1 with no zone | Invalid argument on Linux, or a transmit failure on Windows | The stack cannot pick an interface for an ambiguous destination |
| ping -6 -I tun0 fe80::1 | Destination unreachable, or a silent timeout | The address is not on the tunnel link, so there is nothing on-link to answer |
| ssh user@fe80::1 after the tunnel is up | Hangs, then no route to host | The SYN never left the machine in a deliverable form; the server logs nothing |
| ip -6 neigh show dev tun0 | Empty table | No neighbor entry can exist for a link-local host that is not on this link |
| fe80::/64 inside AllowedIPs or route-ipv6 | Config accepted, traffic still dropped | The tunnel carried the packet; the receiving stack refused to forward it |
Y drydedd res sy'n gwastraffu'r mwyaf o amser, oherwydd mae cleient ssh heb allbwn yn edrych fel problem gwasanaeth sy'n gwrando. Os oes gennych unrhyw ffordd i mewn, edrychwch ar yr ochr bell a chadarnhewch a yw sshd wedi'i rwymo i bob cyfeiriad neu i un yn unig.
Defnyddiwch gyfeiriad a oedd i fod i gael ei lwybro
Ar gyfer unrhyw beth y mae angen i chi gyrraedd trwy'r twnnel, defnyddiwch y cyfeiriad a roddwyd i'r gwasanaeth at y diben hwnnw: cyfeiriad unicast byd-eang, neu gyfeiriad unigryw-leol o fc00::/7, yr amrediad a gadwyd yn union ar gyfer yr achos mewnol hwn. Cadarnhewch fod y gwrandäwr yn ei rwymo mewn gwirionedd, a chadarnhewch y llwybr dychwelyd ac unrhyw reol mur tân ar y gwesteiwr.
Edrychwch ar y gwesteiwr pell yn hytrach na dyfalu. Mae ip -6 addr show yn rhestru'r cyfeiriadau sy'n bodoli, ac mae ss -6 -ltn yn rhestru'r hyn y mae'r daemon yn gwrando arno. Dim ond o'i segment ei hun y gellir cyrraedd gwasanaeth sydd wedi'i rwymo i fe80:: yn unig, ac fel arfer dyma osodiad diofyn na ddewisodd neb yn fwriadol ac y gellir ei newid gyda chytundeb y gweinyddwr.
Pan nad oes modd ailrwymo'r gwasanaeth o gwbl, symudwch y bont i fyny i'r haen cymhwysiad yn lle'r haen rwydwaith. Mae trosglwyddydd ar y gwesteiwr pell sy'n gwrando ar gyfeiriad llwybradwy ac yn cysylltu â'r un lleol-i'r-ddolen yn datrys y broblem heb ymestyn unrhyw segment:
socat TCP6-LISTEN:8080,bind=[fd00:1:2::10] TCP6:[fe80::1%eth0]:80Yma mae'r parth ar yr ochr gywir, ar y gwesteiwr sydd â eth0 ar y ddolen honno mewn gwirionedd. Mae eich cleient yn siarad â fd00:1:2::10, sy'n llwybro fel arfer, ac mae'r trosglwyddydd yn gwneud y naid leol-i'r-ddolen yn lleol. Mae'r un tric yn gweithio ar gyfer rhyngwyneb gwe offeryn neu BMC hen sy'n hysbysebu cyfeiriad lleol-i'r-ddolen yn unig.
Pryd mae pontio wir yn ateb, a beth i'w wirio
Mae rhai gosodiadau wir angen un segment a rennir: dyfais sy'n siarad dim ond darganfyddiad lleol-i'r-ddolen, offeryn sy'n dibynnu ar multicast, labordy sy'n atgynhyrchu LAN fflat. Problem haen 2 yw hon ac mae angen ateb haen 2, megis dyfais tap wedi'i phontio i'r rhyngwyneb pell neu gynnyrch cleient â modd pontio penodol. Mae'n costio traffig darlledu a multicast yn croesi'r twnnel ynghyd â darganfyddiad cymdogion sy'n gorfod gweithio o ben i ben.
Peidiwch â'i amcangyfrif trwy ychwanegu fe80::/64 at broffil a lwybrir. Mae hynny'n cynhyrchu'r cyflwr gwaethaf oll: mae'r ffurfweddiad yn edrych yn orffenedig, mae'r tabl llwybro yn dangos cofnod, ac mae pob pecyn yn dal i gael ei daflu rywle rhwng dau bentwr sy'n ymddwyn yn gywir ill dau.
Gwiriwch gyda'r rhyngwyneb yn hytrach na'r ping. Mae ip -6 addr show tun0 yn dweud wrthych a yw dolen y twnnel wedi ffurfio cyfeiriad lleol-i'r-ddolen ei hun, ac mae ip -6 route get fe80::1%tun0 yn dweud beth fyddai'r cnewyllyn yn ei wneud mewn gwirionedd â chyrchfan â chwmpas. Pan fo'r cnewyllyn yn dweud bod y gyrchfan yn un na ellir ei chyrraedd ar y rhyngwyneb hwnnw, ni fydd unrhyw osodiad twnnel yn newid hynny, ac mae'n amser rhoi'r gorau i olygu'r proffil.
Dilyniant byr sy'n setlo'r cwestiwn:
- Darllenwch y cyfeiriad ar y gwesteiwr pell a nodwch ai fe80:: neu ragddodiad llwybradwy yw ef.
- Os yw'n fe80::, ailrwymwch y gwasanaeth, trosglwyddwch ar y gwesteiwr hwnnw, neu bontiwch y segment; os yw'n llwybradwy, trwsiwch y llwybr, y mur tân neu'r cyfeiriad rhwymo.
- Ailwirio'r parth bob tro y byddwch yn ailbrofi, oherwydd mae gorchymyn copïwyd fel arfer yn cadw'r rhyngwyneb anghywir.
Ffynonellau: RFC 4291, pensaernïaeth cyfeirio IPv6.