Služba publikovaná cez bránu funguje z väčšiny internetu a zlyháva z jednej kancelárie. Niekto skontroluje tunel, uvidí prichádzajúcu požiadavku a usúdi, že odpoveď musí ísť tou istou cestou späť. Linux tak nefunguje a žiadne skúmanie tunela na tom nič nezmení. Odpoveď sa smeruje podľa cieľa a ten jediný nefunkčný volajúci sedí v podsieti, ktorú hostiteľ už dosahuje priamo.

Čo skutočne rozhoduje o odchádzajúcom pakete

Jadro vyhľadá trasu pre cieľ paketu, prejde pravidlá politiky v poradí priority a potom tabuľku, ktorú vyberie zodpovedajúce pravidlo. Rozhranie, ktorým paket prišiel, nehrá žiadnu úlohu, ak na to nebolo napísané pravidlo alebo značka. To je fakt o smerovaní tohto hostiteľa, nie porucha tunela.

Požiadavka prijatá tunelom preto môže vytvoriť odpoveď, ktorá odchádza cez fyzické rozhranie, a tok sa stane jednosmerným bez toho, aby akékoľvek zariadenie hlásilo chybu. Pred záverom o tuneli skontrolujte oba smery. Odpoveď, ktorá odíde nesprávnym smerom, zmizne z počítadiel tunela, a preto sa oba konce nezhodnú na tom, či bolo niečo odoslané. Všimnite si, ktoré počítadlo sa pohlo, skôr než sa dotknete pravidla.

Prečo vyhráva miestna podsiete

Hostiteľ s adresou v miestnej sieti má v hlavnej tabuľke pripojenú trasu pre tento prefix a pripojená trasa je priama zhoda. Keď volajúci prichádza z tej istej podsiete, vyhľadávanie nájde miestne spojenie skôr, než sa tunel vôbec zváži.

Práve asymetria robí diagnózu mätúcou. Volajúci zo širšieho internetu fungujú, pretože nezodpovedajú žiadnej miestnej trase, kým jediný volajúci, ktorý zdieľa kancelársky prefix, zlyháva, a to je presne ten volajúci, s ktorým niekto testuje.

Pokrytie peerov nie je to isté ako nainštalované trasy

Na strane tunela povolené rozsahy peeru opisujú, čo sa smie posielať do tunela a ktoré zdroje sa z neho prijímajú. Nič nehovoria o tom, kam miestna smerovacia tabuľka paket pošle.

Ak nástroj tunela nainštaluje na hostiteľa predvolenú trasu, môže do tunela zatiahnuť nesúvisiacu prevádzku ako vedľajšiu škodu. Tam, kde má rozhodnutie vlastniť pravidlo politiky, existuje voľba inštalácie trás práve preto, aby tomu nástroj zabránil, a adresy, kľúče a nastavenia koncového bodu zostanú presne také, aké boli. Predvolená trasa pridaná pre pohodlie je častý spôsob, akým hostiteľ stratí vlastnú miestnu sieť.

Vyberte tabuľku podľa zdrojovej adresy

Pravidlo založené na zdroji posiela odpovede z adresy služby do súkromnej tabuľky, ktorej predvolenou hodnotou je tunel, zatiaľ čo všetko ostatné ďalej používa hlavnú tabuľku. Vyberte čísla tabuľky a priority, ktoré sa miestne nepoužívajú, a pred vložením čohokoľvek si prečítajte existujúce pravidlá. Čítajte živé pravidlá, nie uložený súbor, pretože po reštarte sa môžu líšiť.

ip -6 route add default dev wg0 table 200
ip -6 rule add priority 32000 from 2001:db8:aa::20/128 lookup 200
ip -6 rule add priority 32001 from 2001:db8:aa::20/128 unreachable

Posledný riadok spôsobí, že chýbajúca trasa viditeľne zlyhá, namiesto toho aby sa vrátila na miestne spojenie. Zdroj musí byť hostiteľovi skutočne pridelený a bežné miestne a hlavné vyhľadávania musia zostať na svojich predchádzajúcich pozíciách. Pravidlo vyberá tabuľku podľa zdroja; neporovnáva dĺžky prefixov medzi tabuľkami.

Potvrďte cestu, potom službu

Spýtajte sa jadra, čo by urobilo, namiesto usudzovania zo zachytenia, s adresou služby ako selektorom zdroja. Správna odpoveď tu ušetrí celé sledovanie paketov.

ip -6 route get 2001:db8:bb::30 from 2001:db8:aa::20

Výstup by mal pomenovať tunel. Potom otestujte zdroj, ktorého ste sa nedotkli, a potvrďte, že stále ide cez miestne spojenie, takže zmena zostala obmedzená na jednu adresu. Širší selektor by o pôvodnej sťažnosti nič nedokázal.

Čo toto neopravuje

Nechajte preposielanie, pravidlá firewallu a správanie ICMPv6 na bráne tak, ako boli, pretože trasa podľa zdroja nenahrádza nič z toho. Chýbajúca správa Packet Too Big stále láme veľké odpovede bez ohľadu na to, ktorá tabuľka vyhľadávanie vyhrala. Opravte to pred pridaním smerovacích pravidiel, inak príznak zmenu prežije.

Pred použitím čohokoľvek z toho potvrďte model publikovania. Reverzný proxy, ktorý otvára vlastné backendové spojenie, predstavuje vlastný zdroj a nezachováva volajúceho, takže v takom návrhu táto porucha nemôže nastať. Použitie pravidla tam by pridalo smerovaciu výnimku, ktorá nič nerieši a skrýva skutočnú príčinu.

Nakoniec zapíšte čísla pravidiel a tabuľku do správy konfigurácie hostiteľa. Pravidlo politiky pridané ručne zmizne pri ďalšom prestavaní a kancelársky volajúci sa vráti s tou istou sťažnosťou.

Súvisiace články