Calcolatore di subnet
Il calcolatore di subnet prende una rete in notazione CIDR — o un indirizzo con la sua maschera in decimale — e restituisce tutto ciò che ne consegue: l'indirizzo di rete e quello di broadcast, la maschera e il suo wildcard, il primo e l'ultimo host utilizzabili, il totale degli indirizzi e la zona di DNS inverso. Funziona con IPv4 e IPv6, e può dividere un blocco in subnet uguali del prefisso che Lei indica.
Esegui gratis nel browser
Funziona nel tuo browser: gratis, senza registrazione, i file non escono dal tuo dispositivo.
L'aritmetica che nessuno dovrebbe fare a mano
Ogni domanda di rete che comincia con una barra finisce nel binario: quanti host entrano in una /26, qual è l'indirizzo di broadcast, dove finisce una subnet e dove comincia la successiva. Farlo a mente è una deviazione di due minuti che va storta quasi quanto va bene, e qui una risposta sbagliata è una regola del firewall che copre, in silenzio, macchine che non doveva coprire. Invii il blocco e riceva il quadro completo: rete, maschera, wildcard, broadcast, primo e ultimo host utilizzabili e il numero di indirizzi.
Tre modi di scrivere la stessa rete
Il calcolatore accetta la rete così come viene copiata nella pratica. Il CIDR classico — 192.168.1.0/24 — è il caso ovvio. Funziona anche un indirizzo con la sua maschera in decimale, come appare nella configurazione di un'interfaccia: 192.168.1.10 255.255.255.0. E funziona un indirizzo isolato, che viene letto come un singolo host. In tutti e tre i casi l'indirizzo viene prima ridotto alla sua rete, quindi 10.0.5.37/20 risponde su 10.0.0.0/20, che è quasi sempre la domanda che si sta davvero ponendo.
I casi limite che quasi tutti sbagliano
Una /31 non è una /30 rotta. Secondo l'RFC 3021 è un collegamento punto-punto i cui due indirizzi sono entrambi utilizzabili, senza broadcast; un calcolatore che lì segnala zero host utilizzabili ripete una regola che non è più vera dal 2000. Una /32 è un singolo indirizzo, senza rete né broadcast. E una maschera i cui bit a uno non sono contigui — 255.255.0.255 — non è affatto una maschera: viene rifiutata invece di produrre in silenzio un risultato verosimile ma falso. Questi tre casi sono dove gli strumenti si contraddicono, ed è proprio lì che questo è esplicito.
IPv6 senza numeri arrotondati
Un blocco IPv6 non entra nei numeri con cui contano la maggior parte degli strumenti: una sola /64 contiene più di diciotto trilioni di indirizzi, ben oltre il punto in cui la virgola mobile comincia ad arrotondare. Qui l'aritmetica si fa con interi esatti e il totale viene restituito come stringa, così l'ultimo indirizzo di un intervallo è davvero quello che lo chiude. Gli indirizzi tornano in forma canonica — minuscole, zeri compressi una sola volta — più la versione espansa per intero, utile quando bisogna confrontarne due a occhio.
Dividere un blocco
Chieda un prefisso più lungo e il blocco torna diviso in subnet uguali, ciascuna con il proprio intervallo: una /24 divisa in /26 ne dà quattro; una /16 divisa in /24, duecentocinquantasei. È il passaggio in cui la pianificazione sulla carta va storta, perché i confini non cadono dove li mette l'intuito. Ogni risposta porta al massimo 1024 subnet, il limite che mantiene il risultato leggibile; oltre quella soglia conviene dividere in due passaggi.
Casi d'uso
Pianificare un intervallo prima di configurare qualcosa
Marco Ricci, amministratore di rete, decide come dividere un blocco /22 tra le sedi di un'azienda mentre è ancora una decisione sulla carta, non una rete già in funzione da rinumerare.
Verificare una regola del firewall
Prima di pubblicare una ACL, un tecnico controlla esattamente quali indirizzi copre 10.20.0.0/22, invece di scoprirlo dopo che qualcuno è rimasto tagliato fuori.
Leggere una rete ereditata
Trovando in una vecchia configurazione l'indirizzo 172.16.4.10 con maschera 255.255.252.0, un consulente ricava subito l'intervallo, il numero di host e la zona inversa che comportano.
Validare gli indirizzi nel proprio strumento
Un servizio di provisioning chiama l'API per controllare che il blocco inviato da un cliente sia scritto correttamente, prima che arrivi al sistema che assegna gli indirizzi.
Domande frequenti
Quanto costa?
Su questa pagina è gratis, nel browser: non viene inviato nulla da nessuna parte. Tramite l'API costa $0.002 a richiesta, addebitato sul Suo saldo.
I Suoi dati di rete escono dal dispositivo?
No, quando usa lo strumento di questa pagina: il calcolo avviene interamente nel browser. Tramite l'API, il blocco inviato viene elaborato e scartato; non viene conservato nulla.
Supporta IPv6?
Sì. I blocchi IPv6 vengono calcolati con aritmetica intera esatta, e il totale degli indirizzi viene restituito come stringa perché nulla venga arrotondato.
Perché una /31 mostra due host utilizzabili?
Perché l'RFC 3021 definisce la /31 come un collegamento punto-punto in cui entrambi gli indirizzi sono utilizzabili e non c'è broadcast. La vecchia regola di sottrarre due non si applica.
Può dividere una rete in subnet più piccole?
Sì. Indichi il prefisso desiderato e ogni subnet risultante torna con il proprio intervallo. Una singola risposta restituisce al massimo 1024 subnet.
Cosa succede con una maschera non valida?
Viene rifiutata con una spiegazione. Una maschera i cui bit a uno non sono contigui, come 255.255.0.255, non è una maschera valida, e restituire un risultato per essa sarebbe peggio che restituire un errore.
Perché alcune reti non hanno la zona inversa?
La zona in-addr.arpa cade solo su un ottetto intero: /8, /16 o /24. Qualunque altro caso richiede la delega dell'RFC 2317, quindi dare un unico nome di zona sarebbe fuorviante, e non viene dato.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/dev/subnet \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/dev/subnet", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/subnet",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/subnet", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/subnet", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"items": [
"valor-1",
"valor-2"
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.subnet",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_subnets | 1024 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |