Nokon gir deg ei første og ei siste adresse og ber om ei VPN-rute. Det freistande trekket er å velje det kortaste prefikset som inneheld begge endane, og det trekket legg stille til destinasjonar ingen har spurt om. Ei CIDR-blokk har alltid ein storleik som er ein potens av to og ei startadresse justert til han, så eit vilkårleg intervall treng vanlegvis meir enn éin. Gå gjennom intervallet, del det nøyaktig, og kontroller deretter adressene rett utanfor.

Byrja med intervallet, ikkje prefikset

Skriv ned den første adressa og den siste adressa før du skriv noko anna. Paret er kravet; eit prefiks er berre eitt mogleg uttrykk for det, og nokre gonger eit feil. To tal er også mykje lettare å kontrollere enn ei maske.

Eit justert intervall fell saman til éi blokk. Eit ujustert blir delt opp i fleire, og oppdelinga er nøyaktig og ikkje omtrentleg. Det du ikkje må gjere, er å runde utover og kalle det nært nok, fordi dei ekstra adressene får den politikken ruta ber.

Begge feilretningane betyr noko. For ei rute inn i tunnelen blir ekstra adresser trekte inn i VPN-et. For eit unntak for omkøyring hoppar ekstra adresser over det. Ingen av utfalla er synlege i ein rutetabell som berre viser prefikset du installerte.

Første tilfelle: intervallet er tilfeldigvis justert

Ta 198.51.100.64 til 198.51.100.127. Den første adressa er justert på ei grense på 64 adresser, og intervallet er nøyaktig 64 adresser, så eitt enkelt /26 skildrar det utan noko til overs.

Det er det enkle tilfellet, og det er verdt å kjenne att, fordi det betyr at kravet truleg vart skrive av nokon som allereie tenkte i prefiks. Det betyr også at kontrollen er kort: stadfest at storleiken er ein potens av to, og at starten er eit multiplum av den storleiken.

Dokumentasjonsområde gir gode døme nettopp fordi ingen eig dei. Ikkje installer desse adressene på ein ekte tunnel, og ikkje gå ut frå at eit område du har fått, er dokumentasjonsplass berre fordi det ser uvanleg ut.

Andre tilfelle: det er det ikkje, så del det opp

Ta no 198.51.100.100 til 198.51.100.107. Det er åtte adresser, som er ein potens av to, men 100 er ikkje eit multiplum av åtte. Éi blokk av den storleiken kan ikkje starte der, så intervallet må dekkjast av meir enn éi.

Den nøyaktige dekninga er to /30-blokker: 198.51.100.100/30 dekkjer 100 til 103, og 198.51.100.104/30 dekkjer 104 til 107. Åtte adresser totalt, ingenting utanfor intervallet, og oppdelinga er eintydig for eit gitt intervall.

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

Standardbibliotekfunksjonen gjer aritmetikken for deg, og ipaddress-dokumentasjonen definerer kva han returnerer. Det han ikkje gjer, er å velje ein gateway, avgjere kven som eig adressene, eller gi tilgang til nokon teneste bak dei.

Mål kva det breiare prefikset ville ha fanga

Før du godtek ein snarveg, rekn ut kva han kostar. Eit /28 som startar på 198.51.100.96, dekkjer 96 til 111, som er seksten adresser i staden for åtte. Dei ekstra åtte er 96 til 99 og 108 til 111, og kvar av dei ville arve ruta.

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

Åtte ekstra destinasjonar er eit konkret tal du kan setje i ein endringsførespurnad. Det er også talet som avgjer om snarvegen er akseptabel, og det er eit spørsmål om politikk, ikkje om aritmetikk.

Hald aritmetikk og oppdaging skilde. Eit intervall som nettverksoperatøren leverer, blir konvertert nøyaktig. Eitt DNS-svar frå ei teneste som endrar seg, fastslår ikkje det fullstendige eller varige området til tenesta, og urelaterte namn kan dele ei adresse.

Installer det nøyaktige settet og verifiser kantane

Gi kvart resulterande prefiks til den som eig VPN-konfigurasjonen, og la dei installere det gjennom den støtta mekanismen. Viss kravet treng to oppføringar, hald to oppføringar i staden for å utvide éi for å gjere eit skjema kortare.

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

Dei to siste kommandoane er dei folk hoppar over. Den første indre adressa bør følgje den nye ruta, og adressa rett utanfor intervallet bør ikkje. Viss begge går same veg, er intervallet blitt utvida ein stad mellom kravet og konfigurasjonen.

Noter den første adressa, den siste adressa og prefiksa som uttrykkjer dei. Den neste personen som går gjennom regelen, kan då kontrollere kravet mot konfigurasjonen utan å gjere aritmetikken på nytt, og skilnaden mellom ei nøyaktig og ei praktisk rute blir verande synleg.

Relaterte artiklar