Premeňte rozsah IP od prvej do poslednej adresy na presné trasy VPN
Rozsah od prvej do poslednej adresy sa málokedy zmestí do jedného prefixu. Premeňte ho na presné bloky CIDR, aby trasa nezachytila ciele mimo intervalu.
Niekto vám dá prvú a poslednú adresu a chce trasu VPN. Lákavý krok je vybrať najkratší prefix, ktorý obsahuje oba konce, a ten krok potichu pridá ciele, na ktoré sa nikto nepýtal. Blok CIDR má vždy veľkosť mocniny dvoch a počiatočnú adresu zarovnanú na ňu, takže ľubovoľný interval zvyčajne potrebuje viac ako jeden. Prejdite interval, rozdeľte ho presne a potom skontrolujte adresy tesne za ním.
Začnite intervalom, nie prefixom
Predtým, než napíšete čokoľvek iné, zapíšte prvú adresu a poslednú adresu. Dvojica je požiadavka; prefix je len jedno možné vyjadrenie tejto požiadavky, a niekedy nesprávne. Dve čísla sa tiež kontrolujú oveľa ľahšie než maska.
Zarovnaný interval sa zloží do jedného bloku. Nezarovnaný sa rozloží na niekoľko a rozklad je presný, nie približný. Čo nesmiete urobiť, je zaokrúhliť smerom von a nazvať to dosť blízkym, pretože dodatočné adresy dostanú politiku, ktorú trasa nesie.
Oba smery chyby sú dôležité. Pri trase do tunela sa dodatočné adresy vtiahnu do VPN. Pri výnimke pre obchádzanie ich dodatočné adresy preskočia. Ani jeden výsledok nie je viditeľný v tabuľke trás, ktorá ukazuje len prefix, ktorý ste nainštalovali.
Prvý prípad: interval je náhodou zarovnaný
Vezmite 198.51.100.64 až 198.51.100.127. Prvá adresa je zarovnaná na hranicu 64 adries a interval má presne 64 adries, takže jediný /26 ho opíše bez akéhokoľvek zvyšku.
To je ľahký prípad a stojí za to ho rozpoznať, pretože znamená, že požiadavku pravdepodobne napísal niekto, kto už premýšľal v prefixoch. Znamená to aj to, že kontrola je krátka: overte, že veľkosť je mocnina dvoch a začiatok je násobkom tejto veľkosti.
Dokumentačné rozsahy sú dobré príklady práve preto, že ich nikto nevlastní. Neinštalujte tieto adresy na skutočný tunel a nepredpokladajte, že rozsah, ktorý ste dostali, je dokumentačný priestor len preto, že vyzerá nezvyčajne.
Druhý prípad: nie je, takže ho rozdeľte
Teraz vezmite 198.51.100.100 až 198.51.100.107. To je osem adries, čo je mocnina dvoch, ale 100 nie je násobkom ôsmich. Jediný blok tejto veľkosti tam nemôže začať, takže interval musí pokryť viac ako jeden.
Presné pokrytie sú dva bloky /30: 198.51.100.100/30 pokrýva 100 až 103 a 198.51.100.104/30 pokrýva 104 až 107. Osem adries celkom, nič mimo intervalu a rozklad je pre daný interval jedinečný.
python3 -c "from ipaddress import ip_address, summarize_address_range as s; print(*s(ip_address('198.51.100.100'), ip_address('198.51.100.107')), sep='\n')"
Funkcia štandardnej knižnice urobí aritmetiku za vás a dokumentácia ipaddress definuje, čo vracia. Čo nerobí, je výber brány, rozhodnutie, komu adresy patria, alebo udelenie prístupu k akejkoľvek službe za nimi.
Zmerajte, čo by širší prefix zachytil
Predtým, než prijmete skratku, spočítajte, koľko stojí. /28 začínajúci na 198.51.100.96 pokrýva 96 až 111, čo je šestnásť adries namiesto ôsmich. Osem navyše je 96 až 99 a 108 až 111 a každá z nich by trasu zdedila.
python3 -c "from ipaddress import ip_network as n; w=set(n('198.51.100.96/28')); t=set(n('198.51.100.100/30'))|set(n('198.51.100.104/30')); print(len(w), len(t), sorted(w-t))"
Osem cieľov navyše je konkrétne číslo, ktoré môžete dať do žiadosti o zmenu. Je to aj číslo, ktoré rozhoduje, či je skratka prijateľná, a to je otázka politiky, nie aritmetiky.
Držte aritmetiku a zisťovanie oddelene. Interval poskytnutý sieťovým operátorom sa prevedie presne. Jedna odpoveď DNS od meniacej sa služby neurčuje úplný ani trvalý rozsah tejto služby a nesúvisiace názvy môžu zdieľať adresu.
Nainštalujte presnú množinu a overte okraje
Odovzdajte každý výsledný prefix tomu, kto vlastní konfiguráciu VPN, a nechajte ho nainštalovať podporovaným mechanizmom. Ak požiadavka potrebuje dva záznamy, ponechajte dva záznamy, namiesto toho, aby ste jeden rozširovali len preto, aby bol formulár kratší.
sudo ip route add 198.51.100.100/30 via 10.90.0.1 dev tun0 sudo ip route add 198.51.100.104/30 via 10.90.0.1 dev tun0 ip route get 198.51.100.101 ip route get 198.51.100.97
Posledné dva príkazy sú tie, ktoré ľudia preskakujú. Prvá vnútorná adresa by mala ísť novou trasou a adresa tesne mimo intervalu nie. Ak obe idú rovnakou cestou, interval bol niekde medzi požiadavkou a konfiguráciou rozšírený.
Zapíšte prvú adresu, poslednú adresu a prefixy, ktoré ich vyjadrujú. Ďalší človek, ktorý pravidlo skontroluje, potom môže porovnať požiadavku s konfiguráciou bez opakovania aritmetiky a rozdiel medzi presnou a pohodlnou trasou zostane viditeľný.