Central Telefonica Detras De Un Firewall

Discussion in 'Elastix 2.x' started by vozpacific, Sep 1, 2009.

  1. vozpacific

    Joined:
    Jun 18, 2009
    Messages:
    4
    Likes Received:
    0
    Buenas tardes de antemano les doy las gracias por su tiempo y aportes que me puedan brindar para solucionar el siguiente problema:

    Acabo de montar un servidor Firewall (DEBIAN) con 3 tarjetas de red configuradas asi:

    ETH0: IP PUBLICA (19X.XXX.Y.YXY)
    ETH1: IP PRIVADA (192.168.2.20)
    ETH2: SIP (192.168.150.3)

    todas las extensiones que se conectan en la red privada pueden hacer llamadas a (fijo, nacional,

    internacional, extensiones) sin ningun problema funciona perfecto. Cuando alguien se conecta desde afuera a la

    IPPUBLICA (19X.XXX.Y.YXY) y llaman a (fijos,nacionales,internacionales y extensiones) no hay comunicacion,

    osea no se escuchan ahi radica principalmente el problema, estuve investigando y configure el sip_nat.conf

    pero nada no me funciona, dejo el codigo de los iptables del firewall y de la operadora, gracias.

    IPTABLES FIREWALL (192.168.2.20)
    Code:
    #!/bin/sh
    ## SCRIPT de IPTABLES - ejemplo del manual de iptables
    ## Ejemplo de script para firewall entre red-local e internet
    
    echo -n Aplicando Reglas de Firewall...
    
    ## FLUSH de reglas
     iptables -F
     iptables -X
     iptables -Z
     iptables -t nat -F
    ## Establecemos politica por defecto
     iptables -P INPUT ACCEPT
     iptables -P OUTPUT ACCEPT
     iptables -P FORWARD ACCEPT
     iptables -t nat -P PREROUTING ACCEPT
     iptables -t nat -P POSTROUTING ACCEPT
    
    ## A nuestro firewall tenemos acceso total
     iptables -A INPUT  -s 192.168.2.251 -j ACCEPT
     iptables -A OUTPUT -d 192.168.2.251 -j ACCEPT
    
     iptables -A INPUT  -s 19X.XXX.Y.YXY -j ACCEPT
     iptables -A OUTPUT -d 19X.XXX.Y.YXY -j ACCEPT
    
    
    # Para el resto no hay acceso al firewall
    # En principio esta de má pero si rebajamos los permisos temporalmente
    # nos cubre las espaldas
     iptables -A INPUT -s 0.0.0.0/0 -j DROP
    
    ######################################
    # Aceptacion de puertos para Asterix
    ######################################
     iptables -A INPUT -p udp --dport 5060:5080   -j ACCEPT
     iptables -A INPUT -p udp --dport 4000:6000   -j ACCEPT
     iptables -A INPUT -p udp --dport 10000:20000 -j ACCEPT
    ##########################################################################################################
    #  Hace el ruteo a las VE desde el SIP
    ##########################################################################################################
     iptables -t nat -A PREROUTING -i eth2 -p UDP  --dport 5060:5080   -j DNAT --to 192.168.2.21
     iptables -t nat -A PREROUTING -i eth2 -p UDP  --dport 4000:6000   -j DNAT --to 192.168.2.21
     iptables -t nat -A PREROUTING -i eth2 -p UDP  --dport 10000:20000 -j DNAT --to 192.168.2.21
    ##########################################################################################################
    # Aceptando el trafico SIP por la interfaz publica ETH0
    #########################################################################################################
     iptables -t nat -A PREROUTING -i eth0 -p UDP  --dport 5060:5082   -j DNAT --to 192.168.2.21
     iptables -t nat -A PREROUTING -i eth0 -p UDP  --dport 4000:6000   -j DNAT --to 192.168.2.21
     iptables -t nat -A PREROUTING -i eth0 -p UDP  --dport 10000:20000 -j DNAT --to 192.168.2.21
    ##########################################################################################################
    # Aceptando el trafico  RTP por la interfaz publica ETH0
    ##########################################################################################################
    # iptables -A INPUT -p udp -m udp -i eth0 --dport 10000:20000 -j ACCEPT
    # iptables -t nat -A PREROUTING -i eth0 -p UDP --dport 10000:20000 -j DNAT --to 192.168.2.21
    # iptables -t nat -A PREROUTING -i eth0 -p TCP --dport 10000:20000 -j DNAT --to 192.168.2.21
    ##########################################################################################################
    # Aceptando el Trafico MGCP por la interfaz publica ETH0
    # iptables -A INPUT -p udp -m udp -i eth0 --dport 2727 -j ACCEPT
    ##########################################################################################################
    ##########################################################################################################
    # Aceptando el Trafico Mensajeria por la interfaz publica ETH0
    # iptables -A INPUT -p tcp -i eth0 --dport 9090 -j ACCEPT
    ##########################################################################################################
    #       Aceptando el trafico del servidor de correo y POP/IMAP por la interfaz publica ETH0
    # iptables -A INPUT -p tcp -i eth0 --dport 25 -j ACCEPT
    # iptables -A INPUT -p tcp -i eth0 --dport 110 -j ACCEPT
    # iptables -A INPUT -p tcp -i eth0 --dport 143 -j ACCEPT
    ##########################################################################################################
    #       Acceso al portal WEB a la central de TSG por la interfaz publica ETH0
    # iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT
    # iptables -A INPUT -p tcp -i eth0 --dport 443 -j ACCEPT
    iptables -t nat -A PREROUTING -i eth0 -p TCP --dport  80 -j DNAT --to 192.168.2.21
    iptables -t nat -A PREROUTING -i eth0 -p TCP --dport 443 -j DNAT --to 192.168.2.21
    ##########################################################################################################
    #       Aceptando el Trafico SSH por la interfaz publica ETH0
    iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
    iptables -t nat -A PREROUTING -i eth0 -p TCP --dport 23 -j DNAT --to 192.168.2.21:22
    ##########################################################################################################
    # NAT Salida
    #iptables -t nat -A POSTROUTING -s 192.168.2.21 -d 192.168.150.3 -j SNAT --to 19X.XXX.Y.YXY
    
    # ACEPTAR TRAFICO ENTRADA/SALIDA
    #FORWARDS
     iptables -I FORWARD 1 -s 19X.XXX.Y.YXY -d 192.168.2.21  -p udp -m multiport --dports 5060:6000,10000:20000 -j 
    
    ACCEPT
     iptables -I FORWARD 1 -s 192.168.2.21  -d 192.168.150.3 -p udp -m multiport --dports 5060:6000,10000:20000 -j 
    
    ACCEPT
    
    #Entrada
     iptables -I INPUT   1 192.168.2.21 -s 19X.XXX.Y.YXY -p udp -m multiport --sports 5060,6000,10000:20000 -j 
    
    ACCEPT
     iptables -I FORWARD 1 -d 192.168.2.21 -s 192.168.150.3 -p udp -m multiport --sports 5060,6000,10000:20000 -j 
    
    ACCEPT
    ##########################################################################################################
    #       Finalmente denegando el acceso a todo lo demas
    #iptables -A INPUT -p all -i eth0 -j DROP
    ##########################################################################################################
    # Con esto permitimos hacer forward de paquetes en el firewall, o sea
    # que otras máinas puedan salir a traves del firewall.
    
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo " OK . Verifique que lo que se aplica con: iptables -L -n"
    
    IPTABLES CENTRAL TELEFONICA (192.168.2.21)
    Code:
    ## FLUSH de reglas
    iptables -F
    iptables -X
    iptables -Z
    iptables -t nat -F
    
    ## Establecemos politica por defecto
    #iptables -P INPUT ACCEPT
    #iptables -P OUTPUT ACCEPT
    #iptables -P FORWARD ACCEPT
    #iptables -t nat -P PREROUTING ACCEPT
    #iptables -t nat -P POSTROUTING ACCEPT
    
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -p udp --dport 5000:5082 -j ACCEPT
    iptables -A INPUT -p udp --dport 10000:20000 -j ACCEPT
    
    
    
    echo 'Se han ejecutado las reglas con extio'
    
    
     
  2. jcastellanos

    Joined:
    Feb 10, 2009
    Messages:
    2,404
    Likes Received:
    0
    bueo si es por extenciones remotas hay que ver si no es por puertos, que puertos tienes abiertos???? aparte tu carrier puede bloquear este tipo de conexiones, que carrier es?
     
  3. hugo_cba

    Joined:
    May 22, 2008
    Messages:
    222
    Likes Received:
    0
    Hola vozpacific!

    A la extensión remota la ves logueada en el CLI de Elastix?

    Si no fijate con sip show peer XXXX (XXXX= nro. de interno)

    Si no escuchas nada, en algún lado se están perdiendo los paquetes RTP que van a los puertos 10000 a 20000, si es que estás usando SIP (por lo que veo no abriste el 4569 para IAX).

    La otra prueba que se me ocurre es sniffear antes del router para ver que te está llegando desde internet.

    Como salen las extensiones a internet en la ubicación remota? No tendrás bloqueo de puertos en la ubicación remota?

    Saludos!
     
  4. vozpacific

    Joined:
    Jun 18, 2009
    Messages:
    4
    Likes Received:
    0
    Buen dia, Ante todo gracias por la colobacion prestada a este tema, con unos cambios en los archivos sip.conf y sip_nat.conf el problema ha tomado otro rumbo y es que la comunicacion con la telefonia local desde las extenciones sea local o remota no escuha lo que habla con el telefono local.

    Relacion de comunicacion

    Extencion local <--> Extencion local OK
    Extencion local <--> Extencion remota OK
    Extencion local <--> Llamada local Escucha en el telefono local, no escucha la extencion.
    Extencion local <--> LLamana nacional Ok, llamada por proveedor internet.
    Extencion local <--> LLamana internacional Ok, llamada por proveedor internet.

    Extencion remota <--> Extencion local OK
    Extencion remota <--> Extencion remota OK
    Extencion remota <--> Llamada local Escucha en el telefono local, no escucha la extencion.
    Extencion remota <--> LLamana nacional Ok, llamada por proveedor internet.
    Extencion remota <--> LLamana internacional Ok, llamada por proveedor internet.

    Para las inquietudes que me expresan, este problema no se me presentaba cuando el server de la central tenia una tarjeta pegada directamente a internet con una direccion publica. Todo funcionaba sin problema y los ATA remotos, PC remotos, ATA locales y PC locales funcionaban bien.

    A la sugerencia de hugo_cba de hacer sniffer antes del router, es con el comando tcpdump? Que parametros le debo enviar? Y que respuesta debo esperar? (En este tema soy bastante novato).

    Gracias de nuevo por la colaboracion y estare atento a sus sugerencias. Anexo los archivos sip.conf y sip_nat.conf

    [sip.conf]
    ;--------------------------------------------------------------------------------;
    ; Do NOT edit this file as it is auto-generated by FreePBX. All modifications to ;
    ; this file must be done via the web gui. There are alternative files to make ;
    ; custom modifications, details at: http://freepbx.org/configuration_files ;
    ;--------------------------------------------------------------------------------;
    ;

    [general]

    language=es
    ; These files will all be included in the [general] context
    ;
    #include sip_general_additional.conf

    ;sip_general_custom.conf is the proper file location for placing any sip general
    ;options that you might need set. For example: enable and force the sip jitterbuffer.
    ;If these settings are desired they should be set the sip_general_custom.conf file.
    ;
    ; jbenable=yes
    ; jbforce=yes
    ;
    ;It is also the proper place to add the lines needed for sip nat'ing when going
    ;through a firewall. For nat'ing you'd need to add the following lines:
    ; nat=yes , externip= , localhost= , and optionally fromdomain= .
    ;
    nat=yes
    externip=190.XXX.YYY.ZZZ
    localnet=192.168.2.0/255.255.255.0
    localhost=192.XXX.YYY.ZZZ

    bindport = 5060 ; Port to bind to (SIP is 5060)
    bindaddr = 0.0.0.0 ; Address to bind to (all addresses on machine)
    srvlookup=yes
    disallow=all
    allow=gsm
    allow=g723
    allow=g729
    allow=alaw
    allow=ulaw

    context = from-sip-external ; Send unknown SIP callers to this context
    callerid = Unknown
    tos=0x68

    #include sip_general_custom.conf

    ;sip_nat.conf is here for legacy support reasons and for those that upgrade
    ;from previous versions. If you have this file with lines in it please make
    ;sure they are not duplicated in sip_general_custom.conf, if so remove them
    ;from sip_nat.conf as sip_general_custom.conf will have precedence.
    #include sip_nat.conf

    ;sip_registrations_custom.conf is for any customizations you might need to do to
    ;the automatically generated registrations that FreePBX makes.
    ;
    #include sip_registrations_custom.conf
    #include sip_registrations.conf

    ; These files should all be expected to come after the [general] context
    ;
    #include sip_custom.conf
    #include sip_additional.conf

    ;sip_custom_post.conf If you have extra parameters that are needed for a
    ;extension to work to for example, those go here. So you have extension
    ;1000 defined in your system you start by creating a line [1000](+) in this
    ;file. Then on the next line add the extra parameter that is needed.
    ;When the sip.conf is loaded it will append your additions to the end of
    ;that extension.
    ;
    #include sip_custom_post.conf

    [sip_nat.conf]
    nat=yes
    externip=190.XXX.YYY.ZZZ
    localnet=192.168.2.0/255.255.255.0
    Bindaddr=0.0.0.0
    port=5060
    externrefresh=120
     
  5. vozpacific

    Joined:
    Jun 18, 2009
    Messages:
    4
    Likes Received:
    0
    Se me olvida decirles que cuando activo el sip_nat.conf y llaman desde afuera se pierde el dial osea marcan al numero de nuestro pbx 489xxxx -> entra al IVR de la operadora, y cuando da la opciones del menu 1-logistica, 2-ventas, etc las teclas(dial) de cualquier telefono no funciona. gracias.
     
  6. hugo_cba

    Joined:
    May 22, 2008
    Messages:
    222
    Likes Received:
    0
    Por donde salen las llamadas locales? Troncales analógicos, fxo? tramas? están en el server o en un gateway?

    Por proveedor de internet te referís a un proveedor de telefonía IP
     
  7. vozpacific

    Joined:
    Jun 18, 2009
    Messages:
    4
    Likes Received:
    0
    Hugo,Las llamadas locales salen por una troncal sip digital, pero a ver te explico para poder salir a la llamada local la central (190.168.150.3) debe salir ( por el firewall) de la tarjeta eth2 (192.168.150.2) la cual se conecta a un router cisco 2600 a un puerto que tiene como ip (192.168.150.1) y ese a la vez se conecta a la red privada de telmex (10.8.7X.XX) para poder hacer esto tengo un ruteo que es asi:

    route add -host 10.8.7X.XX gw 192.168.150.1

    Cualquier aporte les agradesco.

    No olvides que todas la llamadas locales me funciona perfecto siempre y cuando todo lo haga desde la red local (192.168.2.22) y no prenda la opcion del sip_nat.conf
     
  8. hugo_cba

    Joined:
    May 22, 2008
    Messages:
    222
    Likes Received:
    0
    Bueno, me quedé sin ideas para ayudarte. De ruteo no entiendo mucho. Te cuento mi experiencia, yo tengo un server con elastix pero tengo un dominio que apunta a una IP. Allí el firewall acepta desde internet el puerto 5060 el 10000 al 20000 y el 4569 para iax. Y nada más, anda perfecto. Te cuento que para eso dispongo del dominio que apunta al dns de la empresa, que resuelve a que ip de mi red interna mandarme las peticiones que llegan. Al firewall no lo manejo yo (Fortigate), yo sólo le pido las reglas a otra area (seguridad informática).
    Por todo lo que te comenté, no configuré nunca el sip_nat.conf, ni siquiera cuando para preubas colgaba el server de un ADSL con Ip dinámica (estaba prendido siempre el modem, jajaja, se cortaba la luz, y estaba frito, pero solo era para pruebas).

    Me preguntabas por lo de tcpdump, efectivamente los podés hacer en la eth0 o eth1 (lo que corresponda) y vas a ver lo que esta pasando a través de la placa de red.

    En cuanto al discado, tenés que configurar en elastix que vas a usar rfc2833 (dtmf mode es la opción) y asegurarte que los internos están configurados igual. Eso por lo menos a nivel interno. A nivel externo, no sé.

    Los problemas de audio en extensiones remotas (cuando no se escucha nada o se escucha en una sola via) son siempre problemas de peurtos bloqueados en algún tramo entre la extensión remota y tu elastix.

    Lamento mucho no peder serte de más ayuda. A lo mejor usuarios más experimentados como Gamba47 o Jcastellanos puedan darte una mano. Esperemos que vean este post.
     
  9. gamba47

    Joined:
    May 28, 2009
    Messages:
    595
    Likes Received:
    0
    El problema es que el troncal esta entrando por otra IP distinta a la que declaras en el archivo sip_nat.conf . Estas teniendo 2 IPs nateadas y eso no se como lo podes solucionar (que yo no lo sepa no es un dato tan importante jajaja )


    El comando es:

    tcpdump -i eth0 | grep 192.168.0.101

    Dondo eth0 es la interfaz a snifiar y 192.168.0.101 es la IP que quiero snifiar, de otro modo se hace ilegible lo que aparece.

    No solo de puertos bloqueados, el NAT es el peor karma.

    Que ?? experimentado ?? le pongo las mismas ganas que vos nada más!!!

    gamba47
     

Share This Page