10/set/2014

Il mio vecchio nominativo

Facendo il trasloco ho ritrovato la mia vecchia patente da radioamatore scaduta diciamo da "qualche" anno. :-)

Grazie al prezioso aiuto del mio caro amico Lele (IK2RGT) nientepopodimeno che il vice presidente della sezione A.R.I. di Busto Arsizio il mio nominativo è tornato ad essere ufficiale!

Ora resta da decidere come implementare la nuova stazione HAM RADIO partendo naturalmente dall'antenna. Grazie Lele!

IW2GUY

23/giu/2014

Exchange 2013: Migrazione connettori

Nel caso stiate migrando da Exchange 2010 ad Exchange 2013 e siete alla ricerca di un metodo veloce per migrare i connettori potete seguire questo post e come sempre usare PowerShell.

Per prima cosa apriamo PowerShell ISE e mettiamoci nella condizione di poter operare anche con i cmdlet di EMS passando questo semplice script:

Naturalmente andiamo a sostituire "your_server_fqdn_name" con il nome del nostro server Exchage 2013 ed eseguiamo lo script. Al termine andiamo su Add-ons e clicchiamo su "Connect to Exchange"


E' il momento di impartire a PowerShell la funzione che utilizzeremo per migrare i connettori. Ricordatevi di sostituire i nomi dei vostri server.
Eseguite la funzione "TransferReceiveConnectors" ed il gioco è fatto.
NB: Verranno restituiti alcuni errori che riguardano i connettori built-in, andate avanti senza preoccuparvene.

24/gen/2014

Windows Server Backup: Inviare un report via email

Windows Server Backup con le release più recenti è in grado di eseguire il backup di un intero server (tutti i volumi), volumi selezionati, la stato del sistema (system state), cartelle o file specifici, creare una copia di backup che è possibile utilizzare per il ripristino bare metal.
È possibile ripristinare lo stato del sistema, alcune applicazioni, file, cartelle e volumi e addirittura virtual machine. In caso di disastro come ad esempio un guasto ai dischi rigidi è possibile eseguire un ripristino bare metal. Inoltre è possibile utilizzare Windows Server Backup per creare e gestire i backup per il computer locale o un computer remoto.
Sicuramente una feature molto utile e completa, peccato manchi un rapporto del backup ed il relativo invio via e-mail  come siamo abituati ad avere sui software di terze parti.
Al fine di far fronte a questa lacuna e dato che nelle piccole PMI molto probabilmente non andremo ad acquistare un complesso e costoso software di backup, ho cercato di progettare un report html sfruttando il Framework, PowerShell, Linq, XDocument e xml. Tutto in unico script PowerShell.

Fig1: report html inviato via email
  


Lo script cattura una serie di eventi relativi alle operazioni di Windows Backup, legge lo stato del disco di destinazione (target) e ci informa sul numero delle versioni presenti sul supporto e se ci sono eventuali procedure in corso. Se il Backup dovesse fallire la riga nella tabella verrà colorata con uno sfondo rosso in modo da essere notata immediatamente. Lo stesso sfondo verrà applicato alla tabella del disco destinazione (target) nel caso in cui lo spazio disponibile scenda al di sotto del 10%. Una volta catturate le informazioni viene costruito un report html ed inviato via e-email ad uno o più destinatari.

Vediamo come poter personalizzare lo script partendo dall'oggetto dell'e-mail che viene inviata.

Per prima cosa inserite il nome del vostro cliente nella variabile $Customer. (Riga 14) L'oggetto dell'e-mail recapitata sarà simile a questo: ## Backup report from: HV1 - iQuad ##

Alla riga 19 la sezione dove viene specificato il path e il nome del file. In questo caso, dato che ho usato la variabile di sistema  $env:public il report html si troverà in "C:\Users\Public"

Alla riga 24 viene settata temporaneamente la localizzazione en-US. Questa operazione si rende necessaria soltanto su Windows Server 2012 a causa di un bug sul comando Get-Winevent. Non è necessario su Windows Server 2012 R2.

Alla riga 28 viene indicato il lasso di tempo in cui vengono letti gli eventi. Aumentando il valore aumentano il numero di giorni contati a ritroso rispetto alla data attuale. Potremmo ad esempio farci inviare il report una volta alla settimana intercettando tutti i Backup effettuati durante quel lasso di tempo.

Dalla riga 77 alla riga 140 si trova il codice HTML e il foglio di stile (CSS) tramite il quale è possibile personalizzare i caratteri, colori e larghezza delle tabelle.

Dalla riga 165 troviamo le variabili dedicate alla gestione e all'invio del report via email.

Non rimane che schedulare lo script all'orario più congeniale utilizzando "powershell WSB_report.ps1"


13/nov/2013

Rasperry PI: Una centrale telefonica VoIP

In questo articolo vedremo passo passo come sia possibile implementare una centrale VoIP utilizzando un “single-board computer”. Il Raspeberry Pi.
Indroduzione.
Anche se cercherò di spiegare le procedure passo passo ed in maniera molto semplice questo tutorial prevede che abbiate un minimo di familiarità con UNIX, SSH e su come modificare i file tramite la shell, sulle reti e una base sulla tecnologia VoIP e Asterisk ma soprattutto che abbiate voglia di imparare e sperimentare.
Raspberry: di cosa si tratta.
Il Raspberry Pi è un computer, basato su chipset  SoC Broadcom BCM 2835, dalle dimensioni di una carta di credito (misure che fanno del sistema uno dei più piccoli PC disponibili e a più basso costo al mondo) che si collega ad un monitor o un televisore e ad una tastiera.
Viene classificato come single-board computer (un calcolatore implementato su una sola scheda elettronica) sviluppato nel Regno Unito dalla Raspberry Pi Foundation. Attualmente, viene venduto in due versioni, al prezzo di 25 e 35 dollari statunitensi. 
Il SoC è un Broadcom BCM2835 che contiene un ARM1176JZFS a 700Mhz,  con virgola mobile e una GPU VideoCore IV. La GPU è in grado di riprodurre la qualità BluRay, utilizzando H.264 a 40MBits / s.  ed ha una veloce core 3D  (1Gpixel/s, 1.5Gtexel/s or 24 GFLOPs) che supporta OpenGL ES2.0 e le libraries OpenVG.
In pratica sarete in grado di eseguire, in scala ridotta,  gran parte delle operazioni riservate a desktop e server tradizionali.

Ecco le caratteristiche tecniche, direi di tutto rispetto.

Broadcom BCM 2835 chipset (ARM1176JZFS chip with a floating point co-processor, running at 700MHz
Videocore IV GPU, capable of BluRay quality playback, using H.264 at 40MBits/s Ships with OpenGL ES2.0 and OpenVG libraries)
HDMI out
Model B: 512MB of memory, two USB ports and a 10/100 BaseT Ethernet port
L’hardware. Per progettare la micro centrale VoIP avete bisogno di un Raspberry Pi Mod. B completo di case e alimentatore, di una memoria SD da almeno 8Gb, tastiera e mouse USB, un Monitor o TV con ingresso HDMI (oppure un adattatore HDMI-VGA) ma anche di un gateway e di un telefono VoIP. Un Cisco della serie SPA o un cordless Siemens Gigaset VoIP (A510IP) andranno benissimo. Dato che il dispositivo è orientato ad un utilizzo residenziale utilizzeremo come gateway un Cisco SPA3102 che, tramite la porta FXO, ci permetterà di attestarci direttamente alla linea analogica. In ogni caso potrete comunque configurare qualsiasi gateway VoIP FXO o ISDN. Nel caso in cui farete una sottoscrizione con un provider VoIP non avrete nemmeno bisogno di un gateway.
Nota: Non avrete a disposizione un Real Time Clock. L'aggiunta di un RTC è sorprendentemente costoso ed avrebbe influito molto sul target price che la fondazione si era prefissata. È comunque previsto un interfacciamento esterno utilizzando i pin GPIO.
sd1
Il Software Per prima cosa andremo a testare se il nostro dispositivo funziona correttamente installando un sistema operativo.  Formattate la vostra SD card tramite il tool scaricabile dal seguente link, avendo cura di settare l’opzione “FORMAT SIZE ADJUSTMENT” su ON 
https://www.sdcard.org/downloads/formatter_4/eula_windows/
Fig. 1


Ora scaricate il sistema operativo da questo link: http://www.raspberrypi.org/downloads. Nel nostro caso partiremo dal NOOBS da cui poi sceglieremo uno degli OS disponibili. Decomprimete lo zip direttamente nella root della SD Card.
Nota: Senza SD configurata correttamente il Raspberry non presenta nessun output video.
Siamo pronti per fare il primo boot.
Fig. 2
Fig2_NOOBS
Nello step successivo configurate la lingua per la tastiera e la password per l’utente “pi”. La password di default è “raspberry” 
Fig. 3 Fig3_raspi-config
Attestato il corretto funzionamento del device e della SD (l’installazione di Raspbian serve anche a questo, se va a buon fine la card funziona bene) è il momento di procurarci l’immagine di Asterisk for Raspberry Pi.
http://www.raspberry-asterisk.org/downloads/   in particolare la versione raspbx-19-01-2013.zip

Ora non ci resta che scrivere l’immagine sulla SD.
Inseriamo la scheda nel lettore di schede SD e verificando quale lettera di unità è stata assegnata e formattiamola con SDformatter. Scarichiamo il tool Win32DiskImager e scriviamo l’immagine [nomefile].img Fig. 4
Fig4_Win32DiskImager
Raspbx
Ora il Raspberry PI è pronto per eseguire Raspbx.
Nota: Se usate un monitor HDMI e non vedete alcun output premete il tasto 1 al boot.
L’IP viene assegnato dinamicamente, con tutta probabilità il vostro router ADSL assegnerà un IP. Da Windows potete connettervi al device tramite SSH o HTTP semplicemente digitando “raspbx”
La user e la password di default per SSH sono “root” “raspberry”, per l’interfaccia di amministrazione di FreePBX “admin” “admin”.
Per comodità useremo SSH e Putty (Putty.exe) ma è possibile utilizzare un monitor HDMI.
Ora tramite la console oppure in SSH digitate “raspi-config” e settate il layout della tastiera italiana, locale e timezone.
Fig.5
Fig5_ssh
Una volta settate le “Internationalization Options”, se la SD dovesse superare i 4Gb, potete procedere con l’espansione del Filesystem tramite la prima opzione “Expand Filesystem”
Ora potete aggiornare la distribuzione digitando il comando “raspbx-upgrade”.
Nel prossimo passaggio setterete un IP fisso per il micro (solo per dimensioni) pbx. Vi basterà editare il file “/etc/network/interfaces”.
Digitate “nano /etc/network/interfaces” e rimuovete la linea “iface eth0 inet dhcp”. Al suo posto inserite: 

  iface eth0 inet static
  address {ipaddress}
  netmask {netmask}
  gateway {gateway}
  dns-nameservers {dnsserver}
   (tipicamente l’ip del vostro router casalingo)
Salvate e digitate il comando “service networking restart

Primo accesso al PBX
Accedete tramite browser all’IP fisso oppure a “http://raspbx” utilizzando come utente e password “admin” “admin” e cliccando su “FreePBX Adminstration”.
Come prima cosa preparate 2 o tre interni per fare le vostre prove. Usate “Extensions” sotto “Applications”.
Fig. 6
Fig6_ext
Ad ogni modo potete comunque far riferimento alla documentazione ufficiale: http://wiki.freepbx.org/display/F2/Extensions
Ricordo inoltre che tra le innumerevoli funzionalità di un PBX c’è anche il Paging e l’inferfono (intercom) con cui potere chiamare una serie prestabilita di interni contemporaneamente sfruttando i telefoni come vivavoce. Il gruppo di telefoni risponderà automaticamente: http://wiki.freepbx.org/pages/viewpage.action?pageId=4161623. Molto comodo se abitate su 2 o più livelli.
Per fare i test potete utilizzare dei telefoni VoIP software come ad esempio X-lite fornito da CounterPath o 3CX PhoneClient fornito da 3CX (solo versione 6)

Nota: Se usate un cordless misto VoIP/Analogico, come ad esempio i Gigaset Siemens (nel mio caso A510IP), tenete presente che con gli ultimi firmware è possibile passare le chiamate ad un altro interno utilizzando il tasto R (flash hook) che in VoIP verrà configurato in refer sip method. Se volete usare il cordless come interfono disattivate la risposta automatica al sollevamento.
Le funzionalità di una centrale VoIP sono parecchie, per questa ragione ci occuperemo solamente delle principali. Fra le più utili la possibilità di ricevere via email eventuali messaggi vocali.
Passiamo dunque alla configurazione del server di posta al fine di poter inviare i messaggi email dal pbx.
Un server di posta elettronica funziona già nella configurazione di default usando exim4. Per impostazione predefinita Exim4 è configurato per inviare direttamente la posta elettronica agli host MX. Questo metodo però è sconsigliato in quanto quasi tutti i provider classificano le email provenienti da indirizzi IP dinamici come spam. Per evitare questo è necessario impostare uno smarthost (mail server in uscita).
Eseguite dalla console “dpkg-reconfigure exim4-config
Fig. 7
Fig7_mail
Selezionate “mail sent by smarthost” e inserite il nome FQDN del mail server. Come esempio utilizzeremo i  parametri di Gmail

Nota: Impostate come email di root e postmaster la mail associata al server smtp
Digitate in console “nano /etc/email-addresses” e aggiungete alla fine del file:
root: your_email@someisp.com
asterisk: your_email@someisp.com
Ora configurate le credenziali “nano /etc/exim4/passwd.client” aggiungendole alla fine del file attenendovi al formato SMTP_HOSTNAME:USERNAME:PASSWORD
Suggerisco di dare sempre un occhiata ai log “tail -f /var/log/exim4/mainlog” Attivate ora la configurazione con il comando “update-exim4.conf” e testatela con “send_test_email your_email@someisp.com
Alcune versioni di GnuTls soffrono di un problema di lunghezza dei pacchetti TLS “TLS packet with unexpected length was received”. Suggerisco di provare a configurare tutto prima sulla porta 25 facendo comunque riferimento a questo documento: https://wiki.debian.org/GmailAndExim4

Gateway PSTN/VoIP Cisco SPA3102 Ora passiamo alla configurazione del gateway che ci consentirà di attestarci alla linea telefonica analogica (PSTN) e di integrare con tutte le funzionalità che ci offre il nostro PBX.
Useremo l’SPA3102 senza NAT connesso direttamente alla LAN ma attestandoci alla porta “INTERNET” e collegando la linea PTSN su “LINE”.  (LinkSys SPA3102 support page.)

Se si dovesse rendere necessario resettare il device sui valori di fabbrica collegare un comune telefono alla porta “PHONE” e comporre “****” attendere la voce IVR e comporre “73738” seguito da “#” e premere “1” per confermare il reset. Aggiornate il firmware se necessario.
Come prima operazione collegate “temporaneamente” il device alla rete tramite la porta LAN e navigate su questo indirizzo http://192.168.0.1/admin/advanced.
Disattivate il DHCP server poi settate un IP fisso lato WAN avendo cura di selezionare “Enable WAN Server Web” sotto “Remote Management”.
Fig. 8
fig8_3102Scollegate il cavo di rete dalla porta “ETHERNET” e collegatelo alla porta “INTERNET”. Da ora in poi amministrerete il device dall’IP WAN (192.168.1.3).
Configurare syslog sul PBX Syslog è un modo pratico per eseguire il debug.
In caso di problemi potete settare nella pagina di configurazione “Voice” selezionate “System” e inserite l’ip del SYSLOG SERVER in “Syslog Server” e “Debug Server” impostando il livello di debug su 2 o superiore.
Esistono syslog server sia per Windows che per Linux. Per Debian seguite questo tutorial http://massivelydigital.com/setting-up-a-remote-rsyslog-server/.
Se invece volete un debug in tempo reale per Asterisk vi basterà digitare “asterisk –v”
Impostare la linea interno 1 In FreePBX, aggiungere un estensione di test Dall’interfaccia web di FreePBX impostate un interno “100” e settatene la password “line1pass@word1” poi applicate la configurazione.
Su SPA3102 sotto la scheda “VOICE” selezionare la sottoscheda “Line1” 1. Sotto “Proxy and Registration” impostate “Proxy” con l’ip del PBX , “Make Call Without Reg:” su YES e “Ans Call Without Reg:” su YES.
2. Sotto “Subscriber Information” inserite 100 (l’interno) come “User ID” e la relativa password.
3. Impostate il “Dial Plan” a “([* x] x.)”. Questo indirizzerà ogni numero che inizia con '*' o '0 '- '9' al PBX. Per maggiori informazioni sui dial plan si veda qui: http://www.cisco.com/en/US/products/ps10033/products_qanda_item09186a0080a35a44.shtml.
4. Applicate tutte le modifiche.
5. Sempre sotto la scheda “Voice”, selezionate la scheda “Regional”, e cancellare tutte le voci *XX sotto “Vertical Service Activation Codes”.
Verificate se l’interno 100 si è registrato correttamente dal seguente link: 
http://raspbx/admin/config.php?&type=tool&display=asteriskinfo&extdisplay=subscriptions

Configurare la linea PSTN
Il prossimo passo, la parte più difficile: configurare la porta FXO dell’SPA3102.
Configurare le chiamate in uscita 1. In FreePBX sella sezione “Connectivity” “Trunk” impostate il nuovo sip trunk: “Trunk Name” a “pstn” e settate “Maximum Channels” a 1.
2. Sotto “PEER Details” inserire quanto segue:
canreinvite=no
host=192.168.1.3  (l’ip dell’spa3102) 
nat=no
port=5061
user=pstn  
secret=pstnpass2013
type=friend
qualify=yes
dtmfmode=rfc2833

Su SPA3102 sotto la scheda “VOICE” selezionare la sottoscheda “PSTN Line”
1. Sotto “Proxy and Registration” impostate “Proxy” con l’ip del PBX , “Make Call Without Reg:” su YES e “Ans Call Without Reg:” su YES.
2. Sotto “Subscriber Information” inserite “pstn” come “User ID” e la relativa password “
pstnpass2013”.
Ricordate anche di abbassare “PSTN Answer Delay:” a 2 altrimenti gli interni cominceranno a squillare dopo molti secondi. 
Verificate su FreePBX che il PEER sia registrato:
http://raspbx/admin/config.php?&type=tool&display=asteriskinfo&extdisplay=peers
3. Tornate a FreePBX e impostate una nuova rotta di uscita. Sotto “Connectivity” poi “Outbound Routes” 
    Impostate il nome della rotta e il “Dial Patterns” tramite il Wizard (la 7/10)
4. Ora impostate “Trunk Sequence” come SIP/pstnPSTN, “Answer Delay:”  0
5. Applicare tutte le modifiche.
A questo punto potete provare a fare una chiamata all’esterno tramite un interno software oppure un telefono VoIP. Se tutto è stato impostato correttamente sarete in grado di chiamare cellulari e numeri fissi senza problemi.

Configurare le chiamate in arrivo Su SPA3102 sotto la scheda “VOICE” selezionare la sottoscheda “PSTN Line” 1. Scorrete fino alla sezione “PSTN-To-VoIP Gateway Setup”, impostate “PSTN Ring Thru Line 1” a “No” poi impostate “PSTN Caller Default DP” a “2”.
2. Scorrete in alto fino “Dial Plans” e impostate il “Dial Plan 2” a “S0(<:XXXXXXXXXX>)”  in cui XXX è il vostro numero di telefono.
3. Su FreePBX sotto “Applications” selezionate “Ring Groups” ed aggiungete tutti gli interni che volete far squillare all’arrivo di una chiamata esterna. Scorrete fino a “Set Destination” e impostate gli interni sotto “Extension List” infine settate “Destination if no answer:”. Potete decidere se terminare la chiamata in caso di mancata risposta oppure eseguire un IVR che a sua volta vi inoltrerà il messaggio vocale via email. 4. Di nuovo su FreePBX aggiungete una rotta in entrata. Sotto “Connectivity” poi “Inbound Routes” 
Il nome potrebbe essere “PSTN” mentre il “DID Number” dovrebbe essere lo stesso del “Dial Plan 2” (il vostro numero)
Sotto “Set Destination” selezionate “Ring Groups” poi selezionate quello appena creato.

Ora siete pronti per testare le chiamate in ingresso.

Altre configurazioni
Ricordate di settare i toni per l’italia per l’SPA3102

[REGIONAL]
DIAL TONE:425@-12;10(.6/1/1,.2/.2/1) -e il mitico TU TU-
OUTSIDE DIAL TONE:425@-12;10(.6/1/1,.2/.2/1)
BUSY TONE:425@-20;10(.5/.5/1) -tono di occupato-
REORDER TONE: 425@-12;10(.25/.25/1) ->suono che viene prodotto quando va in timeout la digitazione di un numero da chiamare
OFF HOOK WARNING TONE: 425@-12;10(.25/.25/1) ->tono riprodotto quando si ripone male la cornetta (l'ho cambiato e messo uguale a prima perche questo suono viene sempre riprodotto quando il sipura finisce di riprodurre il reorder tone)
RING BACK TONE: 425@-20;*(1/4)
RING1 CADENCE: 90(1/4) -cadenza del trillo-
CWT1 CADENCE:60(.1/3) ->cadenza dell'avviso di chiamata
Ring Waveform:sinusoid
Ring Voltage:70
Ring Frequency:25
CWT Frequency:425@-10
Hook Flash Timer Min: .06
Hook Flash Timer Max: .2
REORDER DELAY: 0 ->numero secondi dopo il quale viene eseguito il reorder dalay tone quando l'altra parte ha riagganciatol

File Audio in italiano Ecco i prompt vocali in italiano:
http://downloads.asterisk.org/pub/telephony/sounds/releases/asterisk-core-sounds-it-alaw-1.4.25.tar.gz
http://www.freepbx.org/forum/general-help/change-audio-language
Cancellazione Eco Se avete qualche problema di eco seguite questo post:
http://blog.liberailvoip.it/2008/02/19/sipura-linksys-eliminiamo-leco-definitivamente/

Conclusioni Abbiamo creato un PBX casalingo di classe enterprise spendendo quanto mangiare una pizza in due. Non mi sembra cosa da poco. Inoltre FreePBX offre una serie di funzionalità davvero interessanti. Vi suggerisco di dare un occhiata alla documentazione ufficiale.

18/ott/2013

Zyxel Zywall USG 20: Vpn site to site troppo lenta

In una VPN IPsec tra 2 Zywall USG 20 configurata correttamente e connessa si verifica una lentezza tale da compromettere le connessioni nonostante si riescano a pingare gli IP delle sedi remote, inoltre non è possibile connettersi al firewall remoto tramite VPN.  Le connessioni WAN to LAN invece funzionano correttamente.

Il problema di verifica sia con il firmware 3.00 che con il più recente 3.30.

Soluzione:

1) Nelle impostazioni wan1, premendo Show Advanced Settings  impostare la voce MTU a 1404
2) Creare una regola firewall From WAN to ZyWALL > Service: DNS Group > Deny

Rif.: ftp://ftp.zyxel.it/guide/usg/guide_usg_firmware_2.20-3.00/usg_vpn_ipsec_usg.pdf