Firewall + acceso a servidor Elastix

Discussion in 'Elastix 2.x' started by ceduardo, Jul 10, 2009.

  1. ceduardo

    Joined:
    Jul 9, 2009
    Messages:
    4
    Likes Received:
    0
    Hola a todos de antemano gracias por la ayuda que me puedan prestar.

    Tengo una infraestructura de red de la siguiente forma:
    (Internet) -----[ipPub][INTERNET-SERVER][ipPri]------[LAN]------[SERVIDOR-ELASTIX]

    [INERNET-SERVER]
    eth2 IP publica XXX.YYY.ZZZ.QQQ
    eth0 IP privada 192.168.2.15
    eth1 IP privada 192.168.150.2

    [SERVIDOR-ELASTIX]
    eth0 IP 192.168.2.72

    Quiero que los clientes externos a la red accedan al servidor elastix para ello hice unas reglas de iptables asi:

    Code:
    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
    
    #Hace el ruteo a las CT Servidor Elastix
    iptables -t nat -A PREROUTING -i eth2 -p UDP --dport 5060:5080 -j DNAT --to 192.168.2.72
    iptables -t nat -A PREROUTING -i eth2 -p UDP --dport 10000:20000 -j DNAT --to 192.168.2.72
    
    iptables -A INPUT -p udp --dport 5060:5061 -j ACCEPT
    iptables -A INPUT -p udp --dport 10000:20000 -j ACCEPT
    
    ## Empezamos a filtrar para el acceso a internet
    ## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
    # El localhost se deja (por ejemplo conexiones locales a mysql)
    
    /sbin/iptables -A INPUT -i lo -j ACCEPT
    
    # Al firewall tenemos acceso desde la red local
    iptables -A INPUT -s 192.168.2.0/24 -i eth0 -j ACCEPT
    
    # Ahora hacemos enmascaramiento de la red local
    # y activamos el BIT DE FORWARDING (imprescindible!!!!!)
    
    iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth2 -j MASQUERADE
    
    # Con esto permitimos hacer forward de paquetes en el firewall, o sea
    # que otras m
     
  2. gamba47

    Joined:
    May 28, 2009
    Messages:
    595
    Likes Received:
    0
    Es porque tenes que redireccionar los puertos TCP y UDP para el Elastix, el necesita ser el que maneje esos puertos.

    No se bien cuales puertos son, pero más o menos los que seguro son necesarios:

    TCP 5060
    UDP 10000:20000

    Lo mejor es redireccionar todos los puertos.

    Después de esto es necesario que agregues el archivo /etc/asterisk/sip_nat.conf con la siguiente información:

    Code:
    nat=yes
    externip=`curl whatismyip.com/automation/n09230945.asp`
    localnet=192.168.254.2/255.255.255.0 -o la que aplique en tu caso
    externrefresh=120
    A algunos les funciona y a otros no, porque el problema esta cuando cambia la IP, a veces asterisk no se da cuenta de eso.

    Yo acá estoy armando un script para automatizar este tipo de cosas, veo que te llevas bien con iptables, por ahí me podes ayudar a solucionar el problema del script que armé para chechear la ip cada 10 minutos.
    http://www.elastix.org/index.php?option ... 3&id=27668

    Saludos. gamba47
     
  3. jcastellanos

    Joined:
    Feb 10, 2009
    Messages:
    2,404
    Likes Received:
    0
    los puertos son :

    443 - este es el puerto ssl para entrar al admiistrador web del elastix por internet

    5060 UDP
    4000 al 6000 UDP
    10000 al 20000 UDP

    son todos los que requieres, claro modificando el SIP_NAT.CONF
     
  4. ceduardo

    Joined:
    Jul 9, 2009
    Messages:
    4
    Likes Received:
    0
    Holas gracias por la ayuda.

    Bueno hice el cambio en el archivo sip_nat.conf del servidor elastix
    Code:
    nat=yes
    externip=`curl whatismyip.com/automation/n09230945.asp`
    localnet=192.168.2.0/255.255.255.0
    externrefresh=120
    
    Y en el servidor de internet hice las siguientes modificaciones

    Code:
    #Hace el ruteo a las CT
    iptables -t nat -A PREROUTING -i eth2 -p UDP --dport 5060:5080 -j DNAT --to 192.168.2.72
    iptables -t nat -A PREROUTING -i eth2 -p UDP --dport 4000:6000 -j DNAT --to 192.168.2.72
    iptables -t nat -A PREROUTING -i eth2 -p UDP --dport 10000:20000 -j DNAT --to 192.168.2.72
    
    #Acepto el trafico
    iptables -A INPUT -p udp --dport 5060:5061 -j ACCEPT
    iptables -A INPUT -p udp --dport 4000:6000 -j ACCEPT
    iptables -A INPUT -p udp --dport 10000:20000 -j ACCEPT
    
    Pero aun no logro que me escuchen desde afuera.:S


    PD: Claro gamba47 que te ayudare, pero te aclaro no soy el super experto en iptables pero se puede ayudar a buscar una solución. Voy a revisar el link que me pasaste.
     
  5. ceduardo

    Joined:
    Jul 9, 2009
    Messages:
    4
    Likes Received:
    0
    Bueno se ha solucionado el problema, yo creo que de todo un poco de lo que uds me dijeron, mas algo que por aquí hicieron, el detalle adicional fue que reiniciaron la configuración de los codes de sonido en el X-Lite.

    Para la gente que como yo tenga un servidor de Internet y que a su vez haga de firewall comparto el script con el que me dio resultado. Recuerden que el servidor Elastix esta dentro de la red LAN no directo a Internet.

    Este script va en el servdidor de Internet.
    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
    
    #Hace el ruteo a las CT
    iptables -t nat -A PREROUTING -i eth2 -p UDP --dport 5060:5080 -j DNAT --to 192.168.2.72
    iptables -t nat -A PREROUTING -i eth2 -p UDP --dport 4000:6000 -j DNAT --to 192.168.2.72
    iptables -t nat -A PREROUTING -i eth2 -p UDP --dport 10000:20000 -j DNAT --to 192.168.2.72
    
    iptables -A INPUT -p udp --dport 5060:5061 -j ACCEPT
    iptables -A INPUT -p udp --dport 4000:6000 -j ACCEPT
    iptables -A INPUT -p udp --dport 10000:20000 -j ACCEPT
    
    ## Empezamos a filtrar
    ## Nota: eth2 es el interfaz conectado al router y eth0 a la LAN
    # El localhost se deja (por ejemplo conexiones locales a mysql)
    
    /sbin/iptables -A INPUT -i lo -j ACCEPT
    
    # Al firewall tenemos acceso desde la red local
    iptables -A INPUT -s 192.168.2.0/24 -i eth0 -j ACCEPT
    
    # Ahora hacemos enmascaramiento de la red local
    # y activamos el BIT DE FORWARDING (imprescindible!!!!!)
    
    iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth2 -j MASQUERADE
    
    # Con esto permitimos hacer forward de paquetes en el firewall, o sea
    # que otras m
     
  6. jcastellanos

    Joined:
    Feb 10, 2009
    Messages:
    2,404
    Likes Received:
    0
    Gracias a ti por poner el resultado de tu tabajo :D

    saludos
     
  7. aparicio_juan

    Joined:
    Mar 6, 2008
    Messages:
    109
    Likes Received:
    0
  8. gamba47

    Joined:
    May 28, 2009
    Messages:
    595
    Likes Received:
    0
    Tenes algún tipo de QoS en el server ? mirá que el trafico VOIP tenes que matchearlo como prioritario para que sea fluida la conversación.


    gamba47
     
  9. jcastellanos

    Joined:
    Feb 10, 2009
    Messages:
    2,404
    Likes Received:
    0
    en ocaciones me a tocado que agarran el puerto 4040 o esos rangos y ya o sale la llamada, siempreaperturo esos puertos UDP, aunque la teoria dice que del 560 al 6000 es sufucuente.

    saludos
     

Share This Page