Skakel 'n eerste-tot-laatste IP-reeks om na presiese VPN-roetes
'n Reeks met 'n eerste en laaste adres pas selde op een voorvoegsel. Skakel dit om na presiese CIDR-blokke sodat 'n roete nie bestemmings buite die interval vang nie.
Iemand gee jou 'n eerste en 'n laaste adres en vra vir 'n VPN-roete. Die verleidelike stap is om die kortste voorvoegsel te kies wat albei punte bevat, en daardie stap voeg stilweg bestemmings by waaroor niemand gevra het nie. 'n CIDR-blok het altyd 'n grootte van 'n mag van twee en 'n beginadres wat daarop gerig is, so 'n willekeurige interval het gewoonlik meer as een nodig. Stap deur die interval, verdeel dit presies en kyk dan na die adresse net buite dit.
Begin met die interval, nie die voorvoegsel nie
Skryf die eerste adres en die laaste adres neer voordat jy enigiets anders skryf. Die paar is die vereiste; 'n voorvoegsel is net een moontlike uitdrukking daarvan, en soms 'n verkeerde een. Twee getalle is ook baie makliker om te kontroleer as 'n masker.
'n Gerigte interval val saam in een blok. 'n Ongerigte een ontbind in verskeie, en die ontbinding is presies eerder as benaderd. Wat jy nie moet doen nie, is om uitwaarts af te rond en dit naby genoeg te noem, want die ekstra adresse kry watter beleid die roete ook al dra.
Albei rigtings van fout maak saak. Vir 'n roete in die tonnel word ekstra adresse in die VPN ingetrek. Vir 'n ompad-uitsondering slaan ekstra adresse dit oor. Nie een van die uitkomste is sigbaar in 'n roetetabel wat net die voorvoegsel wys wat jy geïnstalleer het nie.
Geval een: die interval val toevallig op 'n grens
Neem 198.51.100.64 tot 198.51.100.127. Die eerste adres is op 'n grens van 64 adresse gerig en die interval is presies 64 adresse, so 'n enkele /26 beskryf dit met niks oor nie.
Dit is die maklike geval en dit is die moeite werd om dit te herken, want dit beteken die vereiste is waarskynlik deur iemand geskryf wat al in voorvoegsels gedink het. Dit beteken ook die kontrole is kort: bevestig die grootte is 'n mag van twee en die begin is 'n veelvoud van daardie grootte.
Dokumentasiereekse maak goeie voorbeelde juis omdat niemand hulle besit nie. Moet nie hierdie adresse op 'n regte tonnel installeer nie, en moenie aanvaar dat 'n reeks wat jy gekry het dokumentasieruimte is net omdat dit ongewoon lyk nie.
Geval twee: dit val nie, so verdeel dit
Neem nou 198.51.100.100 tot 198.51.100.107. Dit is agt adresse, wat 'n mag van twee is, maar 100 is nie 'n veelvoud van agt nie. 'n Enkele blok van daardie grootte kan nie daar begin nie, so die interval moet deur meer as een gedek word.
Die presiese dekking is twee /30-blokke: 198.51.100.100/30 dek 100 tot 103, en 198.51.100.104/30 dek 104 tot 107. Agt adresse in totaal, niks buite die interval nie, en die ontbinding is uniek vir 'n gegewe 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')"
Die standaardbiblioteekfunksie doen die rekenkunde vir jou, en die ipaddress-dokumentasie definieer wat dit teruggee. Wat dit nie doen nie, is om 'n poort te kies, te besluit wie die adresse besit, of toegang tot enige diens daar agter te gee nie.
Meet wat die wyer voorvoegsel sou vasvang
Voordat jy 'n kortpad aanvaar, bereken wat dit kos. 'n /28 wat by 198.51.100.96 begin, dek 96 tot 111, dit is sestien adresse in plaas van agt. Die ekstra agt is 96 tot 99 en 108 tot 111, en elkeen van hulle sou die roete erf.
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))"
Agt ekstra bestemmings is 'n konkrete getal wat jy in 'n veranderingversoek kan plaas. Dit is ook die getal wat besluit of die kortpad aanvaarbaar is, wat 'n beleidsvraag is eerder as 'n rekenkundige een.
Hou rekenkunde en ontdekking apart. 'n Interval wat deur die netwerkoperateur verskaf word, skakel presies om. 'n Enkele DNS-antwoord van 'n veranderende diens vestig nie daardie diens se volledige of permanente reeks nie, en onverwante name kan 'n adres deel.
Installeer die presiese stel en verifieer die rande
Gee elke resulterende voorvoegsel aan wie die VPN-konfigurasie besit en laat hulle dit deur die ondersteunde meganisme installeer. As die vereiste twee inskrywings nodig het, hou twee inskrywings eerder as om een te verbreed om 'n vorm korter te maak.
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
Die laaste twee opdragte is diegene wat mense oorslaan. Die eerste adres binne moet die nuwe roete volg, en die adres net buite die interval moet nie. As albei dieselfde pad gaan, is die interval iewers tussen die vereiste en die konfigurasie verbreed.
Teken die eerste adres, die laaste adres en die voorvoegsels wat hulle uitdruk aan. Die volgende persoon wat die reël hersien, kan dan die vereiste teen die konfigurasie kontroleer sonder om die rekenkunde oor te doen, en die verskil tussen 'n presiese roete en 'n gerieflike een bly sigbaar.