La carenza di indirizzi IPv4
Secondo Vint Cerf (il padre dell'IP), la dimensione dell'indirizzo IPv4 a 32 bit è stata scelta arbitrariamente. L'IP è stato un esperimento di collaborazione tra governo e università e l'attuale Internet pubblico non è mai stato immaginato. Il paradigma IP era che ogni dispositivo collegato avrebbe avuto un indirizzo IP univoco (tutti i pacchetti inviati tra dispositivi IP sarebbero collegati end-to-end dall'indirizzo IP di origine all'indirizzo IP di destinazione) e molti protocolli che utilizzano IP dipendono da ciascun dispositivo avere un indirizzo IP univoco.
Supponendo di poter utilizzare ogni possibile indirizzo IPv4 *, ci sono solo 4.294.967.296 possibili indirizzi IPv4, ma (a settembre 2018) l'attuale popolazione mondiale è 7.648.290.361. Come puoi vedere, non ci sono abbastanza indirizzi IPv4 possibili per ogni persona per averne anche uno, ma molte persone hanno un computer, una stampante, un telefono cellulare, un tablet, una console di gioco, una smart TV, ecc., Ognuno richiede un indirizzo IP e che non tocca nemmeno le esigenze aziendali per gli indirizzi IP. Siamo anche sulla cuspide dell'IoT (Internet of Things), dove ogni dispositivo ha bisogno di un indirizzo IP: lampadine, termostati, termometri, manometri e sistemi di irrigazione, sensori di allarme, elettrodomestici, veicoli, apriporta da garage, sistemi di intrattenimento, collari per animali domestici e chissà cos'altro.
* Esistono blocchi di indirizzi IPv4 che non possono essere utilizzati per l'indirizzamento host. Ad esempio, multicast ha un blocco di 268.435.456 indirizzi che non possono essere utilizzati per l'indirizzamento dell'host. IANA mantiene il registro degli indirizzi per scopi speciali IPv4 IANA su https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml per documentare tutti i blocchi di indirizzi speciali e i loro scopi .
IANA (Internet Assigned Numbers Authority) ha esaurito i blocchi di indirizzi IPv4 da assegnare ai RIR (Registri Internet regionali) da assegnare nelle rispettive regioni e ora i RIR hanno esaurito gli indirizzi IPv4 da assegnare in ciascuna regione. Gli ISP (provider di servizi Internet) e le aziende che desiderano o necessitano di indirizzi IPv4 non possono più ottenere gli indirizzi IPv4 dai loro RIR e ora devono provare ad acquistare indirizzi IPv4 da aziende che potrebbero avere extra (poiché la carenza di indirizzi IPv4 aumenta, il prezzo degli indirizzi IPv4 salire).
Anche se tutti gli indirizzi IPv4 riservati a scopi speciali e che non possono essere utilizzati per l'indirizzamento host fossero resi disponibili per l'uso, resteremmo nella stessa posizione perché semplicemente non ci sono abbastanza indirizzi IPv4 a causa delle dimensioni limitate degli indirizzi IPv4.
Riduzione della carenza di indirizzi IPv4
IANA e i RIR avrebbero esaurito gli indirizzi IPv4 molti anni prima di loro se IANA e IETF (Internet Engineering Task Force) non avessero adottato mitigazioni per la carenza di indirizzi IPv4. Una mitigazione importante è stata la deprecazione delle classi di rete IPv4 a favore del CIDR (Classless Inter-Domain Routing). L'indirizzamento di classe consente solo tre dimensioni di rete assegnate (16.777.216, 65.536 o 256 indirizzi host totali per rete), il che significa che molti indirizzi vengono sprecati (un'azienda che necessita solo di 300 indirizzi host dovrebbe essere allocata a una rete di classe che ha 65.536 host possibili indirizzi, sprecando oltre il 99% degli indirizzi nella classe della rete),
Di gran lunga, la mitigazione che ha avuto il maggiore impatto sull'estensione della vita di IPv4 è l'uso dell'indirizzamento privato e una variante di NAT (Network Address Translation) chiamata NAPT (Network Address Port Translation), che è ciò che la maggior parte delle persone intende quando fare riferimento a NAT o PAT (PAT è un termine specifico del fornitore per NAPT). Sfortunatamente, NAPT è una brutta soluzione che rompe il paradigma IP end-to-end e che rompe i protocolli che dipendono dall'indirizzamento IP univoco, richiedendo soluzioni ancora più brutte.
NAT / NAPT
Il concetto di NAT è piuttosto semplice: sostituisce uno o entrambi gli indirizzi IPv4 di origine e di destinazione in un'intestazione del pacchetto mentre il pacchetto passa attraverso il dispositivo NAT. In pratica, richiede il calcolo perché l'intestazione IPv4 ha un campo calcolato per verificare l'integrità dell'intestazione IPv4 e qualsiasi modifica apportata all'intestazione IPv4 richiede il ricalcolo del campo e alcuni protocolli di trasporto nel payload del pacchetto hanno il proprio calcolo campi che devono essere ricalcolati, utilizzando le risorse di calcolo nel dispositivo NAT che potrebbero essere utilizzate per l'inoltro dei pacchetti.
In NAT di base, il dispositivo NAT ha un pool di indirizzi IPv4 che utilizza per sostituire gli indirizzi IPv4 di origine delle intestazioni dei pacchetti per i pacchetti IPv4 inviati da una rete interna a una rete esterna e mantiene una tabella di traduzione per tradurre indirizzi IPv4 di destinazione del traffico che ritorna dalla rete esterna per riconsegnare i pacchetti agli host corretti sulla rete interna. Ciò richiede anche risorse sul dispositivo NAT per creare e gestire la tabella di traduzione ed eseguire ricerche nella tabella. Questo utilizzo delle risorse può rallentare l'inoltro dei pacchetti poiché le risorse utilizzate da NAT sono ricavate dalle risorse che potrebbero essere utilizzate per l'inoltro dei pacchetti.
NAPT amplia ulteriormente il NAT di base traducendo anche gli indirizzi del protocollo di trasporto (porte) per TCP e UDP e gli ID query per ICMP. Traducendo anche gli indirizzi del livello di trasporto, NAPT consente l'uso di un singolo indirizzo IPv4 esterno per molti indirizzi IPv4 host interni. NAPT richiede ancora più risorse rispetto al NAT di base perché richiede una tabella separata per ciascun protocollo del livello di trasporto e deve anche eseguire i calcoli di integrità per i protocolli di trasporto.
L'uso dell'indirizzamento IPv4 privato, che può essere riutilizzato su più reti (potresti aver notato che la maggior parte delle reti domestiche / residenziali utilizza la stessa rete 192.168.1.0/24, che si trova in uno degli intervalli di indirizzi IPv4 privati allocati IANA) , insieme a NAPT, consente agli utenti aziendali e domestici di utilizzare un unico indirizzo esterno (pubblico) per una grande rete interna (indirizzata a privati). Ciò consente di risparmiare molti, molti indirizzi IPv4 (più volte il numero totale di possibili indirizzi IPv4) e ha prolungato la durata di IPv4 ben oltre il punto in cui sarebbe crollato senza NAPT. NAPT ha alcuni gravi inconvenienti:
- NAPT rompe il paradigma IP end-to-end e funziona solo con TCP, UDP e ICMP, infrangendo altri protocolli di trasporto. Esistono anche protocolli a livello di applicazione che utilizzano TCP o UDP che sono interrotti da NAPT, anche se TCP e UDP funzionano nominalmente con NAPT. Altre mitigazioni, ad esempio STUN / TURN, possono essere disponibili per alcuni protocolli a livello di applicazione, ma possono aggiungere costi e complessità.
- NAPT è molto dispendioso in termini di risorse, rallentando l'inoltro dei pacchetti rispetto a ciò che è possibile senza utilizzare alcuna forma di NAT. Alcuni fornitori aggiungono hardware dedicato per mitigare la necessità di rubare risorse dall'inoltro dei pacchetti, ma ciò comporta costi aggiuntivi, dimensioni, complessità e consumo di energia.
- Quando si utilizza NAPT, il traffico avviato dall'esterno della rete NAPT non può essere recapitato alla rete interna perché non è presente alcuna voce di traduzione nella tabella di traduzione, che viene aggiunta dal traffico avviato internamente. Il singolo indirizzo esterno (pubblico) è configurato sul dispositivo NAT e si presume che qualsiasi pacchetto con quell'indirizzo IPv4 di destinazione e nessuna voce per l'indirizzo IPv4 di origine nella tabella di traduzione per il protocollo di trasporto sia per il dispositivo NAPT, non la rete interna. C'è una mitigazione, chiamata Port Forwarding, per questo problema.
- Il Port Forwarding configura sostanzialmente, manualmente, una voce permanente in una tabella di traduzione per consentire il traffico avviato dall'esterno che è destinato a un particolare protocollo di trasporto e indirizzo per il protocollo da consegnare a un particolare host interno. Ciò ha lo svantaggio di consentire a un solo host interno di essere la destinazione per un determinato protocollo e indirizzo di trasporto. Ad esempio, se nella rete interna sono presenti più server Web, solo uno dei server Web può essere esposto sulla porta TCP 80 (impostazione predefinita per i server Web).
- Poiché la carenza di indirizzi IPv4 è così grave, gli ISP (provider di servizi Internet) stanno esaurendo gli indirizzi pubblici da assegnare ai propri clienti. Gli ISP non possono più ottenere più indirizzi pubblici, quindi hanno adottato alcune mitigazioni che colpiscono particolarmente gli utenti domestici / residenziali. Gli ISP vogliono riservare il loro prezioso pool di indirizzi pubblici per i loro clienti aziendali che sono disposti a pagare per il privilegio di ottenere indirizzi pubblici. Per fare ciò, gli ISP stanno ora iniziando ad assegnare indirizzi privati o condivisi ai loro clienti domestici / residenziali e gli ISP usano NAPT sui propri router per facilitare l'uso di più indirizzi privati o condivisi su un singolo indirizzo pubblico. Ciò crea una situazione in cui una rete domestica / residenziale si trova dietro due traduzioni NAPT (ISP NAPT al cliente NAPT),
- Molte persone commettono l'errore di equiparare NAPT e sicurezza perché gli host interni non possono essere indirizzati direttamente dall'esterno. Questo è un falso senso di sicurezza. Poiché un firewall che collega una rete a Internet pubblica è un posto conveniente per eseguire NAPT, ciò confonde semplicemente la situazione. Crea una percezione pericolosa che quel NAPT, di per sé, sia il firewall e un firewall reale non sia necessario. La sicurezza della rete viene dai firewall, che bloccano per impostazione predefinita tutto il traffico avviato dall'esterno, consentendo solo il traffico che è esplicitamente configurato per consentire, eventualmente effettuando un'ispezione approfondita del contenuto del pacchetto per eliminare i payload di pacchetti pericolosi. Ciò che alcune persone non riescono a capire è che, senza un firewall, in hardware o software, all'esterno o integrato nel dispositivo NAPT, per proteggere il dispositivo NAPT, il dispositivo NAPT stesso è vulnerabile. Se il dispositivo NAPT è compromesso, esso e, per estensione, un utente malintenzionato, ha pieno accesso alla rete interna indirizzata privatamente. I pacchetti avviati all'esterno che non corrispondono a una tabella di traduzione sono destinati al dispositivo NAPT stesso, poiché è il dispositivo che viene effettivamente indirizzato con l'indirizzo esterno, quindi il dispositivo NAPT può essere attaccato direttamente.
La soluzione alla carenza di indirizzi IPv4
L'IETF ha previsto la carenza di indirizzi IPv4 e ha creato la soluzione: IPv6, che utilizza indirizzi a 128 bit, il che significa che ci sono 340.282.366.920.938.463.463.374.607.431.768.211.456 possibili indirizzi IPv6. Il numero quasi inimmaginabile di indirizzi IPv6 elimina la necessità di NAPT (IPv6 non ha standard NAT, come IPv4, e il NAT RFC sperimentale IPv6 proibisce specificamente NAPT), ripristinando il paradigma IP end-to-end originale. Le mitigazioni della carenza di indirizzi IPv4 hanno lo scopo di prolungare la durata di IPv4 fino a quando IPv6 è onnipresente, a quel punto IPv4 dovrebbe svanire.
Gli umani non possono veramente comprendere numeri delle dimensioni utilizzate per IPv6. Ad esempio, una rete IPv6 standard utilizza 64 bit per ciascuna rete e porzioni host dell'indirizzo di rete. Sono 18.446.744.073.709.551.616 possibili reti IPv6 standard / 64 e lo stesso (enorme) numero di indirizzi host per ciascuna di tali reti. Per cercare di capire un numero così grande, considera gli strumenti che scansionano tutti i possibili indirizzi su una rete. Se un tale strumento potesse scansionare 1.000.000 di indirizzi al secondo (improbabile), occorrerebbero più di 584.542 anni per eseguire la scansione su una singola rete / 64 IPv6. Attualmente, solo 1/8 dello spazio degli indirizzi IPv6 totale è assegnato agli indirizzi IPv6 globali, che raggiunge 2.305.843.009.213.693.952 reti IPv6 / 64 standard e se la popolazione mondiale è di 21 miliardi nell'anno 2100 (un numero un po 'realistico), ognuno di questi 21 miliardi di persone potrebbe avere 109.802.048 reti IPv6 / 64 standard, ogni rete con 18.446.744.073.709.551.616 possibili indirizzi host. Sfortunatamente, la carenza di indirizzi IPv4 (decenni) ha una radicata conservazione degli indirizzi nelle persone, che molte persone semplicemente non riescono a lasciarla andare, e provano ad applicarla a IPv6, che è inutile e in realtà dannoso. IPv6 è in realtà progettato per sprecare indirizzi.
L'IETF ha anche avuto il vantaggio del senno di poi, e ha migliorato l'IP (in IPv6) rimuovendo le funzionalità di IPv4 che non funzionavano bene, migliorando alcune funzionalità di IPv4 e aggiungendo funzionalità che IPv4 non aveva, creando un nuovo IP migliorato . Poiché IPv6 è un protocollo completamente separato da IPv4, può essere eseguito in parallelo con IPv4 poiché la transizione viene effettuata da IPv4 a IPv6. Gli host e i dispositivi di rete possono eseguire contemporaneamente IPv4 e IPv6 sulla stessa interfaccia (dual stack) e ciascuno è invisibile all'altro; non vi sono interferenze tra i due protocolli.
Il problema con IPv6 è che in realtà è un protocollo completamente diverso che è incompatibile con l'onnipresente IPv4 e che le attenuazioni della carenza di indirizzi IPv4 sono viste da molte persone come "abbastanza buone". Il risultato è che sono state oltre 20 anni da quando l'IPv6 è stato standardizzato e proprio ora stiamo ottenendo una reale trazione nell'uso dell'IPv6 (Google riporta, a settembre 2018, l'adozione IPv6 in tutto il mondo di oltre il 20% e il tasso di adozione IPv6 negli Stati Uniti è oltre il 35%). Il motivo per cui stiamo finalmente passando a IPv6 è che semplicemente non ci sono più indirizzi IPv4 inutilizzati da assegnare.
Ci sono altri ostacoli, tutti parte della cultura IPv4, che sono semplicemente difficili da guardare per le persone. Molte persone hanno anche paura dell'IPv6, essendo cresciute e sentendosi a proprio agio con IPv4, le verruche e tutto il resto. Ad esempio, gli indirizzi IPv6 sembrano essere grandi e brutti rispetto agli indirizzi IPv4 e questo sembra scoraggiare molte persone. La realtà è che IPv6 è spesso più semplice e flessibile di IPv4, specialmente per l'indirizzamento, e le lezioni apprese in IPv4 sono state applicate a IPv6 sin dall'inizio.