PDA

View Full Version : [QNAP] VPN L2TP: possibile bug del firmware


deuterio1
30-09-2017, 17:42
Ciao,

per caso c'è qualcuno che utlizza il servizio VPN L2TP su NAS QNAP con CPU ARM dietro ad un router TP-Link?

Spiego la questione: da tempo (oltre un anno) ho un problema assurdo con lil servizio VPN L2TP sui NAS QNAP della serie TS-x12.

In sintesi, la prima connessione L2TP viene negoziata con successo ma poi su tale sessione non è possibile effettuare alcun tipo di traffico, dopodiché, tutte le successive connessioni non riescono più ad instaurarsi.

Collegandomi in SSH all'unità e curiosando nei log ho scoperto che la causa è un Kernel OOPS che si verifica regolarmente proprio alla prima connessione:


[ 930.311004] Unable to handle kernel paging request at virtual address 7c12c468
[ 930.318496] pgd = c0004000
[ 930.321278] [7c12c468] *pgd=00000000
[ 930.325072] Internal error: Oops: 5 [#1] ARM
[ 930.329359] Modules linked in: l2tp_ppp l2tp_eth l2tp_netlink l2tp_ip l2tp_core pppoe pppox xfrm6_mode_transport xfrm6_mode_tunnel
(...omissis...)


dopo il quale il servizio VPN non può più operare.

Dei 3 NAS QNAP che possiedo, il problema si verifica solo sul TS-212, mentre sul TS-269L e sul TS-253A il servizio VPN L2TP funziona perfettamente (a partita di configurazione e di connessione).

Ho provato diversi firmware (dal 4.2.1 fino al current), con lo stesso risultato.

Ho provato anche a fare un factory reset del NAS, ma non è cambiato nulla.

Successivamente ho avuto l'opportunità di provare altri due QNAP della serie TS-x12: un più recente TS-212P e un TS-412 e con sorpresa ho riscontrato lo stesso identico problema in tutti e due i modelli.

Nell'ultimo anno ho aperto tre diversi ticket a QNAP per questo problema, e dopo settimane di scambi di e-mail contenenti log e diagnostica di vario tipo alla fine mi hanno sempre risposto che il problema è stato scalato a R&D e che mi aggiorneranno in caso di novità, ma questo non è mai avvenuto.

Gli innumerevoli test che ho fatto mi hanno portato a identificare l'esatto use case con il quale è possibile riprodurre il problema. Il problema si verifica solo se:

- Il NAS è con CPU ARM (e con qualsiasi versione del firmware);

- il router a cui è connesso è un TP-LINK;

- il client è un SO Windows (qualsiasi versione) con il protocollo NAT-T abilitato;

A queste condizioni una connessione L2TP inbound causa un kernel OOPS. Nell'analisi dell'OOPS emerge che il modulo del kernel coinvolto è il modulo mv_cesa, che si occupa di gestire la crittografia hardware sui kernel ARM.

Con qualsiasi altro client (iOS, Android, OSX) il problema non si verifica. Inoltre sembra non verificarsi nemmeno con i router Netgear e Asus o con un link diretto (cioè se la connessione L2TP avviene direttamente in LAN senza transitare per un NAT forward).

Qualcuno è in grado di riprodurre questo use case e verificare se riscontra lo stesso problema?

Grazie!
D