Usmerjanje po viru za dva nabora VPN: kaj vaše pravilo spregleda
Pravilo oblike from se ujema z naslovom odjemalca, preden ga SNAT prepiše, preizkus s prehoda pa se ne ujema z nobenim. Izvedite iskanje za vsak nabor in berite prioritete.
Dva nabora odjemalcev, en prehod in načrt je videti trivisten: eno pravilo pošlje prvi nabor po hitri povezavi navzgor, drugo pošlje drugi nabor skozi partnerski tunel. Nato so pravila na mestu in drugi nabor še vedno odhaja po privzeti poti. Pravilo ni pokvarjeno. Vir paketa ni tisto, kar je avtor pričakoval v trenutku iskanja, ker se prevajanje in iskanje zgodita na različnih točkah poti istega paketa, vrstni red pa je nasproten miselni shemi, ki jo riše večina.
Iskanje se zgodi preden se vir prepiše
Za paket, ki se posreduje od odjemalca VPN, jedro izvede fiksno zaporedje. Prispe na vmesnik tunela, gre skozi prerouting, kjer živita conntrack in DNAT, nato se sprejme odločitev o usmerjanju, nato posredovanje, nato postrouting, kjer se SNAT uporabi zadnji. Pravilo oblike from se preveri med to odločitvijo o usmerjanju, kar pomeni, da vidi izvorni naslov odjemalca, ne prevedenega.
Dodajanje pravila masquerade torej ne spremeni, katera politika ustreza odhodnemu toku. Spremeni se, kaj vidi oddaljeni konec, in s tem, katera povratna pot obstaja. To sta dve različni posledici in pregledi sprememb ju nenehno mešajo. Ločite ju in zasnova postane običajno jasna v minuti.
Prav v smeri odgovora se prevedeni naslov pojavi v pravilih. Paket, ki se vrne na prehod, je naslovljen na prevedeni naslov, in če imate pravila politike glede na cilj ali vmesnik, po katerem je prišel, je to vrednost, ki jo boste primerjali. Ista povezava, v vsaki smeri drug vir resnice.
| Stage | Source the kernel sees | What it means for your rule |
|---|---|---|
| Prerouting | Client address, 172.31.7.42 | Where marks and DNAT are applied |
| Routing decision | Still 172.31.7.42 | This is where from rules match |
| Postrouting | Becomes 198.51.100.9 | What the far end and its return route see |
Dva nabora z različnimi viri torej res potrebujeta različni tabeli in zasnova je pravilna. Kar tabela zgoraj izključuje, je bližnjica odpravljanja napak z gledanjem, kaj je prejela oddaljena stran, in izpeljevanjem pravila iz tega.
Preizkus s prehoda ni preizkus nabora
Promet, ki ga ustvari prehod sam, nikoli ne gre skozi prerouting, ker ni prispel na noben vmesnik. Usmerja se na izhodni poti, z lastnim naslovom prehoda kot virom, in pravilo from, ki temelji na obsegu odjemalcev, se ne bo ujemalo. Vsaka zahteva na tem področju, ki pravi, da deluje s škatle, ne pa z odjemalca, je ponovitev istega dejstva.
Simulirajte odjemalca, namesto da bi ga približali. Iskanje usmerjanja lahko vprašate neposredno, z navedenim virom in vhodnim vmesnikom:
ip route get 198.51.100.9 from 172.31.7.42 iif tun0
ip route get 198.51.100.9 from 172.31.8.42 iif tun0
ip route show table 201
Zaženite ga enkrat na nabor. Če oba ukaza vrneta isti vmesnik, pravila naborov ne ločujejo, razlog pa je bodisi manjkajoče pravilo bodisi pravilo z višjo prioriteto, ki ustreza obema. Če vrneta različna vmesnika, a odjemalec še vedno odpove, je napaka za iskanjem in lahko nehate gledati pravila.
Prioriteta, ne položaj v datoteki
Pravila se ocenjujejo v naraščajočem vrstnem redu prioritete in šteje število, ne vrstni red, v katerem ste jih vnesli. Tabela local je na prioriteti 0, tabela main na 32766 in privzeto pravilo na 32767, zato pravilo, dodano s privzeto prioriteto, pristane blizu konca seznama in izgubi proti skoraj vsemu.
ip rule show
ip rule add from 172.31.8.0/24 lookup 201 priority 1000
ip -4 route show table 201
Izrecna prioriteta naredi predvideni vrstni red viden v datoteki in pri pregledu. Prepreči tudi, da bi poznejši dodatek tiho prehitel obstoječe pravilo, kar je najpogostejši vzrok, da delujoča politika preneha delovati po nepovezani spremembi.
Ujemajoče pravilo, ki kaže na nepopolno tabelo, je druga past. Če tabela 201 vsebuje privzeto pot, ne pa poti do cilja, se paket zavrže ali pošlje na napačno mesto, pravilo pa je v izolaciji videti popolnoma pravilno. Berite tabelo, ne samo pravila. Pravilo je kazalec in prazna tabela je kazalec v nič.
Povratna pot mora še vedno obstajati
Politika vira izbere izhod. Ne ustvari povratne poti. Če drugi nabor odhaja skozi partnerski tunel, mora partner vedeti, kako doseči 172.31.8.0/24, bodisi s potjo nazaj na prehod bodisi s prejemanjem prevedenih naslovov, ki jih že pozna.
Izbira med tem je oblikovalska odločitev z vidnimi posledicami. Usmerjanje obsega odjemalcev nazaj ohrani identiteto vsakega odjemalca pri partnerju in zahteva, da sprejme vašo predpono. Prevajanje skrije nabor za enim naslovom in zahteva, da partner sprejme samo ta naslov, za ceno tega, da se vaši in njegovi dnevniki ne strinjajo več o tem, kdo se je povezal.
Karkoli izberete, zapišite to ob definicijo nabora. Povratna pot, ki obstaja samo v nečijem spominu, je natanko tista stvar, ki preživi, dokler partner ne spremeni požarnega zidu, in nato vzame dan za obnovo.
Ne ujemite lastnega tunela prehoda v politiki
Pravila, ki jih pišete za odjemalce, veljajo tudi za promet, ki ga ustvari prehod, razen če ga izključite. Široko pravilo na podlagi oznake ali izhodnega vmesnika lahko ujame lastno povezavo prehoda s partnerjem, in takrat tunel, ki nosi politiko, usmerja politika sama. To povzroči zanko ali izpad, ki je videti kot napaka ponudnika.
Omejite vsako pravilo tako ozko, kot zasnova dopušča: predpona vira, vhodni vmesnik in, kjer je podprto, oznaka, ki jo nosijo samo paketi odjemalcev. Nato po vsaki spremembi pravil preizkusite lastno povezljivost prehoda, ker je napaka samoreferenčna in se v preizkusu z odjemalca ne pokaže.
Stran priročnika za ip-rule dokumentira semantiko izbirnika in prioritete. Združite jo s preizkusom iskanja za vsak nabor in zasnova postane preverljiva, kar je razlika med političnim usmerjanjem, ki zdrži leto, in tistim, ki se ga vsi bojijo dotakniti.