Pretvorite IP raspon od prve do posljednje adrese u točne VPN rute
Raspon od prve do posljednje adrese rijetko se uklapa u jedan prefiks. Pretvorite ga u točne CIDR blokove kako ruta ne bi zahvatila odredišta izvan intervala.
Netko vam da prvu i posljednju adresu i traži VPN rutu. Primamljiv potez je odabrati najkraći prefiks koji sadrži oba kraja, a taj potez tiho dodaje odredišta koja nitko nije tražio. CIDR blok uvijek ima veličinu potencije dvojke i početnu adresu poravnatu s njom, pa proizvoljni interval obično zahtijeva više od jednog. Prođite intervalom, podijelite ga točno, pa provjerite adrese neposredno izvan njega.
Počnite od intervala, ne od prefiksa
Zapišite prvu adresu i posljednju adresu prije nego što napišete bilo što drugo. Par je zahtjev; prefiks je samo jedan mogući izraz tog zahtjeva, a ponekad pogrešan. Dva broja također je mnogo lakše provjeriti nego masku.
Poravnati interval sažima se u jedan blok. Neporavnati se razlaže na nekoliko, a razlaganje je točno, a ne približno. Ono što ne smijete raditi jest zaokruživati prema van i nazvati to dovoljno bliskim, jer dodatne adrese dobivaju politiku koju ruta nosi.
Oba smjera pogreške su važna. Za rutu u tunel dodatne adrese se uvlače u VPN. Za izuzetak zaobilaženja dodatne adrese ga preskaču. Nijedan ishod nije vidljiv u tablici ruta koja prikazuje samo prefiks koji ste instalirali.
Prvi slučaj: interval se slučajno poravnava
Uzmite 198.51.100.64 do 198.51.100.127. Prva adresa je poravnata na granicu od 64 adrese i interval je točno 64 adrese, pa ga jedan /26 opisuje bez ikakvog viška.
To je lak slučaj i vrijedi ga prepoznati, jer znači da je zahtjev vjerojatno napisao netko tko je već razmišljao prefiksima. Znači i da je provjera kratka: potvrdite da je veličina potencija dvojke i da je početak višekratnik te veličine.
Dokumentacijski rasponi daju dobre primjere upravo zato što ih nitko ne posjeduje. Ne instalirajte ove adrese na stvarni tunel i ne pretpostavljajte da je raspon koji ste dobili dokumentacijski prostor samo zato što izgleda neobično.
Drugi slučaj: nije poravnat, pa ga razdijelite
Sada uzmite 198.51.100.100 do 198.51.100.107. To je osam adresa, što jest potencija dvojke, ali 100 nije višekratnik osam. Jedan blok te veličine ne može početi tamo, pa interval mora pokriti više od jednog.
Točan pokrov su dva /30 bloka: 198.51.100.100/30 pokriva 100 do 103, a 198.51.100.104/30 pokriva 104 do 107. Osam adresa ukupno, ništa izvan intervala, a razlaganje je jedinstveno za zadani interval.
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')"
Funkcija standardne biblioteke obavlja aritmetiku umjesto vas, a dokumentacija ipaddress definira što vraća. Ono što ne radi jest da odabere gateway, odluči kome pripadaju adrese ili dodijeli pristup bilo kojoj usluzi iza njih.
Izmjerite što bi širi prefiks zahvatio
Prije nego prihvatite prečicu, izračunajte koliko košta. /28 koji počinje na 198.51.100.96 pokriva 96 do 111, što je šesnaest adresa umjesto osam. Dodatnih osam su 96 do 99 i 108 do 111, i svaka od njih bi naslijedila rutu.
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))"
Osam dodatnih odredišta je konkretan broj koji možete staviti u zahtjev za promjenu. To je i broj koji odlučuje je li prečica prihvatljiva, a to je pitanje politike, a ne aritmetike.
Držite aritmetiku i otkrivanje odvojeno. Interval koji dostavi mrežni operater pretvara se točno. Jedan DNS odgovor promjenjive usluge ne uspostavlja potpuni ili trajni raspon te usluge, a nepovezana imena mogu dijeliti adresu.
Instalirajte točan skup i provjerite rubove
Predajte svaki dobiveni prefiks onome tko posjeduje VPN konfiguraciju i neka ga instalira kroz podržani mehanizam. Ako zahtjev traži dva unosa, zadržite dva unosa umjesto da proširite jedan kako bi obrazac bio kraći.
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
Posljednje dvije naredbe su one koje ljudi preskaču. Prva adresa unutar intervala treba slijediti novu rutu, a adresa neposredno izvan intervala ne treba. Ako obje idu istim putem, interval je negdje između zahtjeva i konfiguracije proširen.
Zabilježite prvu adresu, posljednju adresu i prefikse koji ih izražavaju. Sljedeća osoba koja pregleda pravilo može zatim provjeriti zahtjev prema konfiguraciji bez ponovne aritmetike, a razlika između točne i zgodne rute ostaje vidljiva.