martes, 24 de enero de 2017

Asterisk y CLI: I

He estado jugando un poco con mi Asterisk. Y me puse a buscar cómo hacer algunas cosas como, por ejemplo, marcar un número desde la consola (lo que en ocasiones se le llama CLI). Para acceder a la consola, en mi caso, tengo que ser root y ejecutar:

# asterisk -r

Aunque el prompt es

nombreSistema*CLI>

no lo voy a poner en el post.

Uno de los comandos que me encontré era

console list devices.

Y me llamó la atención que me mostró unos datos que no había visto nunca:

 === Configured Devices ======================================
 =============================================================
 ===
 === ---------------------------------------------------------
 === Device Name: default
 === ---> Active:           Yes
 === ---> Input Device:     default
 === ---> Output Device:    default
 === ---> Context:          default
 === ---> Extension:        s
 === ---> CallerID Num:     extensiónRara
 === ---> CallerID Name:    nombreRaro
 === ---> MOH Interpret:    default
 === ---> Language:         en
 === ---> Parkinglot:
 === ---> Muted:            No
 === ---> Auto-Answer:      No
 === ---> Override Context: No
 === ---------------------------------------------------------
 ===
 ===========================================================

Además, si intentaba hacer una llamada a una de mis extensiones con el comando:

console dial extensionCreadaPorMi

se recibe una llamada procedente del numeroRaro. Eso sí, no me ha dejado llamar a mi móvil.

Vamos a buscar qué significa esa configuración y si puedo cambiarla a mi gusto.

En efecto: esta configuración se encuentra en console.conf.  Incluso en mi caso tiene exactamente esta misma configuración, por lo que podría cambiarla evitando tener valores por defecto no deseados. Que será lo que haga:

;
; Any configuration context defined beyond the [general] section configures
; specific devices for use.
;

[default]
input_device = default       ; When configuring an input device and output device,
output_device = default      ; use the name that you see when you run the "console
                             ; list available" CLI command.  If you say "default", the
                             ; system default input and output devices will be used.
autoanswer = yes/no
context = default
extension = s
callerid = nombreRaro <(extensionLargaLarga>
language = en/es/fr...
overridecontext = yes/no
mohinterpret = default
active = yes/no                 ; This option should only be set for one console.
                             ; It means that it is the active console to be
                             ; used from the Asterisk CLI.

Además, me puse a cambiar algunos de los filtros del trunk, restringiendo ciertas llamadas, En algún momento lo mejoraré aún más, para las que he forzado que no se hagan, vayan por otro camino.

 Una prueba que hice que no me funcionó fue

console send text "hello world"

pero como era una pequeña chorrada tampoco es cuestión de dedicarle mucho tiempo.

Otra de las pruebas  que hice era para, en teoría, forzar a una extensión ejecutar una de las aplicaciones de asterisk. Por ejemplo:

channel originate SIP/{channel} extension wait(5)

con un resultado inesperado. Si no tengo ningún canal activo en esa extensión (y aun teniéndolo también me lo hace) se inicia una comunicación con una locución indicando que se ha producido un error. Me da dos opciones para pulsar: una de ellas darme un mensaje que no está definido, y la otra llamar a una centralita Digium. El SIP/ {channel} se puede obtener a partir de

core show channels

y tiene que haber al menos una llamada en curso en la centralita.

Así, poco a poco pude jugar un poco con la consola y las llamadas en curso. Hacía tiempo que no me ponía a toquetear con estas cosas. Espero que pueda volver a darle mucho más partido a este sistema.


viernes, 6 de enero de 2017

Mikrotik routerboard 411UAHR III: Completando la configuración

Hoy, día de Reyes, vamos a completar la configuración del dispositivo RB411UAHR. Ésta se ha hecho en varias fases.. Eso significa que el artículo lo escribí  en un momento determinado, después cambié algunas cosas porque me había encontrado con problemas o hice mejoras y más adelante (justo ahora mientras estoy escribiendo esta parrafada) voy a completar datos. Intentaré que se quede lo más ordenado posible para que no sea el típico caos de añadir datos que después no pegan ni con cola.

Solucionando el problema del acceso de los DNSs. Tal y como edité el anterior artículo, esos eran valores que equivaldrían a los datos del fichero hosts. Los DNS se ponen desde

/ip dns set listaDNSs

Añadiendo lista de servidores DNS a Mikrotik
Añadiendo lista de servidores DNS a Mikrotik
¡Ojo! La lista de las direcciones IP tiene que ir separada por una coma (,) pero sin espacios entre cada una de las direcciones. 

Además, me he encontrado con una utilidad 

/system route check DIR_IP

que te dice cuál sería el siguiente salto a nivel de direccionamiento. Por lo que si pones una dirección de fuera de la red (por ejemplo, la dirección IP de tus DNSs en internet), debería de indicarte el gateway

Según estoy viendo, existe "otro" ping. Al menos el comportamiento es distinto. En este caso, si lo ejecuto como 

/ping address=IP_2_PING

sí que responde, y además lo muestra en una lista. A diferencia que si accedo desde

/tools ping IP_2_PING

muestra sólo dos líneas con la velocidad en bps.

Por lo tanto, se puede dar por corregida esta incidencia.

Para la fecha y hora, quería configurarle un servidor NTP: 0.es.pool.ntp.org (de memoria). Pero a pesar de encontrarme con problemas para encontrar dónde se hacía, acabo de ver desde

/system clock print

que muestra la fecha, hora y timezone correctamente. Lo dejaré para más adelante (a ver si es que se han perdido utilidades al actualizar).

También es importante: no nos olvidemos de cambiar las contraseñas de los usuarios (en algún momento terminé creando alguno directamente) tanto de los nuevos como de los que vienen por defecto.

Ahora vamos al lío: voy a configurar una de las tarjetas wifi. Este es uno de los casos que he ido cambiando cosas, me he encontrado con otros problemas, etc.

Desde

/interface wireless print

vemos las tarjetas instaladas y su configuración:

Ver tarjetas inalambricas en Mikrotik
Ver tarjetas inalambricas en Mikrotik

Como podemos cometer el error de configurar la tarjeta (en mi caso va a ser la 1) sin seguridad (como me ha sucedido al configurarla y activarla) lo primero que se debería de hacer es ir a

/interface wireless security-profile

Esta sección nos permitirá crear un perfil de seguridad. Es decir: el perfil que indicará, entre otras cosas, el tipo de cifrado que se usará, la contraseña, etc. Un perfil que después se podrá asignar a la(s) tarjeta(s) que deseemos. Tendremos que buscar los distintos parámetros que necesitemos. Tipo de cifrado, clave(s) (wpa/wpa2...) el nombre que le vamos a asignar a esa configuración en concreto (para luego usarla), etc. Me he basado en lo que me indican en la wiki para adaptarlo a mis necesidades. Aunque he hecho unos cuantos cambios este debería de ser un ejemplo válido:

add name=nombre_molon mode=dynamic-keys supplicant-identity=nombre_molon_supplicant authentication-types=wpa2-psk,wpa-psk unicast-cipher=aes-ccm wpa-pre-shared-key="123abc123abc123abc" wpa2-pre-shared-key="123abc123abc123abc" management-protection=allowed

Y ahora ya podremos configurar los parámetros de la tarjeta de red. No nos olvidemos de indicarle qué perfil queremos usar para la seguridad:

/interface wireless
set 1 disabled=yes hide-ssid=yes wps-mode=disabled band=2ghz-b/g/n ssid=red_inalambrica mode=ap-bridge allow-sharedkey=no adaptive-noise-immunity=ap-and-client-mode antenna-mode=ant-a basic-rates-a/g=54Mbps
set 1 security_profile=nombre_molon disabled=no

Importante acordarse del wps-mode, que se me había quedado activado. Sólo lo pondremos si queremos reventar la seguridad que nos otorgan las claves WPA/WPA2.

Tampoco hay que olvidarse de ponerle su propia dirección IP a cada una de las tarjetas wifi con las que trabajemos. Recordemos que se hacía:

/ip address add interface=nombreInterfaz address=direccionIp netmask=mascaraRed 

No des por hecho que están puestas. Muchos cambios de aquí para allá pueden liarte. Y esto podría ser una de las razones por las que no eres capaz de conectarte a esa tarjeta de red en concreto.

Falta otro paso más: activar la comunicación entre las distintas tarjetas del sistema. Por ejemplo, entre las dos tarjetas integradas en el sistema. Eso significa que si se intenta hacer un ping de una de las tarjetas a la otra no vamos a obtener respuesta. También me he encontrado algún ejemplo (o eso parece) en el que usan NAT para hacer esa comunicación. Primero miraré cómo hacerlo con las opciones de bridge. Además, en algún caso he visto un ejemplo en el que configuraban WDS. Aunque me ha costado encontrarlo (y lo tenía en una de las páginas ya abiertas), WDS fundamentalmente convierte varios APs en un hub/switch.

/interface bridge add=nombreBridge
/interface bridge port add interface=ether1 bridge=nombreBridge
/interface bridge port add interface=wlan1 bridge=nombreBridge

Varias cosas sobre el bridge:

  • Su dirección MAC está toda a ceros en consola. En la GUI me aparece con la MAC de la tarjeta ethernet. Habrá que estudiar si se le pone una (por ejemplo, impersonalizando algunas de las que tiene el dispositivo) o si deja tal cual está.
  • He visto cómo le asignan una dirección IP al bridge (como una tarjeta más): 
/ip address add interface=nombreBridge address=ipBridge netmask=netMask comment=descripcion


Con esto he conseguido que un equipo conectado a la wifi pueda salir a Internet a través del punto de acceso. Pero no me deja(ba) hacer ping a otros dispositivos dentro de la misma red. Incluyendo desde el mismo Mikrotik. Hay que tener mucho cuidado al activar y desactivar las distintas direcciones IP que se tengan configuradas. Para solucionar este problema: buscamos en

/ip route print

Veremos que tenemos la dirección del gateway en una línea en la siguiente línea las distintas tarjetas con una sóla dirección IP. Pues fundamentalmente es como si esa dirección IP dijera por dónde va a salir. Ahí, en nuestro caso, tendremos que conseguir que ponga aquella que tiene asignado el bridge. Una forma puede ser ir a

/ip address set NUMERO_IP disabled=yes

para cada una de las que no queremos que aparezcan. Después las podemos volver a activar, pero así se fuerza a que ponga la que queremos que sea la principal. Seguro que hay otras formas, pero esta es una de ellas.

Con respecto a al cliente NTP, he tenido que hacer un ping al servicio 0.es.pool.ntp.org para obtener su dirección IP porque no me está dejando poner su URL (aunque hay vídeos donde sí se ve que se puede hacer).

/system ntp client set enabled=yes primary-ntp=193.145.15.15 server-dns-names=listaDNSs

Y ya tendríamos el equipo puesto en hora (casi) siempre en punto.

Es posible que toque hacer algún cambio más ya que la señal que me aparece en uno de los móviles para la tarjeta mini-PCI es mínima. De todas formas, para la integrada no va nada mal.

A medida que vaya solucionando estos problemas lo iré avisando. Aunque para ello tenga que mirarlo en la interfaz web o la herramienta WinBox que según entiendo al fin y al cabo parsea la interfaz web en una GUI para Windows. 

domingo, 1 de enero de 2017

Mikrotik routerboard 411UAHR II: Configuracion puerto serie

Una vez el dispositivo de Mikrotik está montado y ya tengo el cable nullmodem para conectarme (actualicé el artículo añadiendo en la lista este último), es hora de arrancar el aparatejo.

Probaré a usar como emulador de consola el putty. Y los parámetros que he indicado son:

  • Velocidad: 115200 bps
  • Data bits: 8
  • Bit de parada: 1
  • Paridad: No
  • Control de flujo: según las instrucciones, no funciona del todo bien el control de flujo. Primero probaré a no ponerlo y después veré si tira poniéndolo y después, si acaso, pongo el que nombran: RTS/CTS.
Por lo que quedaría así:

Configuración de putty para acceder al Mikrotik RB411UAHR por nullmodem/puerto serie
Configuración de putty para acceder al Mikrotik RB411UAHR por nullmodem
También es importante ir a la consola de administración de dispositivos, y mirar en la sección de Puertos (COM y LPT) para saber cómo se llama el puerto con el que vais a trabajar (yo lo tengo que cambiar).

Después vamos al árbol de Session y seleccionamos Serial:

Putty para iniciar serial en RB411UAHR
Putty para iniciar serial en RB411UAHR
Al iniciar la sesión no aparecerá nada hasta que no encendamos el cacharro. En mi caso es la primera vez que lo inicio. Y esto es lo que me ha aparecido:

Mirkrotik arrancado en puerto serie
Mirkrotik arrancado en puerto serie
Varias cosas que debería de hacer:
  • Actualizar: me sonaba haber visto que la última versión andaba por la 6 y pico. Como aparece la 5.25, toca actualizar. 
  • Presionar una tecla para acceder al setup. Además, el kernel no lo ha cargado correctamente. 
  • Mirar el usuario y contraseña por defecto. 
Por lo tanto, miraré si puedo configurarlo para que lo conecte a la red cableada y se baje automáticamente la actualización.

Para el primer acceso, usuario por defecto es admin y su contraseña vacía. En la página oficial de Mikrotik ofrecen distintas formas para acceder (entre otras las que he usado yo).

Al introducir las credenciales obtenemos:

Primer inicio de sesión en dispositivo Mikrotik
Primer inicio de sesión en dispositivo Mikrotik
Ahora hay que cambiar la dirección IP por defecto: 192.168.88.1.

Para la consola me ha costado poder acceder a la shell. Me estaba ofreciendo información pero no sabía si era para poder interactuar. Hasta que en momento determinado, la he visto. Ahora, ¿Cómo le indico qué quiero hacer? Los comandos cls, clear, help... No ayudan. Pero en el mismo instante en el que le mandamos el caracter "?" (sin comillas) nos muestra un menú. Si seleccionamos uno de los contenidos de se menú nos lleva a esa "carpeta" (actúa como tal). Y así sucesivamente:

Menú de Mikrotik
Menú de Mikrotik
Lo que no sé es qué diferencia hay entre cada uno de los colores de los elementos mostrados. Si hago un print obtengo la tabla de las direcciones IP:

Mikrotik: ip address print
Mikrotik: ip address print
Y así puedo cambiar la dirección IP:

set 0 comment "comentario" address direcionIP netmask mascaraRed interface ether1

Cambiar IP por defecto a Mikrotik
Cambiar IP por defecto a Mikrotik
Y hay que poner el gateway. Tengo mis dudas de que sea esta la opción, pero según el manual, para el entorno gráfico hay que usar éste, por lo tanto, lo daré por hecho y a ver qué pasa:

add gateway IP_GATEWAY

Configurar gateway en Mikrotik
Configurar gateway en Mikrotik
Y los DNSs, eliminando el que viene por defecto (la direccion IP que venía por defecto):

remove 0
add address IP_DNS1
add address IP_DNS2

Configurar DNSs en Mikrotik
Configurar DNSs en Mikrotik
[Inciso]
Este artículo ya lo tenía escrito, pero no publicado: esta sección realmente añade servidores DNS, sino entradas estáticas (por eso estamos en "static") al más estilo hosts. Aunque lo explicaré en el próximo artículo (esto es un auto-spoiler), la resolución de nombres se puede añadir en /ip dns set servers listaServidores
[/Inciso]

Ahora tengo que buscar dónde está el ping y una vez encontrado, conectar el cable de red.

Al ir a lo que equivaldría a /tools/ping IP_DNS_EXTERNO no obtengo resultados, por lo que el gateway no está del todo bien configurado. Resulta que haciendo más pruebas es extraño: los DNSs que siempre uso sí que me devuelven datos desde otros equipos, desde el RB no, pero sí que hay resultados con los de Google (8.8.8.8, 8.8.4.4). 

Quiero revisar los temas de las licencias, porque me da que si no lo gestiono bien, me puedo llevar la desagradable sorpresa de que se resetee él solo a las 24 horas de haberlo encendido. Pero buscando bastante me he encontrado con que con la wiki oficial dice que "los dispositivos RouterBOARD vienen con una licencia preinstalada, si has comprado un dispositivo RouterBOARD, no hay que hacer nada relacionado con las licencias". Por lo tanto, con respecto a este tema ya puedo estar tranquilo. 

Fin día 1

Día 2:

Mientras, más cosas a tener en cuenta: el reloj. Mientras estaba entrando de nuevo al sistema, me he acordado del reloj, que está desactualizado (ahora estamos en 1970). Buscando en el manual, indican que a partir de la versión 6.27 se puede hacer automáticamente (autodetect). Una vez más, la actualización ayudará mucho. Y aun así, también está el cliente ntp. 

Antes de nada: actualización (y veamos si puede descargarse las cosas teniendo en cuenta que sólo consigue hacer ping a algunas redes)

De acuerdo a lo que me indican, una actualización de todo el sistema no la puedo hacer con la consola. Por lo tanto, tiraré vía web. 

En la página oficial de descargas buscamos el modelo de nuestro dispositivo en la lista, tal y como he marcado de ejemplo en la imagen:

Paquetes de descarga de actualizaciones de Mikrotik
Paquetes de descarga de actualizaciones de Mikrotik

Después, desde la interfaz web, vamos al menú File, y seleccionamos el fichero *.npk. En mi caso, también he seleccionado el fichero .zip. Puede que hubiera sido mejor haberlo hecho en dos pasos. Nada más reiniciar se procede a la instalación:

Actualización del Mikrotik 01
Actualización del Mikrotik 01
Y el proceso:

Actualización del Mikrotik 02
Actualización del Mikrotik 02
Para que al reiniciar:

Mikrotik actualizado
Mikrotik actualizado

/system routerboard upgrade

Y al reiniciar ya lo tenemos. 

Los siguientes pasos los haré en el próximo post para evitar alargar este mucho más. Entre otros terminaré de hacer alguno de los pasos que ya he comentado y que se han quedado en el tintero.

¡¡¡Por cierto!!! ¡¡Feliz año nuevo!!