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.

Aggiornamento: L'SPA 3102 soffre di un fastidioso problema di Eco. Recuperatevi un Grandstream HT503 e avrete risolto il problema. Qui trovate la configurazione:
http://andreagx.blogspot.it/2015/03/freepbx-e-grandstream-ht503.html

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

24 apr 2013

Patton 4120: Configurazione con FreePBX

Dato che abbiamo impiegato diverso tempo a configurarlo per bene, posto la nostra configurazione funzionante.

Nel nostro caso il Patton risponde su uno solo dei due numeri a nostra disposizione (evidenziato in giallo)

Se volete che risponda su tutte le linee in ingresso sostituite il numero con T2

#----------------------------------------------------------------#
# #
# SN4120/1BIS2V #
# R6.3 2013-03-07 H323 SIP #
# 1970-01-02T18:44:50 #
#----------------------------------------------------------------#

cli version 3.20
clock local default-offset +00:00
webserver port 80 language en
sntp-client
sntp-client server primary pool.ntp.org port 123 version 4

system

ic voice 0
low-bitrate-codec g729

system
clock-source 1 bri 0 0

profile ppp default

profile call-progress-tone defaultDialtone
play 1 1000 425 -6

profile call-progress-tone defaultAlertingtone
play 1 1000 425 -13
pause 2 4000

profile call-progress-tone defaultBusytone
play 1 300 425 -7
pause 2 200

profile call-progress-tone defaultReleasetone
play 1 300 425 -7
pause 2 400

profile call-progress-tone defaultCongestiontone
play 1 300 425 -7
pause 2 400

profile tone-set default

profile voip default
codec 1 g711alaw64k rx-length 20 tx-length 20
codec 2 g711ulaw64k rx-length 20 tx-length 20
codec 3 g729 rx-length 20 tx-length 20
fax transmission 1 relay t38-udp

profile pstn default

profile sip default
no autonomous-transitioning

profile aaa default
method 1 local
method 2 none

context ip router

interface IF_IP_LAN
ipaddress 10.0.0.150 255.255.255.0
tcp adjust-mss rx mtu
tcp adjust-mss tx mtu

context cs switch
national-prefix 0
international-prefix 00

routing-table called-e164 RT_ISDN_TO_SIP_0
route 0331XXXXXX dest-interface IF_SIP_0 MAPPING_INCOMING_CALLS

routing-table called-e164 RT_SIP_TO_ISDN_0
route default dest-interface IF_ISDN_0 CLIP_DISABLED

mapping-table calling-pi to calling-e164 MAP_REMOVE_BLANK_CALLERID
map restricted to ""

mapping-table calling-e164 to calling-e164 MAP_LEADING_ZERO
map (.%)-(.%)-(.%)-(.%)-(.%) to \1\2\3\4\5
map (.%)-(.%)-(.%)-(.%) to \1\2\3\4
map (.%)-(.%)-(.%) to \1\2\3
map (.%)-(.%) to \1\2

mapping-table calling-e164 to calling-name MAP_CID_TO_CNAME
map (.%) to \1

mapping-table calling-e164 to calling-e164 CALLINGE164
map 0(.%) to \1

mapping-table calling-type-of-number to calling-type-of-number CALLINGNUMBERTYPE
map default to national

mapping-table calling-numbering-plan to calling-numbering-plan CALLINGNUMBERPLAN
map default to isdn-telephony

mapping-table calling-uri to calling-pi CALLINGPIRESTRICTED
map sip:anonymous@.% to restricted

complex-function MAPPING_INCOMING_CALLS
execute 1 MAP_REMOVE_BLANK_CALLERID
execute 2 MAP_LEADING_ZERO

complex-function CLIP_ENABLED
execute 1 CALLINGNUMBERPLAN
execute 2 CALLINGE164
execute 3 CALLINGNUMBERTYPE
execute 4 CALLINGPIRESTRICTED

complex-function CLIP_DISABLED
execute 1 CALLINGPIRESTRICTED

interface isdn IF_ISDN_0
route call dest-table RT_ISDN_TO_SIP_0
call-hold disable
caller-name
user-side-ringback-tone

interface sip IF_SIP_0
bind context sip-gateway GW_SIP_0
route call dest-table RT_SIP_TO_ISDN_0
remote 10.0.0.43 5060
early-connect
early-disconnect
address-translation outgoing-call request-uri user-part fix 10000 host-part to-header target-param none
trust remote

context cs switch
no shutdown

authentication-service AS_ALL_LINES
realm 1 3CXPhoneSystem
username 10000 password Z7wh1f7Ii0qJzcJxEhGKUw== encrypted

location-service LS_10000
domain 1 10.0.0.43

identity-group default

authentication outbound
authenticate 1 authentication-service AS_ALL_LINES username 10000

identity 10000

authentication outbound
authenticate 1 authentication-service AS_ALL_LINES

registration outbound
registrar 10.0.0.43 5060
lifetime 300
register auto

context sip-gateway GW_SIP_0

interface LAN
bind interface IF_IP_LAN context router port 5060

context sip-gateway GW_SIP_0
bind location-service LS_10000
no shutdown

port ethernet 0 0
medium 10 half
encapsulation ip
bind interface IF_IP_LAN router
no shutdown

port bri 0 0
clock auto
encapsulation q921

q921
protocol pp
uni-side auto
encapsulation q931

q931
protocol dss1
uni-side user
bchan-number-order ascending
encapsulation cc-isdn
bind interface IF_ISDN_0 switch

port bri 0 0
no shutdown


Ecco il TRUNK lato FreePBX


allow=g729

qualify=yes


type=friend


port=5060


username=10000


fromuser=10000


secret=2hbzl36


host=dynamic


defaultip=10.0.0.150


context=from-pstn

21 mar 2013

Il caso di Userenv, Event ID:1054 e il ping con valore negativo

Di recente mi sono imbattuto in un caso piuttosto strano nonostante lo scenario fosse relativamente semplice.  Un piccolo cliente dislocato su due sedi e servito da una VPN tra firewall, due siti AD (DC W2003) ed un server Exchange per sito.  Per esigenze particolari si è reso necessario virtualizzare un DC anche se vi ricordo che non è una procedura supportata e che in linea di massima non è una buona idea, sicuramente la via meno problematica e supportata è quella di estendere AD nella VM e successivamente fare l’abbassamento di livello del DC fisico.

Starete tutti pensando “ti sta bene, non si virtualizzano i DC” e invece il problema in oggetto non dipende dalla conversione P2V in sé…

DCDIAG non presenta anomalie, NETDIAG è assolutamente OK le repliche tra i siti funzionano correttamente mentre sul DC “virtualizzato” con cadenza regolare si presenta l’errore seguente:

Event Type: Error
Event Source: Userenv
Event Category: None
Event ID: 1054
Date:  18/03/2013
Time:  17.19.02
User:  NT AUTHORITY\SYSTEM
Computer: SERVER2
Description:
Windows cannot obtain the domain controller name for your computer network. (An unexpected network error occurred. ). Group Policy processing aborted.

Dopo ulteriori ricerche decido di applicare la KB 326152 naturalmente senza successo. Verifico NetBIOS, DNS tutto Ok. Accedo anche a \\mydomain.com\sysvol\mydomain.local.

Di nuovo sembrano non esserci problemi particolari nonostante l’errore 1054. Questa volta provo ad attivare il debug dell’ambiente utente nella speranza di trovare qualche indizio nel log. ( KB 221833 ). Purtroppo %Systemroot%\Debug\UserMode\Userenv.log mi indica soltanto che le policy vengono applicate. Niente di fatto,

Anche il comando “setlogon server” restituisce correttamente il nome del DC, dato che ho il prompt dei comandi sotto mano provo un ping sul nome  di dominio e noto una risposta di –1994ms. MENO? Si avete letto bene, un tempo negativo.

Pinging domain.local [192.168.1.10] with 32 bytes of data:

Reply from 192.168.1.10: bytes=32 time=-1994ms TTL=128
Reply from 192.168.1.10: bytes=32 time=-1994ms TTL=128
Reply from 192.168.1.10: bytes=32 time=-1994ms TTL=128
Reply from 192.168.1.10: bytes=32 time=-1994ms TTL=128

Ping statistics for 192.168.1.10:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = -1994ms, Maximum = -1994ms, Average = 1073739830ms

Mi rimetto nelle mani di Google per ulteriori ricerche ma trovo solo alcuni articoli che trattano un problema simile, passo oltre dato che sembra riguardare solo le CPU AMD Opteron.

Ripenso ai passaggi fatti e mi ricordo di aver aggiunto un processore alla mia VM giusto prima del power on, la macchina fisica aveva un solo processore.  Cerco di approfondire le problematiche VM e multiprocessore ed apprendo che la funzione Win32 QueryPerformanceCounter per impostazione predefinita utilizza un’unità di tempo chiamata TSC che essenzialmente conta i cicli di CPU. A quanto pare la lettura del valore TSC può essere diversa per ogni CPU “virtuale”, questo spiegherebbe la negatività temporale (virtuale naturalmente).

Il colpevole sembrerebbe proprio la time source di default.

Il caso si è risolto indicando a “QueryPerformanceCounter” che da dovrà basarsi su PM timer che è una fonte tempo globale, anziché su TSC.
Come? semplicemente aggiungendo il flag /usepmtimer al file boot.ini

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Standard" /noexecute=optout /fastdetect /usepmtimer

8 mar 2013

Microsoft Office Configuration Analyzer Tool

The Microsoft Office Configuration Analyzer Tool (OffCAT) is a program that provides a detailed report of your installed Office programs. This report includes many parameters about your Office program configuration and highlights known problems found when OffCAT scans your computer. For any problems that are listed in the report, you are provided with a link to a public-facing article (usually a Microsoft Knowledge Base article) on the issue so you can read about possible fixes for the problem. If you are a Help Desk professional, you can also save the report to file so that the report can be viewed in the Office Configuration Analyzer Tool on another client where the tool is installed. The Office Configuration Analyzer Tool 1.0 also includes a command-line version that can be used to collect an OffCAT scan without user intervention.

Download

17 feb 2013

Hyper-V IT Camp: 14 Marzo 2013 @ Microsoft Innovation Campus

banner

Hyper-V IT Camp è l'evento gratuito organizzato da Microsoft Italia, in collaborazione con la community WindowServer.it.
Un'intera giornata dove verranno presentate ed analizzate le tematiche più importanti relative al mondo della virtualizzazione server, basate su Windows Server 2012 e su Hyper-V Server 2012. Sul palco si alterneranno speaker di altissima qualità tecnica ed alcuni di loro sono riconosciuti come Microsoft Most Valuable Professional.
L'evento si terrà il giorno 14 Marzo 2013, presso l'Innovation Campus di Microsoft Italia a Milano, ed è aperto a tutti coloro che intendono addentrarsi nel mondo della virtualizzazione.

Iscriviti Subito!