Oltre a compiti relativi alla sicurezza come nel caso delle ACL, un router è in grado di assolvere anche a compiti relativi all'indirizzamento automatico.
Dynamic Host Configuration Protocol (DHCP)
Il DHCP (Dynamic Host Configuration Protocol) è un protocollo di rete di livello applicativo che consente ai device di una rete locale di ricevere dinamicamente, non appena connessi, la configurazione di base: indirizzo IP, subnet mask, default gateway e, se previsto, l'indirizzo IP del DNS (Domain Name Server).
In particolari contesti il compito di assegnare dinamicamente la configurazione di rete viene affidato ad uno specifico DHCP Server, ma di prassi questo servizio è svolto dal router principale della rete locale.
Il processo di assegnazione della configurazione prevede più step:
- Non appena connesso, il client (ad esempio, l'host in attesa di configurazione) invia in broadcast un messaggio di DHCPDISCOVER col quale si informa di quale macchina sia responsabile del servizio DHCP all'interno della LAN;
- In risposta alla DHCPDISCOVER, il router invia all'host una DHCPOFFER per segnalare la propria disponibilità al servizio;
- L'host risponde quindi (ancora in broadcast) inviando una DHCPREQUEST, ovvero una richiesta di configurazione;
- Il router invia finalmente all'host la configurazione.
Da notare che la configurazione viene assegnata - o, come è più corretto dire, "affittata" - all'host solo per un limitato periodo di tempo, scaduto il quale, lo stesso host farà richiesta al DHCP Server (il router) per il rinnovo della medesima configurazione.
Ovviamente, all'interno di una rete, non tutti i dispositivi dovranno disporre di indirizzamento dinamico (è ad esempio auspicabile che i Server abbiano indirizzo statico, vale a dire stabile nel tempo per risultare ben noto ai fruitori dei propri servizi).
É per tale motivo che, nella configurazione del servizio di DHCP è possibile specificare l'insieme di IP Address riservati all'indirizzamento statico, e più Pool di indirizzi dei quali è invece possibile disporre per l'indirizzamento dinamico (si noti che si parla di più di un pool, dal momento che il router potrà servire più reti in ambito DHCP: quelle connesse alle proprie interfacce).
Qualora, peraltro, un indirizzo nel pool fosse in conflitto con altri indirizzi nella rete, lo stesso verrebbe escluso fino a risoluzione del conflitto.
É per tale motivo che, nella configurazione del servizio di DHCP è possibile specificare l'insieme di IP Address riservati all'indirizzamento statico, e più Pool di indirizzi dei quali è invece possibile disporre per l'indirizzamento dinamico (si noti che si parla di più di un pool, dal momento che il router potrà servire più reti in ambito DHCP: quelle connesse alle proprie interfacce).
Qualora, peraltro, un indirizzo nel pool fosse in conflitto con altri indirizzi nella rete, lo stesso verrebbe escluso fino a risoluzione del conflitto.
Di seguito le istruzione per la configurazione DHCP:
|
Segue un esempio di configurazione DHCP.
Router(config)#ip dhcp pool MyPool1
Router(dhcp-config)#network 192.168.1.0 255.255.255.0
Router(dhcp-config)#default-router 192.168.1.1
Router(config)#ip dhcp pool MyPool2
Router(dhcp-config)#network 192.168.2.0 255.255.255.0
Router(dhcp-config)#default-router 192.168.2.1
Gli indirizzi dei terminali sono stati assegnati automaticamente attingendo dai due pool di indirizzi definiti e nel rispetto delle reti che originano dalle interfacce del router.
Network Address Translation (NAT)
Con NAT si indica la tecnica comunemente utilizzata per "sostituire", nell’intestazione di un pacchetto, l'indirizzo IP (sorgente o destinazione) con un altro indirizzo.
NAT viene principalmente utilizzato per consentire l'uso di indirizzi privati all'interno di reti locali. Attraverso NAT, difatti, gli host della rete privata "escono" su internet "mascherando" il proprio indirizzo privato con un indirizzo pubblico. Di fatto, senza NAT, non sarebbe possibile l'impiego di indirizzi privati.
Dal momento che il NAT offre implicitamente una misura di protezione, non è insolito trovarlo implementato per mezzo di Firewall. Tuttavia, quando il traffico di rete lo consente, lo stesso compito può essere tranquillamente affidato ai router, ed è quest'ultima la situazione qui esaminata.
É prassi distinguere fra tre distinti tipi di NAT:
Static NAT
Il NAT Statico realizza una traduzione di indirizzi del tipo one-to-one, ovvero, ad ogni indirizzo privato viene fatto corrispondere uno, ed uno solo, indirizzo pubblico da utilizzare all'esterno della rete locale.
L'implementazione del NAT statico è immediata: a ciascun pacchetto in uscita dalla LAN privata, viene assegnato in modo univoco, un indirizzo sorgente pubblico; l'inverso sarà per i pacchetti in ingresso alla rete: verrà assegnato loro l'indirizzo di destinazione privato corrispondente all'IP pubblico col quale si presenteranno al medesimo router.
Ovviamente, il NAT statico richiede una disponibilità di indirizzi pubblici almeno pari al numero di host della rete privata che abbiano necessità di uscire su Internet.
Per configurare su un router il NAT statico, questi i passaggi:
Router(config-if)#ip nat inside
Router(config)#interface fa0/1
Router(config-if)#ip nat inside
Router(config-if)#ip nat outside
Router(config)#interface s0/1/0
Router(config-if)#ip nat outside
Dynamic NAT:
A differenza di quanto avviene per il NAT statico, nel NAT dinamico la corrispondenza <indirizzo privato - indirizzo pubblico> non è fissa: ad un indirizzo privato che ne faccia richiesta, viene assegnato il primo fra gli indirizzi pubblici al momento disponibili. Il router dispone, difatti, di un pool di indirizzi pubblici (in numero almeno pari a quelli privati) che assegna dinamicamente ai pacchetti in uscita dalla rete locale, e che torneranno ad essere disponibili una volta esaurito il proprio compito. Il router tiene anche traccia delle associazioni correnti <indirizzo privato - indirizzo pubblico> attraverso un'apposita NAT Table.
Per configurare in un router il NAT dinamico, è necessario:
Router(config-if)#ip nat outside
Router(config)#interface s0/1/0
Router(config-if)#ip nat outside
Di seguito un esempio di configurazione per NAT dinamico: gli indirizzi privati della rete 192.168.1.0/24 (nel presente scenario, di fatto, il solo indirizzo 192.168.1.254) vengono "mascherati" con gli indirizzi nel range [100.100.100.1 - 100.100.100.5].
Router(config)#interface fa0/0
Router(config-if)#ip address 192.168.1.1 255.255.255.0
Router(config-if)#ip nat inside
Router(config-if)#exit
Router(config)#interface s0/0/1
Router(config-if)#ip address 200.100.10.1 255.255.255.252
Router(config-if)#ip nat outside
Router(config-if)#exit
Router(config)#access-list 10 permit 192.168.1.0 0.0.0.255
Router(config)#ip nat pool MyPool 100.100.100.1 100.100.100.5
netmask 255.255.255.248
Router(config)#ip nat inside source list 10 pool MyPool
Da tenere sempre presente che i pacchetti uscenti dalla rete privata, al di fuori di questa, verranno gestiti come pacchetti provenienti dalla rete 100.100.100.0/29 (come imposto dal pool di indirizzi pubblici adottato nel NAT dinamico).
NAT Overload o PAT
Router(config)#ip dhcp pool MyPool1
Router(dhcp-config)#network 192.168.1.0 255.255.255.0
Router(dhcp-config)#default-router 192.168.1.1
Router(config)#ip dhcp pool MyPool2
Router(dhcp-config)#network 192.168.2.0 255.255.255.0
Router(dhcp-config)#default-router 192.168.2.1
Gli indirizzi dei terminali sono stati assegnati automaticamente attingendo dai due pool di indirizzi definiti e nel rispetto delle reti che originano dalle interfacce del router.
Network Address Translation (NAT)
Con NAT si indica la tecnica comunemente utilizzata per "sostituire", nell’intestazione di un pacchetto, l'indirizzo IP (sorgente o destinazione) con un altro indirizzo.
NAT viene principalmente utilizzato per consentire l'uso di indirizzi privati all'interno di reti locali. Attraverso NAT, difatti, gli host della rete privata "escono" su internet "mascherando" il proprio indirizzo privato con un indirizzo pubblico. Di fatto, senza NAT, non sarebbe possibile l'impiego di indirizzi privati.
Dal momento che il NAT offre implicitamente una misura di protezione, non è insolito trovarlo implementato per mezzo di Firewall. Tuttavia, quando il traffico di rete lo consente, lo stesso compito può essere tranquillamente affidato ai router, ed è quest'ultima la situazione qui esaminata.
É prassi distinguere fra tre distinti tipi di NAT:
Static NAT
Il NAT Statico realizza una traduzione di indirizzi del tipo one-to-one, ovvero, ad ogni indirizzo privato viene fatto corrispondere uno, ed uno solo, indirizzo pubblico da utilizzare all'esterno della rete locale.
L'implementazione del NAT statico è immediata: a ciascun pacchetto in uscita dalla LAN privata, viene assegnato in modo univoco, un indirizzo sorgente pubblico; l'inverso sarà per i pacchetti in ingresso alla rete: verrà assegnato loro l'indirizzo di destinazione privato corrispondente all'IP pubblico col quale si presenteranno al medesimo router.
Ovviamente, il NAT statico richiede una disponibilità di indirizzi pubblici almeno pari al numero di host della rete privata che abbiano necessità di uscire su Internet.
Per configurare su un router il NAT statico, questi i passaggi:
- Specificare le interfacce del router con funzione di gateway delle reti private: le inside interface
Router(config-if)#ip nat inside
Router(config)#interface fa0/1
Router(config-if)#ip nat inside
- Specificare le outside interface, ovvero le interfacce del router che instradano i pacchetti all'esterno delle reti private
Router(config-if)#ip nat outside
Router(config)#interface s0/1/0
Router(config-if)#ip nat outside
- Definire le traduzioni <indirizzo privato - indirizzo pubblico>
Router(config)#ip nat inside
source 192.168.10.2 209.165.200.2
source 192.168.10.2 209.165.200.2
Router(config)#ip nat inside
source 192.168.10.3 209.165.200.3
source 192.168.10.3 209.165.200.3
Dynamic NAT:
A differenza di quanto avviene per il NAT statico, nel NAT dinamico la corrispondenza <indirizzo privato - indirizzo pubblico> non è fissa: ad un indirizzo privato che ne faccia richiesta, viene assegnato il primo fra gli indirizzi pubblici al momento disponibili. Il router dispone, difatti, di un pool di indirizzi pubblici (in numero almeno pari a quelli privati) che assegna dinamicamente ai pacchetti in uscita dalla rete locale, e che torneranno ad essere disponibili una volta esaurito il proprio compito. Il router tiene anche traccia delle associazioni correnti <indirizzo privato - indirizzo pubblico> attraverso un'apposita NAT Table.
Per configurare in un router il NAT dinamico, è necessario:
- Specificare le interfacce gateway delle reti private, ovvero le inside interface
es. Router(config)#interface fa0/0
Router(config-if)#ip nat inside
Router(config-if)#ip nat inside
Router(config)#interface fa0/1
Router(config-if)#ip nat inside
- Specificare le outside interface, ovvero le interfacce del router che instradano i pacchetti all'esterno
Router(config-if)#ip nat outside
Router(config)#interface s0/1/0
Router(config-if)#ip nat outside
- Definire, tramite una ACL, l'insieme di indirizzi privati che possono essere tradotti
es. Router(config)#access-list 10 permit 192.168.1.0 0.0.0.255
- Definire il pool di indirizzi pubblici (<ip-addr.min> <ip-addr.-max> netmask <subnet-mask>) da poter assegnare dinamicamente
es. Router(config)#ip nat pool
MyPool 209.165.200.1 209.165.200.254
MyPool 209.165.200.1 209.165.200.254
netmask 255.255.255.0
- Legare il pool di indirizzi pubblici agli indirizzi privati "traducibili"
es. Router(config)#ip nat inside source list 10 pool MyPool
Di seguito un esempio di configurazione per NAT dinamico: gli indirizzi privati della rete 192.168.1.0/24 (nel presente scenario, di fatto, il solo indirizzo 192.168.1.254) vengono "mascherati" con gli indirizzi nel range [100.100.100.1 - 100.100.100.5].
Router(config)#interface fa0/0
Router(config-if)#ip address 192.168.1.1 255.255.255.0
Router(config-if)#ip nat inside
Router(config-if)#exit
Router(config)#interface s0/0/1
Router(config-if)#ip address 200.100.10.1 255.255.255.252
Router(config-if)#ip nat outside
Router(config-if)#exit
Router(config)#access-list 10 permit 192.168.1.0 0.0.0.255
Router(config)#ip nat pool MyPool 100.100.100.1 100.100.100.5
netmask 255.255.255.248
Router(config)#ip nat inside source list 10 pool MyPool
Da tenere sempre presente che i pacchetti uscenti dalla rete privata, al di fuori di questa, verranno gestiti come pacchetti provenienti dalla rete 100.100.100.0/29 (come imposto dal pool di indirizzi pubblici adottato nel NAT dinamico).
NAT Overload o PAT
Il NAT Overload (anche detto Port Address Translation o PAT) prende origine dal NAT Dinamico, ma riesce a "mappare" una moltitudine di indirizzi privati su pochi (eventualmente uno solo) indirizzi pubblici.
La situazione tipica è quella delle reti domestiche: al di fuori della rete privata, tutti i pacchetti di qui uscenti assumono indistintamente lo stesso indirizzo Ip di origine, ovvero quello dell'Access Point (il router di frontiera della rete stessa).
L'idea alla base di NAT Overload è semplice: associare il numero di porta TCP/UDP di ciascun pacchetto con indirizzo privato legato allo stesso indirizzo pubblico. Quando un client apre una sessione TCP/IP, il router assegna un numero di porta al suo indirizzo di origine. NAT Overload si assicura che i client utilizzino ciascuno un numero di porta TCP differente. Quando un messaggio di risposta ritorna dal server, il numero della porta di origine, che diventa il numero della porta di destinazione per il viaggio di ritorno, determina a quale client il router dovrà destinare il pacchetto.
Di seguito le istruzioni per implementare NAT Overload per il router R0 del seguente scenario:
Nel caso si voglia implementare NAT Overload su unico indirizzo pubblico:
- Specificare le interfacce gateway delle reti private: le inside interface
Router(config-if)#ip nat inside
- Specificare la outside interface, ovvero l'interfaccia del router che instrada i pacchetti all'esterno
Router(config-if)#ip nat outside
- Definire una regola (ACL) che stabilisca quali indirizzi privati possono essere tradotti
permit 192.168.100.16 0.0.0.15
- Legare lindirizzo pubblico (quello della outside interface) all'insieme di indirizzi privati "traducibili"
overload
Nell'ipotesi in cui gli indirizzi pubblici disponibili siano, invece, superiori ad uno:
- Specificare le interfacce gateway delle reti private: le inside interface
Router(config-if)#ip nat inside
- Specificare le outside interface, ovvero l'interfaccia del router che instrada i pacchetti all'esterno
Router(config-if)#ip nat outside
- Definire una regola (ACL) che stabilisca quali indirizzi privati possono essere tradotti
permit 192.168.100.16 0.0.0.15
- Definire il pool di indirizzi pubblici da poter assegnare dinamicamente
es. Router(config)#ip nat pool
MyPool 198.18.184.105 198.18.184.110
netmask 255.255.255.248
MyPool 198.18.184.105 198.18.184.110
netmask 255.255.255.248
- Legare il pool di indirizzi pubblici all'insieme di indirizzi privati "traducibili"
pool MyPool overload
Commenti
Posta un commento