Smerujte mimo VPN iba jednu miestnu webovú službu podľa portu
Rozhodnite, či pravidlo zdrojového portu dokáže poslať jednu službu hostiteľa cez WAN, kým zvyšok hostiteľa ďalej používa VPN, a koľko to stojí.
Jedna služba hostiteľa musí odpovedať internetu cez fyzické vzostupné spojenie, kým všetko ostatné na stroji ďalej používa tunel. Tri podmienky rozhodujú, či smerovanie založené na politikách toto zaťaženie unesie, a každú z nich je pred písaním pravidla lacné overiť. Služba musí končiť na tomto hostiteľovi, nie za DNAT alebo presmerovaným portom, vlastné pravidlá VPN musia výnimku povoliť a musíte porovnávať odpoveď, nie požiadavku. Ak zlyhá ktorákoľvek z troch, príkazy nižšie sa načítajú bez chyby, ale neurobia nič užitočné.
Pred písaním pravidla overte tri podmienky
Kontajner, ktorý publikuje port cez DNAT, alebo server za presmerovaním portu, vytvára pakety, ktoré na tomto hostiteľovi nevznikajú. Tieto pakety sa preposielajú, takže pravidlo naviazané na miestny vstup hostiteľa ich nikdy nevidí a premávka ďalej používa predvolenú trasu. Pred pokračovaním potvrďte, kde služba skutočne beží, pretože je to podmienka, ktorú si ľudia najčastejšie mýlia.
Druhá podmienka je politika, nie mechanika. Každá trasa, ktorá obchádza tunel, je výnimkou z účelu tunela, a na spravovanom hostiteľovi toto rozhodnutie patrí tomu, kto vlastní politiku, nie človeku, ktorý ladí časový limit.
Porovnávajte odpoveď, nie cieľový port klienta
Odpoveď servera počúvajúceho na TCP 443 opúšťa hostiteľa so zdrojovým portom 443. Prehliadač na tom istom hostiteľovi, ktorý sa pripája k vzdialenej stránke HTTPS, posiela dočasný zdrojový port a cieľový port 443. Oboje je premávka portu 443 a iba jedna z nich by mala použiť tabuľku WAN, preto by zhoda cieľového portu zachytila nesprávnu polovicu.
Smer odpovede je to, čo dokážete rozlíšiť. Porovnajte zdrojový port, obmedzte pravidlo na miestne vytvorené pakety a pravidlo pokryje vlastné odpovede služby bez toho, aby sa dotklo požiadaviek prehliadača.
Predtým, než pravidlo na tabuľku ukáže, vytvorte úplnú návratovú tabuľku
Prázdna tabuľka znamená žiadnu trasu, čo vyzerá ako pokazená služba, nie pokazená politika. Najprv ju naplňte číslom tabuľky a prioritou, ktoré nič iné na hostiteľovi nenárokuje:
ip -4 route add table 100 192.0.2.0/24 dev eth0
ip -4 route add table 100 default via 192.0.2.1 dev eth0
ip -4 rule add priority 1000 iif lo ipproto tcp sport 443 lookup 100
Čísla čítajte zo živého hostiteľa, nekopírujte ich. ip -4 rule show vám povie, ktoré priority sú obsadené, a pridanie pravidla na už existujúcu prioritu potichu zmení poradie dvoch pravidiel, ktoré samostatne vyzerajú v poriadku.
Skutočnú prácu tu robia dva selektory. iif lo je spôsob, akým jadro hlási pakety, ktoré hostiteľ sám vytvoril, takže pravidlo nemôže omylom zachytiť preposielanú premávku prichádzajúcu zvonku. ipproto tcp sport 443 zužuje na jeden transport a jeden port, čo je také tesné, ako požiadavka dovolí. Odoberte selektor protokolu a pravidlo zachytí aj UDP 443, čo je iná služba s iným správaním.
Privátne odpovede udržte vnútri tunela
Ak ten istý poslucháč odpovedá aj klientom na privátnej strane, predvolená trasa WAN, ktorá v tabuľke 100 zachytí všetko, sa pokúsi tieto odpovede vrátiť cez vzostupné spojenie. Pridajte privátne prefixy, ktoré nesmú nasledovať predvolenú trasu WAN, alebo ich nechajte prepadnúť na ďalšie pravidlo politiky:
ip -4 route add table 100 throw 10.90.0.0/24
Trasa throw ukončí vyhľadávanie v tejto tabuľke a vráti paket zoznamu pravidiel, takže nasledujúca politika VPN dostane svoju šancu. Sama nič do tunela nesmeruje, a ak žiadne neskoršie pravidlo nemá zodpovedajúcu trasu, paket napriek tomu zlyhá; overte nasledujúcu politiku, namiesto toho, aby ste predpokladali, že throw je oprava.
Filtrovanie reverznej trasy a pravidlá firewallu hostiteľa stále platia pre prichádzajúcu požiadavku. Pozrite sa na ich skutočné verdikty, kým uvoľníte validáciu, pretože výnimka v smerovaní nespôsobí, že rp_filter prijme návratovú trasu, ktorú považuje za nemožnú.
Otestujte TCP, potom QUIC, potom reštart
Otvorte jedno spojenie z autorizovaného externého klienta a jedno z privátnej strany, potom preskúmajte vyhľadanie odpovede so skutočnými adresami a portami. Ak externá odpoveď použije tabuľku 100 a privátna nie, politika robí to, o čo ste požiadali.
HTTP/3 sa poskytuje cez UDP a pravidlo TCP ho nezachytí, takže poslucháč QUIC potrebuje vlastný selektor, inak bude ďalej používať tunel, kým HTTPS funguje. Uložte pravidlá, na ktorých sa ustálite, v komponente, ktorý vlastní rozhranie, a potvrďte ich po opätovnom pripojení alebo obnovení DHCP. Keď konkurenčný správca po reštarte odstráni behovú trasu, je to problém vlastníctva, ktorý treba riešiť pri zdroji, nie dôvod pridávať navrch širšie pravidlá NAT.