Převod rozsahu IP od první do poslední adresy na přesné trasy VPN
Rozsah od první do poslední adresy se málokdy vejde do jednoho prefixu. Převeďte ho na přesné bloky CIDR, aby trasa nezachytila cíle mimo interval.
Někdo vám dá první a poslední adresu a chce trasu VPN. Lákavý krok je vybrat nejkratší prefix, který obsahuje oba konce, a ten krok tiše přidá cíle, na které se nikdo neptal. Blok CIDR má vždy velikost mocniny dvou a počáteční adresu zarovnanou na ni, takže libovolný interval obvykle potřebuje víc než jeden. Projděte interval, rozdělte ho přesně a pak zkontrolujte adresy těsně za ním.
Začněte intervalem, ne prefixem
Než napíšete cokoli jiného, zapište první adresu a poslední adresu. Dvojice je požadavek; prefix je jen jedno možné vyjádření tohoto požadavku, a někdy špatné. Dvě čísla se také kontrolují mnohem snáze než maska.
Zarovnaný interval se složí do jednoho bloku. Nezarovnaný se rozloží na několik a rozklad je přesný, nikoli přibližný. Co nesmíte udělat, je zaokrouhlit směrem ven a nazvat to dost blízkým, protože dodatečné adresy dostanou politiku, kterou trasa nese.
Oba směry chyby jsou důležité. U trasy do tunelu se dodatečné adresy vtáhnou do VPN. U výjimky pro obcházení je dodatečné adresy přeskočí. Ani jeden výsledek není vidět v tabulce tras, která ukazuje jen prefix, který jste nainstalovali.
První případ: interval je náhodou zarovnaný
Vezměte 198.51.100.64 až 198.51.100.127. První adresa je zarovnaná na hranici 64 adres a interval má přesně 64 adres, takže jediný /26 ho popíše bez jakéhokoli zbytku.
To je snadný případ a stojí za to ho rozpoznat, protože znamená, že požadavek pravděpodobně napsal někdo, kdo už přemýšlel v prefixech. Znamená to také, že kontrola je krátká: ověřte, že velikost je mocnina dvou a začátek je násobkem této velikosti.
Dokumentační rozsahy jsou dobré příklady právě proto, že je nikdo nevlastní. Neinstalujte tyto adresy na skutečný tunel a nepředpokládejte, že rozsah, který jste dostali, je dokumentační prostor jen proto, že vypadá neobvykle.
Druhý případ: není, takže ho rozdělte
Teď vezměte 198.51.100.100 až 198.51.100.107. To je osm adres, což je mocnina dvou, ale 100 není násobkem osmi. Jediný blok této velikosti tam začínat nemůže, takže interval musí pokrýt víc než jeden.
Přesné pokrytí jsou dva bloky /30: 198.51.100.100/30 pokrývá 100 až 103 a 198.51.100.104/30 pokrývá 104 až 107. Osm adres celkem, nic mimo interval a rozklad je pro 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')"
Funkce standardní knihovny udělá aritmetiku za vás a dokumentace ipaddress definuje, co vrací. Co nedělá, je výběr brány, rozhodnutí, komu adresy patří, nebo udělení přístupu k jakékoli službě za nimi.
Změřte, co by širší prefix zachytil
Než přijmete zkratku, spočítejte, kolik stojí. /28 začínající na 198.51.100.96 pokrývá 96 až 111, což je šestnáct adres místo osmi. Osm navíc je 96 až 99 a 108 až 111 a každá z nich by trasu zdědila.
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))"
Osm cílových adres navíc je konkrétní číslo, které můžete dát do žádosti o změnu. Je to také číslo, které rozhoduje, zda je zkratka přijatelná, což je otázka politiky, nikoli aritmetiky.
Držte aritmetiku a zjišťování oddělené. Interval poskytnutý síťovým operátorem se převede přesně. Jedna odpověď DNS od měnící se služby neurčuje úplný ani trvalý rozsah této služby a nesouvisející názvy mohou sdílet adresu.
Nainstalujte přesnou množinu a ověřte okraje
Předejte každý výsledný prefix tomu, kdo vlastní konfiguraci VPN, a nechte ho nainstalovat podporovaným mechanismem. Pokud požadavek potřebuje dva záznamy, ponechte dva záznamy, místo abyste jeden rozšiřovali, jen aby byl formulář 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 příkazy jsou ty, které lidé přeskakují. První vnitřní adresa by měla jít novou trasou a adresa těsně mimo interval ne. Pokud obě jdou stejnou cestou, interval byl někde mezi požadavkem a konfigurací rozšířen.
Zapište první adresu, poslední adresu a prefixy, které je vyjadřují. Další člověk, který pravidlo zkontroluje, pak může porovnat požadavek s konfigurací, aniž by znovu počítal, a rozdíl mezi přesnou a pohodlnou trasou zůstane viditelný.