Co politické směrování mění u VPN provozu a co ne
Pravidla vybírají, která tabulka se prohlíží, takže výchozí trasa v hlavní tabulce často nic nevysvětlí. Čtěte priority, značky a zdroje společně, než přidáte pravidlo.
Politické směrování odpovídá na jinou otázku, než jakou kladou většina poznámek k odstraňování závad. Hlavní tabulka říká, kam cíl jde; pravidla politiky říkají, která tabulka se vůbec prohlíží, a mohou to rozhodnout podle zdrojové adresy, značky paketu, nebo rozhraní, na kterém paket dorazil. Když se tunel chová nekonzistentně, sada pravidel je často příčinou a směrovací tabulka často ne.
Pravidla vybírají tabulku, pak tabulka vybírá trasu
Každé pravidlo nese prioritu, podmínku shody a cílovou tabulku. Jádro prochází pravidla v pořadí priority a zastaví se u první shody, potom provede běžné hledání nejdelšího prefixu v této tabulce. Pravidlo ukazující na prázdnou tabulku propadne na to, co vybere další pravidlo, a tak může pečlivě napsané pravidlo vypadat, že nic nedělá.
Proto výpis hlavní tabulky málokdy vysvětlí fungujícího klienta VPN. Klienti obvykle vkládají pravidla s nízkými čísly priority, dlouho před výchozím pravidlem hlavní tabulky, takže paket nikdy nedosáhne trasy, na kterou jste se dívali. Snížení metriky v hlavní tabulce nic nezmění pro provoz, který už byl odkloněn.
Pravidlo také může záměrně udělat z prefixu černou díru nebo jej učinit nedostupným. Někteří klienti přidávají takové pravidlo jako vypínač, a pak odhoz vypadá jako rozbitý tunel, nikoli jako nakonfigurovaný.
Čtěte sadu pravidel jako posloupnost, ne jako seznam
Vypište pravidla s jejich prioritami a tabulkami, na které odkazují, potom vypište každou tabulku, která nese výchozí trasu nebo trasu tunelu. Pořadí je ta část, na které záleží, a je to část, kterou snímek obrazovky obvykle vynechá:
ip rule show ip route show table all | sed -n '1,60p' ip route get 198.51.100.20 from 10.8.0.2 ip route get 198.51.100.20 from 10.8.0.2 mark 0x1
Poslední dva příkazy jsou ty, které mění teorii v pozorování, protože se ptají co by jádro udělalo pro ten zdroj a tu značku. Pokud se odpověď změní, když se změní značka, je ve hře pravidlo založené na značce a každý test, který značku vynechá, testuje jiný paket. Vnější spojení si zaslouží vlastní pravidlo. Tunel, který směruje veškerý provoz sám přes sebe, musí vyloučit adresu koncového bodu, ke kterému se připojuje, jinak se šifrované pakety posílají zpět do tunelu, který právě opustily. Většina klientů toto vyloučení vkládá automaticky, a ručně upravená sada pravidel je místo, kde chybí.
Značky a sockety: dva způsoby, jakými klienti dělí provoz
Někteří klienti značí pakety ve firewallu a přidávají pravidlo, které značce odpovídá. Jiní používají směrování na úrovni socketu a nastavují trasu na socketu před připojením. První je vidět v ip rule; druhé ne, a v obecném vyhledávání se neobjeví.
Pokud se testovací program chová jinak než aplikace, kterou má zastupovat, zkontrolujte, zda aplikace nastavuje značku nebo se váže na zařízení. Ten rozdíl není záhada, jakmile se mechanismus pojmenuje, a vysvětluje, proč curl z shellu a karta prohlížeče mohou na stejném stroji jít různými cestami. Obě techniky jsou politické směrování v širokém smyslu: vybírají cestu pomocí něčeho jiného než cíle. Ani jedna z nich provoz neautorizuje a ani jedna nenahrazuje pravidla firewallu nebo přihlašovací údaje, které protějšek očekává.
Vystopujte vlastnictví, než přidáte další pravidlo
Pravidla instaluje něco. Klient VPN, správce sítě a ručně psaný skript mohou každý při startu přidat pravidla a logika opětovného připojení může ponechat předchozí sadu. Dvě zastaralá pravidla z dřívějšího profilu budou nadále řídit provoz dlouho poté, co byl profil smazán.
Najděte, který proces pravidlo vlastní podle jeho priority a tvaru, a zkontrolujte, zda tento vlastník sadu při každém připojení přepisuje. Pokud ano, ruční pravidlo přidané dnes zítra zmizí a oprava patří do konfigurace klienta, ne do souboru historie shellu. Smazání celé sady pravidel kvůli testu je lákavá zkratka s předvídatelnou cenou: odstraní i pravidla, která klient potřebuje, aby jeho vlastní tunel fungoval. Mažte jedno pravidlo po druhém, nebo testujte na stroji, který můžete restartovat.
Dokažte rozsah dvěma toky, ne jedním
Oprava se ověří jen tokem, který má být zasažen, a tokem, který ne. Vyberte cíl, který politika směruje do tunelu, a jeden, který musí zůstat venku, potom porovnejte vyhledání a zachycení pro oba:
ip route get 198.51.100.20 from 192.0.2.44 ip route get 198.51.100.21 from 192.0.2.44 tcpdump -ni any host 198.51.100.21 and port 443
Když dvě vyhledání vrátí různá rozhraní, pravidlo něco dělá. Když vrátí stejné rozhraní, pravidlo odpovídá šířeji, než bylo zamýšleno, a to je porucha, která tiše posílá celou podsíť tunelem určeným pro jednu aplikaci.
Zapište priority pravidel a vlastnící službu do tiketu spolu se dvěma testovacími adresami. Další člověk pak má reprodukovatelnou dvojici místo popisu symptomu a dokáže během minuty říct, zda politické směrování stále působí.