Para ver que todos los componentes estan cargados y funcionando, coja 2 estaciones de trabajo Linux, ambas conectadasd a la LAN. Asegurese de que tiene al menos la version 1.1 de OpenH323 y OhPhone instalados. En la primera maquina ejecute el gatekeeper y ohphone (en consolas diferentes:
jan@machine1 > gnugk -ttt
Ahora el gatekeeper está ejecutandose en modo directo.
La opcion "-ttt
" le dice al gatekeeper que genere mucha salida para debug en la consola (puede dirigir esa salida a un fichero con "-o logfile
").
jan@machine1 > ohphone -l -a -u jan
Ahora este OhPhone está escuchando (-l
) para recibir llamadas y las aceptara automaticamente (-a
). Se ha registrado como usuario jan con el gatekeeper que detectara automaticamente. (si la autodeteccion fallara por alguna razon, use "-g 1.2.3.4
" para especificar la IP donde esta escuchando el gatekeeper.)
En la segunda maquina ejecute solamente ohphone:
peter@machine2 > ohphone -u peter jan
La segunda instancia de OhPhone se registra con el gatekeeper auto detectado como usuario peter y intenta llamar al usuario jan. El gatekeeper resolvera el nombre de usuario a la IP desde donde el usuario jan se registro (maquina1 en este caso) y OhPhone llamara la otra instancia de OhPhone en la maquina uno.
La primera instancia de OhPhone aceptara esta llamada y Peter y Jan podran hablar.
Ahora intente ver que mensajes han sido manejados por el gatekeeper. En la nueva consola en maquina1 vamos a usar telnet para conectar al gatekeeper:
jan@machine1 > telnet machine1 7000
Probablemente recibiremos un mensaje de acceso denegado ("Access forbidden!"), porque no se le permite a todo el mundo espiar.
Ahora crearemos un fichero llamado gatekeeper.ini
y lo colocaremos en el directorio donde arrancamos el gatekeeper.
gatekeeper.ini
solo contiene 4 lineas:
[Gatekeeper::Main]
Fortytwo=42
[GkStatus::Auth]
rule=allow
Pare el gatekeeper con Ctrl-C y ejecutelo de nuevo. Cuando hagamos el telnet de nuevo, permaneceremos conectados con el gatekeeper. Ahora repita el primer experimento donde Peter llama a Jan y observe que mensajes son manejados por el gatekeeper en el modo no-enrutado. En esta sesion de telnet pueden ser enviados algunos comandos: Teclee "help" para verlos. Para finalizar la sesion de telnet con el gatekeeper teclee "quit" y presione Enter.
Arrancando el gatekeeper en modo enrutado significa que el gatekeeper usa "señales de enrutado gatekeeper" para todas las llamadas. En este modo el gatekeeper todos los mensajes de señalicacion del gatekeeper pasaran a traves del gatekeeper y esto permite mucho mas control sobre las llamadas.
jan@machine1 > gnugk -r
Ahora el gatekeeper esta ejecutandose en modo enrutado. Haga telnet al puerto de estado y realice una llamada para ver que mensajes son manejados ahora por el gatekeeper.
Recuerde que todos los paquetes multimedia (audio y video) son todavia enviados directamente entre los endpoints (las 2 instancias de ohphone).
Desde que la señalicacion enrutada del gatekeeper es mucho mas complicada usted tiene mas posibilidades de encontrarse con un bug en el gatekeeper en este modo. Pero si se rompe, usted tiene que recoger las piezas. ;-)
Hasta ahora el gatekeeper ha actuado solamente como un mecanismo para resolver nombres simbolicos a direcciones IP. Es una funcion importante pero dificilmente excitante.
Desde que el gatekeeper tiene un gran control sobre las llamdas, este puede finalizarlas por ejemplo. Cuando estamos conectados al puerto de estado, podemos listar todas las llamadas activas con "PrintCurrentCalls
". Para finalizar una llamada, podemos decir "Disconnectip 1.2.3.4
" para uno de estos endpoints.
Uno puede por ejemplo escribir un script simple que conecte al puerto de estado y escuche todas las llamadas entrantes y las termine despues de 5 minutos, asi ningun usuario puede sobrepasar los recursos del sistema.
Eche un vistazo a las otra funciones de telefonia como TransferCall para ver que mas hay disponible.
Sin usar un gateway usted solo puede llamar a otras personas con un telefono IP a traves de internet. Para alcanzar gente con telefonos ordinarios debe de usar un gateway.
_________________ ______________
| endpoint "jan"| | |
| 192.168.88.35 |--------->| Gatekeeper |
|_______________| | |
_________________ | |
| gateway "gw1" | saliente | |
| 192.168.88.37 |<---------|____________|
|_______________|
El gatekeeper tiene que conocer que llamadas deben de ser supuestamente enrutadas a traves del gateway y que numeros deben ser llamados directamente. Use la seccion [RasSrv::GWPrefixes] del fichero de configuracion para decirle al gatekeeper el prefijo de numeros que deben de ser enrutados a traves del gateway.
[RasSrv::GWPrefixes]
gw1=0
Esta entrada le dira al gatekeeper que enrute todas las llamadas a numeros E.164 que empiezen por 0 al gateway que se ha registrado con el alias "gw1". Si no hay ningun gateway registrado con este alias la llamada fallara. (Recuerde que debe usar un aligas para el gateway - no puede simplemente decirle al gatekeeper la IP del gateway.)
Un prefijo puede contener los digitos 0-9
, #
y *
. Tambien puede contener un caracter especial .
(un punto) que sustituye cualquier digito y puede ser prefijado con !
(un signo de exclamacion final) para desactivar el prefijo.
La sustitucion de prefijos se hace de acuerdo a la regla de sustitucion de prefijos mas larga,
teniendo las reglas ! mayor prioridad si la longitud es igual. Algunos ejemplos:
[RasSrv::GWPrefixes]
; Esta entrada enrutara numeros que empiecen con 0048 (pero no con 004850 y 004860)
; a gw1
gw1=0048,!004850,!004860
; Esta entrada sustituira solamente 001 y 10 digitos a continuacion
gw2=001..........
Mientras este usando un gateway frecuentemente tendra que usar internamente numeros diferentes y reescribirlos antes de enviarlos a traves del gateway a una red telefonica. Puede usar la seccion RasSrv::RewriteE164 para configurar esto.
Ejemplo: Usted quiere llamar el numero 12345 con su telefono IP y le gustaria alcanzar el numero 08765 detras de un gateway llamado "gw1".
[RasSrv::GWPrefixes]
gw1=0
[RasSrv::RewriteE164]
12345=08765
Usted puede además configurar la reescritura de números E.164 basándose desde que gateway usted está recibiendo la llamada o enviando una llamada para que utilice la sección RasSrv::GWRewriteE164.
Ejemplo: Usted tiene dos gateways diferentes ("gw1" y "gw2") hacia los cuales usted está enviando llamadas con prefijos 0044, pero los mismos requieren que sean agregado un prefijo diferente en el número después de que el ruteo ha elegido el gateway. Esto podría ser para propósitos de identificación por ejemplo.
[RasSrv::GWPrefixes]
gw1=0044
gw2=0044
[RasSrv::GWRewriteE164]
gw1=out=0044=77770044
gw2=out=0044=88880044
Ejemplo: Usted necesita identificar llamadas desde un gateway particular "gw1" con un prefijo específico antes que pasen estas llamadas hacia otro gateway "gw2".
[RasSrv::GWPrefixes]
gw2=1
[RasSrv::GWRewriteE164]
gw1=in=00=123400
La reescritura de expresiones acepta los caracteres comodín como '.'
y signos de porcentaje '%'
para permitir construír reglas más generales. El caracter punto puede estar
en cuanquier lado de las expresiones (izquierda o derecha), el signo de porcentaje solo puede estar
al la izquierda. Use '.'
para corresponder cualquier caracter y copiar éste
en la cadena reescrita y '%'
para enparejar cualquier caracter e ignorar éste.
Aqui uno ejemplos simples:
[RasSrv::RewriteE164]
; Reescribe 0044 + 7 dígitos mínimo hacia 44 + 7 dígitos mínimo
0044.......=44.......
; Reescribe números que empiezan con 11 + 4 dígitos + 11 hacia 22 + 4 dígitos + 22 (así 11333311 => 22333322, 110000112345 => 220000222345)
11....11=22....22
; quita los primeros cuatro dígitos de todos los nñumeros (11114858345 => 4858345)
; esto es equivalente a 10 reglas %%%%1=1, %%%%2=2, ...
%%%%.=.
; inserta dos ceros en medio del núumero (111148581234 => 11110048581234)
....48=....0048
; incluso esto es posible (415161 => 041051061)
4.5.6=04.05.06