ik bouw Toolz.dev, en naast de WordPress plugins en Laravel API's heb ik een behoorlijk deel van de tijd doorgebracht in cloud consoles het uitsnijden van VPC's en het schrijven van firewall regels Subnetting is een van die vaardigheden waarbij de theorie eenvoudig is en de rekenkunde is onhandig, en het onhandige deel is precies waar fouten verbergen Ik heb een beveiligingsgroep verzonden die een /16 toen ik bedoelde een /24, een netwerk openen dat veel breder is dan de bedoeling was, omdat ik het masker in mijn hoofd heb laten rekenen en een beetje fout ben gegaan. De IP Subnet Calculator bestaat zodat dat nooit meer met de hand gebeurt Deze gids legt uit wat hij berekent, waarom de getallen eruit komen zoals ze eruit komen, en de randgevallen die zowel mensen als de naïeve rekenmachines die ze vertrouwen doen struikelen.
tl;dr: Een IPv4-subnetcalculator neemt een adres en een CIDR-voorvoegsel, zoals
192.168.1.10/24, en leidt het netwerkadres, het uitzendadres, de eerste en laatste bruikbare host, het subnetmasker, het jokertekenmasker en het totale en bruikbare adrestellingen af. Het werkt door het adres te behandelen als een 32-bits geheel getal en het masker toe te passen met bitsgewijze bewerkingen. Het verwerkt de twee randgevallen die er toe doen correct, en behandelt een/31als point-to-point-link met twee hosts per RFC 3021 en a/32als een enkele host, en het accepteert een gestippeld masker in plaats van het voorvoegsel Het draait volledig in uw browser, dus geen enkel adres dat u invoert wordt geüpload.
Wat is een subnet en wat betekent het voorvoegsel?
Een IPv4-adres is 32 bits, geschreven als vier decimale octetten 192.168.1.10. Een subnet is een aaneengesloten blok van die adressen die dezelfde leidende bits delen Het CIDR-voorvoegsel, het getal na de schuine streep, zegt hoeveel van de 32 bits vastliggen als het netwerkgedeelte De overige bits zijn vrij om individuele hosts te variëren en te identificeren Dus /24 repareert de eerste 24 bits en laat 8 over voor hosts, /16 fixeert 16 en laat 16, en /30 repareert 30 en laat er slechts 2 over.
Het aantal adressen in een blok is twee verhoogd tot de macht van de hostbits. A /24 heeft 8 hostbits, dus 2 tot de 8e, wat 256 adressen zijn. A /16 heeft 16 hostbits, dus 65.536 adressen. A /30 heeft 2 hostbits, dus 4 adressen Dit is de hele basis van de wiskunde, en zodra u " adressen gelijk aan twee tot de macht tweeëndertig minus het voorvoegsel, & quot; het grootste deel van het subnetten is niet langer mysterieus.
CIDR, wat staat voor Classless Inter-Domain Routing, werd geïntroduceerd in RFC 4632 ter vervanging van het oude classful systeem, waarbij een adres & #39; s klasse werd vastgesteld door zijn eerste octet Classful adressering verspilde enorme hoeveelheden ruimte, omdat je een hele Klasse A, B, of C blok moest nemen, zelfs als je iets daartussenin nodig had CIDR laat je elke prefix lengte kiezen en grootte een netwerk naar wat je nodig hebt De classful labels A, B, en C verschijnen nog steeds in tools, waaronder de mijne, maar ze zijn informatief nu; het voorvoegsel is wat de netwerkgrens bepaalt.
Waarom zijn twee adressen in elk subnet niet bruikbaar?
In een normaal subnet zijn het eerste en het laatste adres gereserveerd en kunnen niet aan een host worden toegewezen, het eerste adres, met alle hostbits op nul ingesteld, is het netwerkadres, en het geeft het subnet zelf een naam Het laatste adres, met alle hostbits op één ingesteld, is het uitzendadres, en een pakket dat ernaar wordt verzonden bereikt elke host op het subnet in één keer Omdat voor die twee wordt gesproken, is het aantal bruikbare hosts het totale aantal adressen min twee.
Daarom is een /24 heeft in totaal 256 adressen, maar slechts 254 bruikbare, en waarom een /30, met 4 adressen, geeft u precies 2 bruikbare hosts De /30 is de klassieke keuze voor een koppeling tussen twee routers, omdat een point-to-point link precies twee adressen nodig heeft en meer niet De calculator spelt het netwerk en de broadcastadressen expliciet uit, samen met de eerste en laatste bruikbare host, zodat je nooit hoeft uit te zoeken welke adressen verboden zijn.
Hoe berekent de rekenmachine de getallen?
Onder de motorkap is het bitsgewijs rekenen op 32-bits gehele getallen, wat zowel de snelste als de minst foutgevoelige manier is om het te doen. Het adres wordt verpakt in een enkel geheel getal zonder teken door elk octet op zijn plaats te verschuiven. Het masker voor een voorvoegsel is een reeks enen gevolgd door nullen, geproduceerd door verschuiven 0xFFFFFFFF links van 32 minus the prefix. Van daaruit is elke waarde één bewerking:
- Het netwerkadres is het adres bitsgewijs EN met het masker, waardoor de hostbits op nul worden gezet.
- Het uitzendadres is het netwerk ORed met de inverse van het masker, dat alle hostbits instelt.
- Het jokertekenmasker is gewoon het bitsgewijze omgekeerde van het subnetmasker.
- De eerste bruikbare host is het netwerkadres plus één, en de laatste is de uitzending min één.
Door het op deze manier te doen, worden de fouten omzeild die binnensluipen als mensen met de hand naar binaire strings converteren. Het maakt de omgekeerde conversie ook triviaal: een gestippeld masker zo draaien 255.255.255.0 terug in een prefix tel je de leidende one-bits, en de rekenmachine doet dat als je een masker invoert in plaats van een slash-notatie Alles blijft overal als niet-ondertekende 32-bits gehele getallen, wat belangrijk is in JavaScript omdat je niet-ondertekende interpretatie moet forceren om te voorkomen dat negatieve getallen op het hoge bit binnensluipen.
Wat zijn de randgevallen die de meeste tools verkeerd hebben?
Twee voorvoegsels breken de eenvoudige & quot; min twee" regel, en een verrassend aantal rekenmachines verwerkt ze verkeerd.
De eerste is /31. Volgens de oorspronkelijke regels a /31 zou twee adressen hebben, beide gereserveerd, waardoor er geen bruikbare hosts overblijven, wat nutteloos is. RFC-3021 dit opgelost door een /31 op point-to-point links, waar er geen uitzendadres nodig is, worden dus beide adressen bruikbaar. Deze rekenmachine rapporteert een /31 als twee bruikbare hosts waarbij het netwerk en de uitzendadressen verdubbelen als de twee hostadressen, wat moderne routers doen op seriële en point-to-point interfaces.
De tweede is /32. a /32 is een enkel adres, een host route Het vertegenwoordigt precies één machine, dat is hoe loopback adressen, host-specifieke firewall regels, en individuele routes worden uitgedrukt De calculator rapporteert het als één bruikbare host met het netwerk adres gelijk aan het adres zelf en geen apart bereik Een tool die blindelings aftrekt twee zou negatieve of nul hosts voor beide van deze rapporteren, wat onzin is, en ik heb ervoor gezorgd dat deze niet.
Hoe de subnetcalculator te gebruiken
Stap 1: Voer een adres en voorvoegsel in
Typ een IPv4-adres met een CIDR-voorvoegsel, zoals 10.0.0.0/8 of 192.168.1.10/24. Het voorvoegsel kan van 0 tot 32 zijn. Als u een adres plakt zonder voorvoegsel, gaat het gereedschap uit van een /24, de meest voorkomende standaard, en vanaf daar kunt u zich aanpassen.
Stap 2: Of gebruik een gestippeld subnetmasker
Als u een masker heeft in plaats van een voorvoegsel, voert u het adres en het masker in, gescheiden door een spatie, zoals 192.168.1.10 255.255.255.0. De rekenmachine telt de leidende one-bits in het masker, converteert deze naar het overeenkomende voorvoegsel en wijst elk masker af waarvan de bits niet aaneengesloten zijn, omdat een dergelijk masker geen geldig CIDR-masker is.
Stap 3: Lees de resultaten
Je krijgt het netwerkadres, het uitzendadres, het bruikbare hostbereik, het subnetmasker, het wildcardmasker, het totale en bruikbare adrestellingen, het classfulbereik, en of het adres privé is onder RFC 1918 Er is ook een binaire weergave van het adres en het masker, wat de snelste manier is om precies te zien waar de netwerkgrens valt.
Stap 4: Kopieer wat je nodig hebt
Elke waarde heeft een kopieerknop, zodat u de CIDR-notatie in een routetabel, het hostbereik in documentatie of het jokertekenmasker in een Cisco-toegangslijst kunt tillen zonder opnieuw te typen en het risico te lopen op een getransponeerd octet.
Subnetmasker en prefixreferentie
Dit is de tabel waar ik steeds naar terugkom, en de rekenmachine genereert deze live, zodat de cijfers nooit oud zijn.
| CIDR | Subnetmasker | Totaal adressen | Bruikbare hosts |
|---|---|---|---|
| /24 | 255.255.255,0 | 256 | 254 |
| /25 | 255.255.255.128 | 128 | 126 |
| /26 | 255.255.255.192 | 64 | 62 |
| /27 | 255.255.255.224 | 32 | 30 |
| /28 | 255.255.255.240 | 16 | 14 |
| /29 | 255.255.255.248 | 8 | 6 |
| /30 | 255.255.255.252 | 4 | 2 |
Het patroon is het onthouden waard: elke stap omhoog in voorvoegsel halveert het blok A /25 is een halve /24, een /26 is een kwart, enzovoort Wanneer je een netwerk aan het splitsen bent, is dat halveren het mentale model, en de rekenmachine bevestigt de exacte grenzen zodat je het mentale model niet alleen hoeft te vertrouwen.
Hoe splits je één netwerk op in kleinere subnetten?
De meest voorkomende echte taak is niet het berekenen van een enkel subnet, maar het verdelen van een groter blok in verschillende kleinere, en dit is waar de rekenmachine zijn geld verdient. Zeg dat je wordt overhandigd 10.0.0.0/16 voor een cloud-VPC en de noodzaak om deze in subnetten voor een openbaar niveau, een privé-niveau en een databaselaag te snijden. Elke stap omhoog in het voorvoegsel verdubbelt het aantal subnetten en halveert hun grootte, dus ga van /16 tegen /18 geeft je vier gelijke blokken van elk 16.384 adressen 10.0.0.0/18, 10.0.64.0/18, 10.0.128.0/18, en 10.0.192.0/18. U kunt al deze grenzen controleren door deze in de rekenmachine te plakken en te bevestigen dat het netwerk en de uitzendadressen niet in gaten en zonder overlappingen staan.
De valkuil hierbij is dat subnetten op hun natuurlijke grenzen moeten vallen. A /26 blok kan niet op zomaar een adres beginnen; het moet beginnen bij een veelvoud van 64 in zijn laatste octet, omdat 64 de blokgrootte is voor a /26. Als u probeert het te starten op .30, het netwerkadres de rekenmachinerapporten zullen niet overeenkomen met wat je hebt getypt, wat de snelste manier is om de fout op te vangen, wanneer ik een VPC plan, plak ik elk bedoeld subnet om de beurt en lees het netwerkadres terug; als de tool een ander netwerkadres toont dan het adres dat ik wilde definiëren, weet ik dat mijn grens verkeerd is voordat ik het ooit toepas Dezelfde discipline werkt voor een router's statische routes en voor firewallregels, waarbij een off-boundary blok stil adressen dekt die je niet bedoeld had.
Er is ook een echte subtiliteit die de moeite waard is om te benoemen: cloudproviders reserveren enkele adressen binnen elk subnet buiten het netwerk en broadcastpaar. AWS reserveert bijvoorbeeld vijf adressen per subnet, niet twee, waarbij de eerste vier en de laatste worden genomen. De rekenmachine rapporteert het strikte RFC-hostbereik, dus op AWS trek je er nog drie af van de bruikbare telling die het laat zien. Dat is een providerconventie die bovenop de standaard is gelaagd, geen fout in de wiskunde, maar het is precies het soort dingen dat je twee hosts tekort doet als je het vergeet.
Welke assortimenten zijn privé, en waarom maakt het uit?
RFC 1918 reserveert drie blokken voor privégebruik: 10.0.0.0/8, 172.16.0.0/12, en 192.168.0.0/16. Deze zijn niet routeerbaar op het openbare internet, en het zijn de bereiken die bijna elk thuis- en kantoornetwerk gebruikt achter een router die netwerkadresvertaling uitvoert. De rekenmachine signaleert of het adres dat u heeft ingevoerd in een van deze valt, wat een snelle controle van uw gezond verstand is wanneer u een adresseringsschema plant en wilt bevestigen dat u in de privéruimte werkt in plaats van per ongeluk een adres te gebruiken dat van iemand anders is op het openbare internet. Het is ook een handig duwtje in de rug als u een "public" vlag op een adres waarvan u verwachtte dat het intern zou zijn, omdat dat vaak een typefout in het eerste octet betekent.
Waar de subnetcalculator bij al het andere past
Netwerkwerk gebeurt zelden op zichzelf Wanneer u de infrastructuur achter een applicatie configureert, debugt u ook HTTP-reacties, parseert u user agents en genereert u inloggegevens voor interne services De HTTP status codes referentie is de metgezel voor de applicatielaag, de user agent parser voor het uitzoeken wat uw servers raakt, en de basisauth generator voor de inloggegevens die interne eindpunten beschermen Als u tussen getalbases converteert terwijl u maskers in binair leest, is de nummer basis converter behandelt de decimaal-naar-binaire stap direct En aan de beveiligingskant, de creditcard validator is het front-end filter voor de kassa die draait op het netwerk dat u zojuist hebt ontworpen.
Voor het bredere plaatje is de Productiviteitstools voor ontwikkelaar roundup behandelt de hulpprogramma's die de neiging hebben om de hele dag open te zitten in een tabblad, en de Handleiding voor coderingshulpmiddelen plaatst de subnetcalculator in de context van een volledige ontwikkelaarstoolkit Zoals alles op Toolz.dev draait het volledig in uw browser, dus de adressen waarmee u van plan bent, verlaten uw machine nooit.
Veelgestelde vragen
Wat betekent het CIDR-voorvoegsel?
Het CIDR-voorvoegsel is het getal na de schuine streep en telt hoeveel leidende bits van het adres het netwerk identificeren. A /24 fixeert de eerste 24 bits voor het netwerk en laat 8 bits over voor hosts, wat 256 totale adressen en 254 bruikbare is Een kleiner voorvoegsel heeft betrekking op meer adressen, en een groter op minder.
Hoeveel bruikbare hosts bevinden zich in een subnet?
Voor een voorvoegsel van /30 of kleiner, het bruikbare hostaantal is het totaal aantal adressen min twee, omdat het eerste adres het netwerk is en het laatste de uitzending. A /24 heeft 254 bruikbare hosts, een /26 heeft 62, en een /30 heeft 2. De twee uitzonderingen zijn /31, die 2 bruikbare hosts heeft, en /32, die 1 heeft.
Wat is het verschil tussen het netwerkadres en het uitzendadres?
Het netwerkadres is het eerste adres in het blok en identificeert het subnet zelf, waarbij alle hostbits op nul zijn ingesteld Het uitzendadres is het laatste adres, waarbij alle hostbits op één zijn ingesteld, en een pakket dat ernaar wordt verzonden bereikt elke host op het subnet in één keer. Geen van beide kan worden toegewezen aan een individuele host in een normaal subnet.
Hoe converteer ik een subnetmasker naar een CIDR-voorvoegsel?
Tel de leidende one-bits in het masker. 255.255.255.0 is 24 one-bits, dus dat is het ook /24; 255.255.240.0 is 20 bits, dus /20. De rekenmachine voert deze conversie automatisch uit wanneer u een gestippeld masker invoert in plaats van een voorvoegsel, en hij wijst elk masker af waarvan de maskers niet aaneengesloten zijn.
Waar wordt een wildcardmasker voor gebruikt?
Een wildcardmasker is de bit-inverse van het subnetmasker, dus /24 geeft 0.0.0.255. Het wordt gebruikt in Cisco-toegangscontrolelijsten en OSPF-netwerkinstructies, waarbij een nul-bit betekent dat dit bit exact overeenkomt en een bit betekent dat je het negeert. Het is gemakkelijk te verwarren met het subnetmasker en daarom toont de rekenmachine beide naast elkaar.
Waarom toont een /31 twee bruikbare hosts?
RFC 3021 staat een /31 op point-to-point-links, waarbij het netwerk en de uitzendadressen niet nodig zijn, worden beide adressen bruikbare hostadressen. Zonder die regel a /31 zou nul bruikbare hosts hebben, wat nutteloos is. A /32 is het gerelateerde randgeval en vertegenwoordigt een enkele host, zoals een loopback of een hostroute.
Welke IPv4-reeksen zijn privé?
RFC 1918-reserves 10.0.0.0/8, 172.16.0.0/12, en 192.168.0.0/16 voor particuliere netwerken Deze zijn niet routeerbaar op het openbare internet en zijn de bereiken die de meeste thuis- en kantoornetwerken gebruiken achter een router die NAT doet. De rekenmachine signaleert of het adres dat u hebt ingevoerd in een van deze gevallen valt.
Werkt deze calculator voor IPv6?
Nee, deze tool berekent alleen IPv4-subnetten IPv6 gebruikt 128-bits adressen en hexadecimale notatie, dus het subnetting werkt anders en heeft een speciale rekenmachine nodig. Voor IPv4-planning, firewallregels en cloud-VPC-groottebepaling, waar de meeste dagelijkse subnetwiskunde plaatsvindt, omvat dit de veelvoorkomende gevallen.



