Joku antaa sinulle ensimmäisen ja viimeisen osoitteen ja pyytää VPN-reittiä. Houkutteleva liike on valita lyhin etuliite, joka sisältää molemmat päät, ja tämä liike lisää hiljaa kohteita, joita kukaan ei pyytänyt. CIDR-lohkolla on aina kahden potenssin kokoinen koko ja siihen tasattu alkuosoite, joten mielivaltainen väli tarvitsee yleensä useamman kuin yhden. Käy väli läpi, jaa se tarkasti ja tarkista sitten osoitteet juuri sen ulkopuolelta.

Aloita välistä, älä etuliitteestä

Kirjoita ensimmäinen osoite ja viimeinen osoite muistiin ennen kuin kirjoitat mitään muuta. Pari on vaatimus; etuliite on vain yksi mahdollinen ilmaus siitä, ja joskus väärä. Kahta lukua on myös paljon helpompi tarkistaa kuin maskia.

Tasattu väli kutistuu yhdeksi lohkoksi. Tasaamaton väli hajoaa useaksi, ja hajotus on tarkka eikä likimääräinen. Sitä sinun ei pidä tehdä: pyöristää ulospäin ja kutsua sitä riittävän lähelle, koska ylimääräiset osoitteet saavat sen käytännön, jota reitti kantaa.

Molemmat virheen suunnat ovat merkityksellisiä. Tunnelissa kulkevalle reitille ylimääräiset osoitteet vedetään VPN:ään. Ohituksen poikkeukselle ylimääräiset osoitteet ohittavat sen. Kumpikaan lopputulos ei näy reittitaulussa, joka näyttää vain asentamasi etuliitteen.

Ensimmäinen tapaus: väli sattuu olemaan tasattu

Ota 198.51.100.64–198.51.100.127. Ensimmäinen osoite on tasattu 64 osoitteen rajalle ja väli on täsmälleen 64 osoitetta, joten yksi /26 kuvaa sen ilman mitään ylijäämää.

Tämä on helppo tapaus ja se kannattaa tunnistaa, koska se tarkoittaa, että vaatimuksen kirjoitti todennäköisesti joku, joka ajatteli jo etuliitteinä. Se tarkoittaa myös, että tarkistus on lyhyt: varmista, että koko on kahden potenssi ja että alku on tämän koon monikerta.

Dokumentaatioalueet antavat hyviä esimerkkejä juuri siksi, ettei kukaan omista niitä. Älä asenna näitä osoitteita oikeaan tunneliin äläkä oleta, että sinulle annettu alue on dokumentaatiotilaa vain siksi, että se näyttää epätavalliselta.

Toinen tapaus: ei ole, joten jaa se

Ota nyt 198.51.100.100–198.51.100.107. Se on kahdeksan osoitetta, mikä on kahden potenssi, mutta 100 ei ole kahdeksan monikerta. Yksi tuon kokoinen lohko ei voi alkaa siitä, joten väli on katettava useammalla kuin yhdellä.

Tarkka kate on kaksi /30-lohkoa: 198.51.100.100/30 kattaa 100–103 ja 198.51.100.104/30 kattaa 104–107. Kahdeksan osoitetta yhteensä, mitään välin ulkopuolelta ei tule mukaan, ja hajotus on yksikäsitteinen tietylle välille.

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

Standardikirjaston funktio tekee aritmetiikan puolestasi, ja ipaddress-dokumentaatio määrittelee, mitä se palauttaa. Se ei valitse yhdyskäytävää, päätä kenen osoitteet ovat tai myönnä pääsyä mihinkään niiden takana olevaan palveluun.

Mittaa, mitä leveämpi etuliite olisi kaapannut

Ennen kuin hyväksyt oikotien, laske mitä se maksaa. /28, joka alkaa osoitteesta 198.51.100.96, kattaa 96–111, eli kuusitoista osoitetta kahdeksan sijaan. Ylimääräiset kahdeksan ovat 96–99 ja 108–111, ja jokainen niistä perisi reitin.

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

Kahdeksan ylimääräistä kohdetta on konkreettinen luku, jonka voit laittaa muutospyyntöön. Se on myös luku, joka ratkaisee, onko oikotie hyväksyttävä, ja se on käytäntökysymys eikä aritmetiikkaa.

Pidä aritmetiikka ja selvitys erillään. Verkkopalveluntarjoajan toimittama väli muunnetaan tarkasti. Yksi muuttuvan palvelun DNS-vastaus ei vahvista palvelun täydellistä tai pysyvää aluetta, ja toisiinsa liittymättömät nimet voivat jakaa osoitteen.

Asenna tarkka joukko ja varmista reunat

Anna jokainen tuloksena oleva etuliite VPN-kokoonpanon omistajalle ja anna hänen asentaa se tuetulla mekanismilla. Jos vaatimus tarvitsee kaksi merkintää, pidä kaksi merkintää sen sijaan, että levennät yhtä lomakkeen lyhentämiseksi.

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

Kaksi viimeistä komentoa ovat ne, jotka ihmiset ohittavat. Ensimmäisen sisäisen osoitteen pitäisi seurata uutta reittiä, eikä välin ulkopuolella olevan osoitteen pitäisi. Jos molemmat kulkevat samaa tietä, väliä on levennetty jossain vaatimuksen ja kokoonpanon välissä.

Kirjaa ensimmäinen osoite, viimeinen osoite ja etuliitteet, jotka ilmaisevat ne. Seuraava sääntöä tarkistava henkilö voi silloin verrata vaatimusta kokoonpanoon tekemättä aritmetiikkaa uudelleen, ja ero tarkan ja mukavan reitin välillä pysyy näkyvänä.

Aiheeseen liittyvät artikkelit