Iu donas al vi unuan kaj lastan adreson kaj petas VPN-itinero. La tentiga movo estas elekti la plej mallongan prefikson, kiu enhavas ambaŭ finojn, kaj tiu movo silente aldonas celojn, pri kiuj neniu demandis. CIDR-bloko ĉiam havas grandecon de potenco de du kaj komencan adreson ĝustigitan al ĝi, do arbitra intervalo kutime bezonas pli ol unu. Trairu la intervalon, dividu ĝin precize, poste kontrolu la adresojn tuj ekster ĝi.

Komencu per la intervalo, ne per la prefikso

Notu la unuan adreson kaj la lastan adreson antaŭ ol vi skribos ion ajn alian. La paro estas la postulo; prefikso estas nur unu ebla esprimo de ĝi, kaj foje malĝusta. Du nombroj ankaŭ estas multe pli facile kontroli ol masko.

Ĝustigita intervalo kolapsas al unu bloko. Neĝustigita malkomponiĝas en plurajn, kaj la malkompono estas preciza, ne proksimuma. Kion vi ne devas fari, estas rondigi eksteren kaj nomi ĝin sufiĉe proksima, ĉar la pliaj adresoj ricevas kian ajn politikon la itinero portas.

Ambaŭ direktoj de eraro gravas. Por itinero en la tunelon, pliaj adresoj estas tirataj en la VPN-on. Por preterpasa escepto, pliaj adresoj preterpasas ĝin. Neniu el la rezultoj videblas en itinera tabelo, kiu montras nur la prefikson, kiun vi instalas.

Unua kazo: la intervalo hazarde ĝustas

Prenu 198.51.100.64 ĝis 198.51.100.127. La unua adreso estas ĝustigita sur limo de 64 adresoj kaj la intervalo estas precize 64 adresoj, do unu sola /26 priskribas ĝin sen io superflua.

Tio estas la facila kazo kaj indas rekoni ĝin, ĉar ĝi signifas, ke la postulon verŝajne skribis iu, kiu jam pensis per prefiksoj. Ĝi ankaŭ signifas, ke la kontrolo estas mallonga: konfirmu, ke la grandeco estas potenco de du kaj ke la komenco estas oblo de tiu grandeco.

Dokumentaj intervaloj estas bonaj ekzemploj ĝuste ĉar neniu posedas ilin. Ne instaligu ĉi tiujn adresojn sur realan tunelon, kaj ne supozu, ke intervalo donita al vi estas dokumenta spaco nur ĉar ĝi aspektas nekutima.

Dua kazo: ĝi ne ĝustas, do dividu ĝin

Nun prenu 198.51.100.100 ĝis 198.51.100.107. Tio estas ok adresoj, kio estas potenco de du, sed 100 ne estas oblo de ok. Unu bloko de tiu grandeco ne povas komenciĝi tie, do la intervalo devas esti kovrita per pli ol unu.

La preciza kovro estas du /30-blokoj: 198.51.100.100/30 kovras 100 ĝis 103, kaj 198.51.100.104/30 kovras 104 ĝis 107. Ok adresoj entute, nenio ekster la intervalo, kaj la malkompono estas unika por donita intervalo.

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')"

La funkcio de la norma biblioteko faras la aritmetikon por vi, kaj la dokumentaro de ipaddress difinas, kion ĝi redonas. Kion ĝi ne faras, estas elekti enirejon, decidi kiu posedas la adresojn, aŭ doni aliron al iu ajn servo malantaŭ ili.

Mezuru, kion la pli larĝa prefikso estus kaptinta

Antaŭ ol akcepti fuŝsolvon, kalkulu, kiom ĝi kostas. /28 komenciĝanta ĉe 198.51.100.96 kovras 96 ĝis 111, kio estas dek ses adresoj anstataŭ ok. La pliaj ok estas 96 ĝis 99 kaj 108 ĝis 111, kaj ĉiu el ili heredus la itineron.

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))"

Ok pliaj celoj estas konkreta nombro, kiun vi povas meti en ŝanĝpeton. Ĝi ankaŭ estas la nombro, kiu decidas, ĉu la fuŝsolvo estas akceptebla, kaj tio estas demando de politiko, ne de aritmetiko.

Tenu aritmetikon kaj malkovron aparte. Intervalo provizita de la reta operatoro konvertiĝas precize. Unu DNS-respondo de ŝanĝiĝanta servo ne establas la kompletan aŭ daŭran intervalon de tiu servo, kaj nerilataj nomoj povas kunhavi adreson.

Instalu la precizan aron kaj kontrolu la randojn

Donu ĉiun rezultintan prefikson al tiu, kiu posedas la VPN-agordon, kaj lasu ilin instali ĝin per la subtenata mekanismo. Se la postulo bezonas du enskribojn, tenu du enskribojn anstataŭ larĝigi unu por mallongigi formularon.

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

La lastaj du komandoj estas tiuj, kiujn homoj preterlasas. La unua interna adreso devus sekvi la novan itineron, kaj la adreso tuj ekster la intervalo ne devus. Se ambaŭ iras la saman vojon, la intervalo estis larĝigita ie inter la postulo kaj la agordo.

Registru la unuan adreson, la lastan adreson kaj la prefiksojn, kiuj esprimas ilin. La sekva persono, kiu revizios la regulon, povas tiam kontroli la postulon kontraŭ la agordo sen refari la aritmetikon, kaj la diferenco inter preciza kaj oportuna itinero restas videbla.

Rilataj artikoloj