lunes, 17 de agosto de 2009

Tormenta eléctrica: aviso de rayo.

He estado una semana de vacaciones en el valle de Chistau alojado en el camping Los Vives, en el que me han tratado estupendamente. Una de las cosas que hemos hecho ha sido la ascensión a Monte Perdido, cometiendo el gravísimo error de empezar la subida muy tarde (10:00), arriesgándonos asi, sobretodo en estas fechas, a que el cielo caiga sobre nuestras cabezas.

El caso es que al llegar a la cima ya estaba nublado y fue en ese momento cuando oímos el primer trueno, la tormenta estaba en el valle de Pineta y nosotros habíamos subido desde el refugio de Goriz. Después de unas fotos y un par de truenos más nos dimos cuenta de que se nos erizaban los pelos de cabeza y brazos y de que al tocarnos saltaban las típicas descargas de electricidad estática (no era estática en este caso), decidimos bajar inmediatamente y fue entonces cuando al levantar un poco mas de lo normal la parte metálica del bastón, saltarón chispas de este. No había niebla (la nube no estaba ahí mismo), no llovía y probablemente estuvimos a punto de ser alcanzados por un rayo. Aqui os dejo una guía de como actuar en estos casos, pero lo mejor es siempre prevenirlo y no contar con las horas de la tarde para la ruta, sobretodo en verano.

domingo, 12 de agosto de 2007

Configuración de un teléfono Cisco 7911G con Asterisk y Voipbuster con protocolo SIP.

1. Actualizar firmware del teléfono.


Nuestro teléfono viene de fábrica con un firmware que no soporta el protocolo SIP, por lo que tendremos que actualizarlo. Para ello necesitaremos un servidor DHCP y uno TFTP.


Yo he usado “Vicomsoft DHCP server”, se puede descargar gratis dando tu mail (el verdadero, porque te envían una clave). Supongo que será versión de prueba y con el tiempo habrá que pagarlo, pero es fácil de usar y a mí me ha valido. Y como servidor TFTP he usado el de Solaris, muy facil de usar.

  1. Primero vamos a preparar el servidor TFTP. Descargamos el programa y lo configuramos para que se pueda, tanto enviar como recibir ficheros, o si lo prefieres solo enviar. También es útil activar el log por si hay problemas poder identificarlos.



  2. Descargamos el servidor DHCP y lo configuramos para que los clientes DHCP (en este caso nuestro teléfono) sepan en qué dirección IP está nuestro servidor TFTP.

    Para configurar otro servidor manualmente lo haríamos de la siguiente forma: option tftp-server-name “XXX.XXX.XXX.XXX”.

  3. Lo siguiente es descargar el nuevo firmware. Actualmente Cisco no te deja descargarlo ni siquiera siendo usuario registrado. Yo lo conseguí de esta ftp: http://ftp.itl.ua/pub/cisco/ip-7900ser/, el archivo con la versión más reciente de firmware para SIP es cmterm-7911_7906-sip.8-3-1.zip. Lo descargamos y descomprimimos los ficheros en el directorio root que asignemos en el servidor TFTP.

  4. Es hora de ponernos con nuestro “Cisco Phone 7911G”. Lo primero será conectarlo a la red donde se encuentre la máquina en la que esté rulando el servidor DHCP, en mi caso un PC normal y corriente con Windows XP. Tendremos en cuenta que si lo conectamos directamente a la tarjeta de red del pc, necesitaremos un cable de red cruzado. También tendremos que desconectar el router de nuestra red o desactivar su servidor DHCP, si conectamos el teléfono a ésta.

    Lo siguiente es enchufar la alimentación del teléfono al mismo tiempo que pulsamos la tecla “#” del mismo durante unos cinco segundos. Esto hará que el teléfono se ponga en modo de administrador. Sabrás si lo haces bien porque se encenderá la luz roja del auricular. Es entonces cuando marcaremos “123456789*0#” en el teclado del teléfono. Esto hará que se ponga en modo actualización de firmware. El teléfono se reiniciará, buscará un servidor DHCP que le dé una IP y le guíe hasta un servidor TFTP que le facilite los ficheros de actualización. En la pantalla se podrá ver cómo se actualiza. Si no encuentra servidor DHCP o TFTP o archivos de actualización sigue intentándolo un tiempo y luego se reinicia una y otra vez y seguirá en modo actualización. Una vez puesto en modo actualización, yo no sé cuál es el código para parar este proceso, ten cuidado de tener todo lo necesario para llevar a cabo la actualización antes de activar este modo.

    Los archivos que se descarga son:

    -term11.default.loads

    -Jar11sip.8-3-0-50.sbn

    -cnu11.8-3-0-50.sbn

    -apps11.8-3-0-50.sbn

    -dsp11.8-3-0-50.sbn

    -cvm11sip.8-3-0-50.sbn

    Si tienes algún problema siempre puedes mirar los log's de los servidores para intentar resolverlo o intentar conectarte al servidor web del teléfono para ver sus log's.

    Una vez actualizado se reinicia y sale de este modo. Como no le damos ningún archivo de configuración, nos aparecerá un mensaje que dice “unprovisioned”.


Configuración del teléfono.


Los teléfonos de Cisco al arrancar piden una serie de archivos de configuración via TFTP. Vamos a ver cómo crear estos archivos y como configurar el teléfono para que los descargue a través del servidor TFTP.


  1. Primero le daremos al teléfono una dirección IP, máscara de subred, TFTP server IP, Default Router IP y, si queremos, una o más DNS server IP. Así podremos tenerlo conectado a nuestra red y desactivar el servidor DHCP de nuestro pc.

    Para poder hacer cambios desde el teclado del teléfono tenemos que pulsar “**#” desde el menú de aplicaciones para desbloquearlo.

    Pulsando el botón de aplicaciones del teléfono, vamos a “Settings”, “Network Configuration” y “DHCP Enabled”, lo ponemos en “No”, así desactivamos el cliente DHCP del teléfono. Por lo tanto necesitamos darle una IP fija; en el mismo menú “Network Configuration” vamos a “IP Address” y le ponemos una IP dentro del rango de nuestra red. Hacemos lo mismo con el resto de opciones, importante poner en “TFTP server 1” la dirección IP del pc donde rule el servidor TFTP, y entonces le damos a “save” para salvar la configuración. Ya lo tenemos pidiendo ficheros de configuración a la TFTP.

  2. Los ficheros que pide se pueden ver en el log del servidor TFTP, son CTLSEPXXXXXXXXXXXX.tlv, SEPXXXXXXXXXXXX.cnf.xml y XMLDefault.cnf.xml, donde las “X” representan el número MAC del teléfono. Se puede mirar en el menú ”Network Configuration”.

    El fichero en que nos vamos a centrar es SEPX.cnf.xml, en el cual introduciremos los datos necesarios para sacar al teléfono del modo “unprovisioned” y hacer que se registre en nuestro servidor Asterisk. Tiene esta pinta:

<device>

<deviceProtocol>SIP</deviceProtocol>

<sshUserId>root</sshUserId>

<sshPassword>root</sshPassword>

<devicePool>

<dateTimeSetting>

<dateTemplate>D-M-YA</dateTemplate>

<timeZone>Eastern Standard/Daylight Time</timeZone>

<ntps>

<ntp>

<name>servidor NTP o dirección IP de Asterisk</name>

<ntpMode>Unicast</ntpMode>

</ntp>

</ntps>

</dateTimeSetting>


<callManagerGroup>

<members>

<member priority="0">

<callManager>


<ports>

<ethernetPhonePort>2000</ethernetPhonePort>

<sipPort>5060</sipPort>

<securedSipPort>5061</securedSipPort>

</ports>

<processNodeName>Dirección IP de Asterisk</processNodeName>

</callManager>

</member>

</members>

</callManagerGroup>

</devicePool>


<sipProfile>

<sipProxies>

<backupProxy></backupProxy>

<backupProxyPort></backupProxyPort>

<emergencyProxy></emergencyProxy>

<emergencyProxyPort></emergencyProxyPort>

<outboundProxy></outboundProxy>

<outboundProxyPort></outboundProxyPort>

<registerWithProxy>true</registerWithProxy>

</sipProxies>


<sipCallFeatures>

<cnfJoinEnabled>true</cnfJoinEnabled>

<callForwardURI>x--serviceuri-cfwdall</callForwardURI>

<callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>

<callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>

<callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>

<meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>

<abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>

<rfc2543Hold>false</rfc2543Hold>

<callHoldRingback>2</callHoldRingback>

<localCfwdEnable>true</localCfwdEnable>

<semiAttendedTransfer>true</semiAttendedTransfer>

<anonymousCallBlock>2</anonymousCallBlock>

<callerIdBlocking>2</callerIdBlocking>

<dndControl>0</dndControl>

<remoteCcEnable>true</remoteCcEnable>

</sipCallFeatures>

<sipStack>

<sipInviteRetx>6</sipInviteRetx>

<sipRetx>10</sipRetx>

<timerInviteExpires>180</timerInviteExpires>

<timerRegisterExpires>3600</timerRegisterExpires>

<timerRegisterDelta>5</timerRegisterDelta>

<timerKeepAliveExpires>120</timerKeepAliveExpires>

<timerSubscribeExpires>120</timerSubscribeExpires>

<timerSubscribeDelta>5</timerSubscribeDelta>

<timerT1>500</timerT1>

<timerT2>4000</timerT2>

<maxRedirects>70</maxRedirects>

<remotePartyID>false</remotePartyID>

<userInfo>None</userInfo>

</sipStack>

<autoAnswerTimer>1</autoAnswerTimer>

<autoAnswerAltBehavior>false</autoAnswerAltBehavior>

<autoAnswerOverride>true</autoAnswerOverride>

<transferOnhookEnabled>false</transferOnhookEnabled>

<enableVad>false</enableVad>

<preferredCodec>g729a</preferredCodec>

<dtmfAvtPayload>101</dtmfAvtPayload>

<dtmfDbLevel>3</dtmfDbLevel>

<dtmfOutofBand>avt</dtmfOutofBand>

<alwaysUsePrimeLine>false</alwaysUsePrimeLine>

<alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>

<kpml>3</kpml>

<natEnabled>1</natEnabled>

<natAddress></natAddress>

<phoneLabel>Frase que aparecerá en la parte superior derecha (sin espacios y carácteres limitados)</phoneLabel>

<stutterMsgWaiting>2</stutterMsgWaiting>

<callStats>false</callStats>

<silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>

<disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig>

<startMediaPort>16384</startMediaPort>

<stopMediaPort>32766</stopMediaPort>


<sipLines>

<line button="1">

<featureID>9</featureID>

<featureLabel>Voipbuster</featureLabel>

<proxy>Dirección IP de Asterisk</proxy>

<port>5060</port>

<name>nombre de usuario de cuenta SIP de Asterisk</name>

<displayName>Nombre que aparecerá en los dispositivos que conecten con éste</displayName>


<autoAnswer>

<autoAnswerEnabled>2</autoAnswerEnabled>

</autoAnswer>

<callWaiting>3</callWaiting>

<authName>nombre de usuario de cuenta SIP de Asterisk</authName>

<authPassword>contraseña de usuario cuenta SIP de Asterisk</authPassword>

<sharedLine>false</sharedLine>

<messageWaitingLampPolicy>3</messageWaitingLampPolicy>

<messagesNumber>nombre de usuario de cuenta SIP de Asterisk</messagesNumber>

<ringSettingIdle>4</ringSettingIdle>

<ringSettingActive>5</ringSettingActive>

<contact>nombre de usuario de cuenta SIP de Asterisk</contact>


<forwardCallInfoDisplay>

<callerName>true</callerName>

<callerNumber>false</callerNumber>

<redirectedNumber>false</redirectedNumber>

<dialedNumber>true</dialedNumber>

</forwardCallInfoDisplay>

</line>


<voipControlPort>5060</voipControlPort>

<dscpForAudio>184</dscpForAudio>

<ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>

<dialTemplate>dialplan.xml</dialTemplate>

</sipProfile>


<commonProfile>

<phonePassword></phonePassword>

<backgroundImageAccess>true</backgroundImageAccess>

<callLogBlfEnabled>2</callLogBlfEnabled>

</commonProfile>

<loadInformation></loadInformation>


<vendorConfig>

<disableSpeaker>false</disableSpeaker>

<disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>

<pcPort>0 para activarlo, 1 para desactivarlo</pcPort>

<settingsAccess>1</settingsAccess>

<garp>0</garp>

<voiceVlanAccess>0</voiceVlanAccess>

<videoCapability>0</videoCapability>

<autoSelectLineEnable>0</autoSelectLineEnable>

<webAccess>0 para activarlo, 1 para desactivarlo</webAccess>

<spanToPCPort>0</spanToPCPort>

<loggingDisplay>0</loggingDisplay>

<loadServer></loadServer>

</vendorConfig>


<versionStamp></versionStamp>

<networkLocale></networkLocale>

<networkLocaleInfo>

<name></name>

<version></version>

</networkLocaleInfo>

<deviceSecurityMode>1</deviceSecurityMode>

<authenticationURL>http://www/authenticate.php</authenticationURL>

<directoryURL>http://www/directory.xml</directoryURL>

<idleURL></idleURL>

<informationURL>http://www/GetTelecasterHelpText.jsp</informationURL>

<messagesURL></messagesURL>

<proxyServerURL>proxy:3128</proxyServerURL>

<servicesURL>http://www/services.xml</servicesURL>

<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>

<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>

<dscpForCm2Dvce>96</dscpForCm2Dvce>

<transportLayerProtocol>4</transportLayerProtocol>

<capfAuthMode>0</capfAuthMode>


<capfList>

<capf>

<phonePort>3804</phonePort>

</capf>

</capfList>

<certHash></certHash>

<encrConfig>false</encrConfig>

</device>


He puesto en rojo las líneas que hay que modificar.


Las líneas de ssh son para poder acceder al teléfono por esta vía.


El servidor NTP puede ser Asterisk o puede ser uno externo.


La dirección IP de Asterisk es por supuesto la dirección IP del equipo donde corre el servidor.


Donde pongo “nombre de usuario de cuenta SIP de Asterisk” hay que poner el mismo nombre de usuario que al crear las cuentas SIP en Asterisk, como veremos en el siguiente punto. Lo mismo con la contraseña.


Se puede activar o desactivar el acceso web y el puerto de PC.


El fichero dialplan.xml también lo tenemos que crear:


<DIALTEMPLATE>

<TEMPLATE MATCH="0........." TIMEOUT="1" User="Phone"/>

<TEMPLATE MATCH="0............." TIMEOUT="1" User="Phone"/>

</DIALTEMPLATE>


Esto nos va a servir para no tener que pulsar la tecla dial después de marcar un número. Es decir, cuando se marque un 0 seguido de 9 ó 13 números más, y pase un segundo, se le pasa a Asterisk automáticamente ese número.


Para el manejo de estos archivos en lenguaje XML se pueden usar editores xml, yo he usado el Open XML Editor 1.4.


Configuración de Asterisk.


En el directorio etc de Asterisk tenemos los archivos sip.conf y extensions.conf, que será en los que hagamos las modificaciones oportunas.


  1. En sip.conf será donde creemos las cuentas SIP. Este fichero debe ser algo asi:


srvlookup = yes

maxexpirey=180

defaultexpirey=160


register => voipbuster_username:voipbuster_password@sip1.voipbuster.com ;no es necesario


[authentication]

[3000];usuario cuenta SIP

type = friend

context = default

username = 3000

secret=contraseña cuenta SIP

host = dynamic

mailbox = 3000

dtmfmode = rfc2833


[3001];usuario cuenta SIP

type = friend

context = default

username = 3001

secret=contraseña cuenta SIP

host = dynamic

mailbox = 3001

dtmfmode = rfc2833


[3002];usuario cuenta SIP

type = friend

username = 3002

secret = contraseña cuenta SIP

context = default

host = dynamic

mailbox = 3002

dtmfmode = rfc2833



;Configure the incoming calls connection

[sip_proxy-in];Para un número voip-in

type=user

username=usuario voipbuster

secret=contraseña cuenta SIP

host=sip1.voipbuster.com

realm=sip1.voipbuster.com

fromuser=usuario voipbuster

fromdomain=sip1.voipbuster.com

context=incoming

canreinvite=no

insecure=very

qualify=no

nat=no

dtmfmode=inband

disallow=all

allow=alaw

allow=ulaw

call-limit=5



;Configure the outgoing calls connection

[sip_proxy-out]

type=peer

secret=contraseña cuenta SIP

username=usuario voipbuster

fromuser=usuario voipbuster

fromdomain=sip1.voipbuster.com

host=sip1.voipbuster.com

realm=sip1.voipbuster.com

call-limit=5

dtmfmode=inband

context=default

insecure=very

qualify=no

nat=no

canreinvite=no

disallow=all

allow=alaw

allow=ulaw



  1. Al fichero extensions.conf deberemos añadirle lo siguiente:


[internal]

exten => 3000,1,Dial(${ip3000},30,Ttm)

exten => 3000,2,Voicemail(u3000)

exten => 3000,3,Hangup

exten => 3000,102,Voicemail(b3000)

exten => 3000,103,Hangup

exten => 3001,1,Dial(${ip3001},30,Ttm)

exten => 3001,2,Voicemail(u3001)

exten => 3001,3,Hangup

exten => 3001,102,Voicemail(b3001)

exten => 3001,103,Hangup

exten => 3002,1,Dial(${ip3002},30,Ttm)

exten => 3002,2,Voicemail(u3002)

exten => 3002,3,Hangup

exten => 3002,102,Voicemail(b3002)

exten => 3002,103,Hangup

exten => 3003,1,Dial(${ip3003},30,Ttm)

exten => 3003,2,Voicemail(u3003)

exten => 3003,3,Hangup

exten => 3003,102,Voicemail(b3003)

exten => 3003,103,Hangup


La sección “internal” será para configurar el dialplan de nuestra red, es decir, si tenemos varios teléfonos, en este caso tres, marcando la extensión podremos hablar con cada uno de ellos.


[outgoing]

exten => _0XXXXXXXXX,1,Dial,SIP/sip_proxy-out/0034${EXTEN:1}

exten => _0XXXXXXXXX,2,Congestion


exten => _0XXXXXXXXXXXXX,1,Dial,SIP/sip_proxy-out/${EXTEN:1}

exten => _0XXXXXXXXXXXXX,2,Congestion


En esta última sección configuramos las llamadas salientes, al marcar un 0 seguido de 9 dígitos más, se hará una llamada nacional al número de 9 dígitos, es asterisk el que pone el prefijo 0034. Y al marcar un 0 seguido de 13 digitos la llamada será internacional. Aquí se pueden añadir las entradas que se quiera, según nuestras conveniencias.



Comandos útiles en la consola de Asterisk:


  • reload: reinicia el servidor.

  • sip show peers: muestra los usuarios registrados y sus IP's.



Para información más detallada visitar http://www.voipinfo.org/ de donde he conseguido casi toda la información.