Posts Tagged snom

Fritzbox, OpenVPN, Snom e N800

Premessa: ho recentemente acquistato un FritzBox 7170, di cui sono altamente soddisfatto. In questi giorni ho voluto provare a registrarci uno Snom 370 da remoto, via VPN. Questo è il resoconto, ancora “in fieri” di quello che ho scoperto, percui questo post verrà aggiornato spesso.

Installare openvpn sul fritzbox

Sul fritz, per installarci un server openvpn, ho dovuto usare freetz, in quanto i servizi di VPN offerti dal firmware originale non sono compatibili con openvpn. E`vero che esiste ike, con il quale è possibile collegarsi al VPN server messo a disposizione dal fritz, ma non era questo lo scopo del mio esperimento: io volevo poter registrare un telefono VoIP con normale supporto per OpenVPN, come lo SNOM 370.

Compilato freetz, al quale praticamente ho aggiunto solo openvpn e dropbear, l’ho installato normalmente. Per scaricare, compilare e installare il firmware freetz ci sono molti documenti in rete, percui fate riferimento a questi; tra l’altro si tratta di una operazione molto semplice (hint: iniziate aggiungendo poco niente con il freetz e togliendo niente dal menuconfig, vedrete che tutto sarà molto più semplice).

Dall’interfaccia web del freetz, che dovrebbe essere disponibile appena installato all’indirizzo http://fritz.box:81 potete avviare il servizio di openvpn e/o configurarlo. Nel mio caso ho scelto di far andare openvpn con i certificati, percui ho scelto questa opzione in “Security”. Il resto è standard, protocollo udp, porta 1194, e personalmente ho tolto LZO inizialmente: meno cose ci sono più facile sarà che funzioni.

L’unica parte da stare un po’ attenti è “VPN IP-Addresses and VPN Routing”. “Local ip” e “remote ip” sono semplicemente l’ip del fritz e del client vpn nel loro collegamento punto-punto (es. 10.0.0.1 e 10.0.0.2). Nella mia idea, bastava questo per far vedere i due (server e client), ma non è stato così.

Ho provato quindi a crearmi un file di configurazione “a mano” e utilizzare questo per il collegamento. Il mio file di configurazione sul server, per riferimento, è questo:

#  OpenVPN 2.1 Config, Sat Jan  1 01:00:49 CET 2000
port 1194
proto udp
dev tun
ca /tmp/flash/ca.crt
cert /tmp/flash/box.crt
key /tmp/flash/box.key
dh /tmp/flash/dh.pem
server 10.0.0.0 255.255.255.0
# ifconfig-pool-persist /tmp/flash/ipp.txt
client-to-client
keepalive 10 120
persist-key
persist-tun
status /var/tmp/openvpn_status
#ifconfig 192.168.200.1 192.168.200.2
#push "route 192.168.178.0 255.255.255.0"
#tun-mtu 1500
#mssfix
log /var/tmp/debug_openvpn.out
verb 6
#cipher BF-CBC
keepalive 10 120

Può essere pure salvato in un file in /tmp/ del fritz e openvpn può essere lanciata con il semplice comando: “openvpn nomefile”

Tornando però all’interfaccia freetz, per far funzionare correttamente il routing ho aggiunto degli ip nel dhcp-range, ip che quindi verrà assegnato al client (es. 10.0.0.10 10.0.0.20). Poi per permettere ai due di vedersi serve aggiungere una remote net tipo: “10.0.0.0 255.255.255.0″, che aggiunge sul server un route per la 10.0.0.0/24 sul gateway 10.0.0.2 (quello della VPN), permettendo cosi` al server 10.0.0.1 di vedere i client 10.0.0.10 (fino al 10.0.0.20 del dhcp-range).

Il file di configurazione prodotto dall’interfaccia web del fritz che ottengo è questo:

#  OpenVPN 2.1 Config, Thu Dec  9 16:04:22 CET 2010
proto udp
dev tun
ca /tmp/flash/ca.crt
cert /tmp/flash/box.crt
key /tmp/flash/box.key
dh /tmp/flash/dh.pem
tls-server
port 1194
push "dhcp-option DNS 10.0.0.1"
push "redirect-gateway"
mode server
ifconfig-pool 10.0.0.10 10.0.0.20
push "route 10.0.0.1 "
ifconfig 10.0.0.1 10.0.0.2
route 10.0.0.0 255.255.255.0
tun-mtu 1500
mssfix
log /var/tmp/debug_openvpn.out
verb 5
daemon
cipher BF-CBC
float
keepalive 10 120
status /var/log/openvpn.log

I settings OpenVPN

Nei settings, prima di far partire openvpn, bisogna fornire i certificati.

Nel “Box Cert” va copia e incollato il cosidetto “server.crt”, nella “Private Key” il contenuto di “server.key”, nel “CA Cert”
quello del file “ca.crt” e nel “DH params” il contenuto del file “dh1024.pem”.

A questo punto, salvato il tutto, è possibile far partire il server. Se non ci sono stati errori, partirà senza problemi, altrimenti
fate riferimento al file /var/tmp/debug_openvpn.out del fritz per capire cosa è andato storto.

Aprire la porta 1194 del fritz

Prima che sia possibile stabilire una connessione openvpn con il fritz, bisogna evitare che il firewall del fritz blocchi quella porta. Entrando in ssh sul fritz, con il comando:

nvi /var/flash/ar7.cfg

si può modificare direttamente le regole di firewall che riguardano il fritz stesso, cosa che l’interfaccia grafica non permette di fare (dando errori tipo “conflitto con regole interne”). Cercate “forwardrules” e aggiungete una riga tipo:

"udp 0.0.0.0:1194 0.0.0.0:1194 0 # OpenVPN Server",

Uscite salvando e confermando le modifiche al file. Eseguite poi il comando:

ar7cfgchanged

e attendete che le modifiche vengano applicate. Dopodiché il fritz è pronto per ricevere connessioni openvpn.

Registrare uno Snom sul FritzBox via VPN

Sullo Snom 370 va innanzitutto installato un firmware con il supporto VPN. Fate riferimento al sito wiki di Snom per maggiori informazioni su come fare.

Installato il nuovo firmware, in Advanced -> QoS/Security avrete la possibilità di attivare la VPN, e passare allo Snom un tar con dentro i file di configurazione e i certificati per la VPN. Consiglio caldamente di attivare anche un netcat server, perché solo tramite questo potete vedere i messaggi del client VPN e capire se qualcosa è andato storto.

Personalmente ho fatto puntare il netcat server sulla porta 5000 del mio ip dyndns, che è il fritzbox e su questo ho attivato un port forwarding della porta 5000 verso la 5000 del mio pc Linux, sul quale è stato sufficiente dare il comando “nc -l 5000″ per ricevere i messaggi inviati dal client VPN dello Snom.

A questo punto, ho potuto anche registrare uno Snom 370 sul fritz.box via VPN. Il Registar è “fritz.box” e l’outbond proxy, l’ip del tunnel VPN del fritz, nel mio caso 10.0.0.1.

Altra storia: Nokia n800 via openVPN sul fritz

Ho poi voluto provare a registrare via OpenVPN, anche il mio vecchio n800 usando il suo SIP client interno, disponibile con OS2008 e funziona!

Ho avuto diversi problemi: il primo e più noioso è che l’n800, come l’n810 e a quanto pare l’n900 non sono in grado di comunicare al client sip la presenza del nuovo device tun0 quando si apre una connessione openvpn; il risultato è che la registrazione il client sip continua a cercare di farla via wlan e non via openvpn, fallendo miseramente. E` il famoso baco “1860″ del maemo. Per il momento vi dico che cercando su internet, troverete come scrivere due script per openvpn che sono in grado di comunicare al sip client di usare il device giusto.

Il secondo problema è che registrandomi sul 10.0.0.1, l’ip della VPN sul fritz, le telefonate funzionano: mi registro, faccio le chiamate, sento benissimo il mio interlocutore ma lui non sente me. Suppongo qualche blocco RTP audio dovuto al firewall del fritz, ma non ne sono venuto a capo. Ho risolto questo secondo problema, dicendo all’OpenVPN server di mandare un instradamento al client per la rete 192.168.178.x (quella del fritz standard), in modo che questi potesse vedere direttamente l’ip “interno” del fritz, 192.168.178.1; messo questo come registrar, tutto ha funzionato anche sul nokia n800 via openvpn.

, , ,

No Comments