Protocollo di tunneling di livello 2 - Layer 2 Tunneling Protocol

Nelle reti di computer , Layer 2 Tunneling Protocol ( L2TP ) è un protocollo di tunneling utilizzato per supportare reti private virtuali (VPN) o come parte della fornitura di servizi da parte degli ISP. Utilizza la crittografia ("nascondersi") solo per i propri messaggi di controllo (utilizzando un segreto precondiviso opzionale) e non fornisce alcuna crittografia o riservatezza dei contenuti di per sé. Piuttosto, fornisce un tunnel per il livello 2 (che può essere crittografato) e il tunnel stesso può essere passato su un protocollo di crittografia di livello 3 come IPsec .

Storia

Pubblicato nel 2000 come proposto standard RFC 2661, L2TP ha le sue origini principalmente in due protocolli di tunneling più anziani per la comunicazione point-to-point: Cisco 's Layer 2 Forwarding Protocol (L2F) e Microsoft ' s Point-to-Point Tunneling Protocol (PPTP ). Una nuova versione di questo protocollo, L2TPv3 , è apparsa come proposta di standard RFC 3931 nel 2005. L2TPv3 fornisce funzionalità di sicurezza aggiuntive, incapsulamento migliorato e la capacità di trasportare collegamenti dati diversi dal semplice protocollo PPP ( Point-to-Point Protocol ) su una rete IP (ad esempio: Frame Relay , Ethernet , ATM , ecc.).

Descrizione

L'intero pacchetto L2TP, compreso il carico utile e l'intestazione L2TP, viene inviato all'interno di un datagramma UDP ( User Datagram Protocol ). Una virtù della trasmissione su UDP (piuttosto che su TCP) è che evita il "problema di fusione TCP". È comune trasportare sessioni PPP all'interno di un tunnel L2TP. L2TP di per sé non fornisce riservatezza o autenticazione forte. IPsec viene spesso utilizzato per proteggere i pacchetti L2TP fornendo riservatezza, autenticazione e integrità. La combinazione di questi due protocolli è generalmente nota come L2TP/IPsec (discusso di seguito).

I due endpoint di un tunnel L2TP sono chiamati concentratore di accesso L2TP (LAC) e server di rete L2TP (LNS). Il LNS attende nuovi tunnel. Una volta stabilito un tunnel, il traffico di rete tra i peer è bidirezionale. Per essere utili per il networking, i protocolli di livello superiore vengono quindi eseguiti attraverso il tunnel L2TP. Per facilitare ciò, viene stabilita una sessione L2TP all'interno del tunnel per ciascun protocollo di livello superiore come PPP. Il LAC o l'LNS possono avviare le sessioni. Il traffico per ogni sessione è isolato da L2TP, quindi è possibile configurare più reti virtuali attraverso un singolo tunnel.

I pacchetti scambiati all'interno di un tunnel L2TP sono classificati come pacchetti di controllo o pacchetti di dati . L2TP fornisce funzionalità di affidabilità per i pacchetti di controllo, ma nessuna affidabilità per i pacchetti di dati. L'affidabilità, se lo si desidera, deve essere fornita dai protocolli annidati in esecuzione all'interno di ogni sessione del tunnel L2TP.

L2TP consente la creazione di una rete dialup privata virtuale (VPDN) per connettere un client remoto alla sua rete aziendale utilizzando un'infrastruttura condivisa, che potrebbe essere Internet o la rete di un provider di servizi.

Modelli di tunneling

Un tunnel L2TP può estendersi su un'intera sessione PPP o solo su un segmento di una sessione a due segmenti. Questo può essere rappresentato da quattro diversi modelli di tunneling, vale a dire:

  • tunnel volontario
  • tunnel obbligatorio — chiamata in arrivo
  • tunnel obbligatorio — selezione remota
  • Connessione multihop L2TP

Struttura del pacchetto L2TP

Un pacchetto L2TP è composto da:

Bit 0–15 Bit 16–31
Flag e informazioni sulla versione Lunghezza (opzionale)
ID tunnel ID sessione
Ns (opt) N. (opzionale)
Dimensione offset (opzionale) Pad offset (opzionale)......
Dati sul carico utile

Significati dei campi:

Bandiere e versione
flag di controllo che indicano il pacchetto di dati/controllo e la presenza di campi di lunghezza, sequenza e offset.
Lunghezza (opzionale)
Lunghezza totale del messaggio in byte, presente solo quando è impostato il flag di lunghezza.
ID tunnel
Indica l'identificatore per la connessione di controllo.
ID sessione
Indica l'identificatore di una sessione all'interno di un tunnel.
Ns (opzionale)
numero di sequenza per questo dato o messaggio di controllo, che inizia da zero e aumenta di uno (modulo 2 16 ) per ogni messaggio inviato. Presente solo quando il flag di sequenza è impostato.
N. (opzionale)
numero di sequenza per la ricezione del messaggio previsto. Nr è impostato sugli Ns dell'ultimo messaggio in ordine ricevuto più uno (modulo 2 16 ). Nei messaggi dati, Nr è riservato e, se presente (come indicato dal bit S), DEVE essere ignorato alla ricezione.
Dimensione offset (opzionale)
Specifica dove si trovano i dati del payload oltre l'intestazione L2TP. Se il campo offset è presente, l'intestazione L2TP termina dopo l'ultimo byte del riempimento offset. Questo campo esiste se il flag di offset è impostato.
Pad offset (opzionale)
Lunghezza variabile, come specificato dalla dimensione dell'offset. Il contenuto di questo campo non è definito.
Dati sul carico utile
Lunghezza variabile (dimensione massima del payload = dimensione massima del pacchetto UDP - dimensione dell'intestazione L2TP)

Scambio di pacchetti L2TP

Al momento della configurazione della connessione L2TP, molti pacchetti di controllo vengono scambiati tra server e client per stabilire tunnel e sessioni per ciascuna direzione. Un peer richiede all'altro peer di assegnare un tunnel e un ID di sessione specifici tramite questi pacchetti di controllo. Quindi, utilizzando questo tunnel e questo ID di sessione, i pacchetti di dati vengono scambiati con i frame PPP compressi come carico utile.

L'elenco dei messaggi di controllo L2TP scambiati tra LAC e LNS, per l'handshake prima di stabilire un tunnel e la sessione in modalità tunneling volontario sono

Scambio di pacchetti L2TP.svg

L2TP/IPsec

A causa della mancanza di riservatezza inerente al protocollo L2TP, viene spesso implementato insieme a IPsec . Questo è indicato come L2TP/IPsec ed è standardizzato in IETF RFC 3193. Il processo di configurazione di una VPN L2TP/IPsec è il seguente:

  1. Negoziazione dell'associazione di sicurezza IPsec (SA), in genere tramite scambio di chiavi Internet (IKE). Questo viene eseguito sulla porta UDP 500 e comunemente utilizza una password condivisa (le cosiddette " chiavi pre-condivise "), chiavi pubbliche o certificati X.509 su entrambe le estremità, sebbene esistano altri metodi di codifica.
  2. Istituzione della comunicazione Encapsulating Security Payload (ESP) in modalità di trasporto. Il numero di protocollo IP per ESP è 50 (confrontare TCP 6 e UDP 17). A questo punto è stato stabilito un canale sicuro, ma non è in corso alcun tunneling.
  3. Negoziazione e creazione di tunnel L2TP tra gli endpoint SA. L'effettiva negoziazione dei parametri avviene sul canale sicuro della SA, all'interno della crittografia IPsec. L2TP utilizza la porta UDP 1701.

Al termine del processo, i pacchetti L2TP tra gli endpoint vengono incapsulati da IPsec. Poiché il pacchetto L2TP stesso è avvolto e nascosto all'interno del pacchetto IPsec, l'indirizzo IP di origine e destinazione originale è crittografato all'interno del pacchetto. Inoltre, non è necessario aprire la porta UDP 1701 sui firewall tra gli endpoint, poiché i pacchetti interni non vengono elaborati fino a quando i dati IPsec non sono stati decifrati e rimossi, cosa che avviene solo sugli endpoint.

Un potenziale punto di confusione in L2TP/IPsec è l'uso dei termini tunnel e canale sicuro . Il termine modalità tunnel si riferisce a un canale che consente il trasporto di pacchetti intatti di una rete su un'altra rete. Nel caso di L2TP/PPP, consente il trasporto di pacchetti L2TP/PPP su IP. Un canale sicuro si riferisce a una connessione all'interno della quale è garantita la riservatezza di tutti i dati. In L2TP/IPsec, prima IPsec fornisce un canale sicuro, quindi L2TP fornisce un tunnel. IPsec specifica anche un protocollo tunnel: questo non viene utilizzato quando viene utilizzato un tunnel L2TP.

implementazione di Windows

Windows ha il supporto nativo (configurabile nel pannello di controllo) per L2TP da Windows 2000 . Windows Vista ha aggiunto 2 strumenti alternativi, uno snap-in MMC chiamato "Windows Firewall con protezione avanzata" (WFwAS) e lo strumento da riga di comando " netsh advfirewall". Una limitazione con entrambi i comandi WFwAS e netsh è che i server devono essere specificati dall'indirizzo IP. Windows 10 ha aggiunto i comandi PowerShell " Add-VpnConnection " e " Set-VpnConnectionIPsecConfiguration " . È necessario creare una chiave di registro sul client e sul server se il server è dietro un dispositivo NAT-T. [1]

L2TP nelle reti degli ISP

L2TP viene spesso utilizzato dagli ISP quando viene rivenduto un servizio Internet, ad esempio ADSL o cavo . Dall'utente finale, i pacchetti viaggiano sulla rete di un fornitore di servizi di rete all'ingrosso a un server chiamato Broadband Remote Access Server ( BRAS ), un convertitore di protocollo e un router combinati. Sulle reti legacy, il percorso dalle apparecchiature dei locali del cliente dell'utente finale al BRAS può avvenire tramite una rete ATM . Da lì in poi, su una rete IP, un tunnel L2TP va dal BRAS (che agisce come LAC) a un LNS che è un router perimetrale al confine della rete IP dell'ISP di destinazione finale. Vedere l' esempio di ISP rivenditori che utilizzano L2TP .

Riferimenti RFC

  • RFC  2341 Cisco Layer Two Forwarding (protocollo) "L2F" (un predecessore di L2TP)
  • Protocollo di tunneling punto-punto (PPTP) RFC  2637
  • RFC  2661 Protocollo di tunneling di livello due "L2TP"
  • RFC  2809 Implementazione del tunneling obbligatorio L2TP tramite RADIUS
  • RFC  2888 Accesso remoto sicuro con L2TP
  • RFC  3070 Layer Two Tunneling Protocol (L2TP) su Frame Relay
  • Informazioni sulla causa di disconnessione L2TP RFC  3145
  • RFC  3193 Protezione di L2TP tramite IPsec
  • RFC  3301 Layer Two Tunneling Protocol (L2TP): rete di accesso ATM
  • Servizi differenziati RFC  3308 Layer Two Tunneling Protocol (L2TP)
  • RFC  3355 Layer Two Tunneling Protocol (L2TP) su ATM Adaptation Layer 5 (AAL5)
  • RFC  3371 Layer Two Tunneling Protocol "L2TP" Management Information Base
  • RFC  3437 Estensioni del protocollo di tunneling di livello due per la negoziazione del protocollo di controllo del collegamento PPP
  • RFC  3438 Layer Two Tunneling Protocol (L2TP) Internet Assigned Numbers: aggiornamento delle considerazioni sulla IANA (Internet Assigned Numbers Authority)
  • RFC  3573 Segnalazione dello stato Modem-On-Hold in Layer 2 Tunneling Protocol (L2TP)
  • RFC  3817 Layer 2 Tunneling Protocol (L2TP) Active Discovery Relay per PPP over Ethernet (PPPoE)
  • Protocollo di tunneling di livello due RFC  3931 - Versione 3 (L2TPv3)
  • Estensioni RFC  4045 per supportare il trasporto efficiente del traffico multicast nel protocollo di tunneling di livello 2 (L2TP)
  • Estensioni di failover RFC  4951 per il "failover" del protocollo di tunneling di livello 2 (L2TP)

Guarda anche

Riferimenti

link esterno

implementazioni

Altro