Tunel IPSec no se mantiene levantado



  • Hola a todos,
    tengo un pequeño problema. He configurado en varios equipos PFsense un túnel IPSec contra otros equipos (Cisco) y contra otros PFSense. Al ponerlos en marcha todo funciona correctamente pero pasado el tiempo configurado en las diferentes fases (24h) se desconecta y tengo todos los días que volver a levantarlos. Cuando están levantados funciona correctamente.
    Alguien me puede ayudar con este problema, como poder tener los túneles levantados sin que se caigan constantemente al cumplir el "time" programado.
    Me es un poco urgente solucionarlo.

    Un saludo.



  • Yo tengo un problema "parecido" entre varios pfsense, por las pruebas que he realizado en mi caso el problema viene cuando tengo vpns ipsec y openvpn. En mi caso todavia sigo investigando que es lo que pasa para que la phase 2 de una de las vpn ipsec se quede muerta cada 4 o 5 horas.

    Si te urge arreglarlo reinicia el servicio ipsec con cron



  • Hola,
    si ese es mi caso, en la phase 2 es la que se queda muerta y hay que volver a levantarlo manualmente de nuevo. He puesto la casilla de un ping continuo pero aun así tampoco lo evita.



  • Hola

    Doc de pfSense sobre problemas y su resolución en IPsec:

    https://doc.pfsense.org/index.php/IPsec_Troubleshooting

    Si el problema fuese que el servicio IPsec cae, con el paquete watchdog, se le pueden añadir servicios para ser monitorizados y si se encuentras caidos los levante watchdog

    Salu2



  • La cosa es mas "jodida" el watchdog ni se entera por que el servicio esta levantado y funciona (los otros tuneles van bien)

    No estoy todavía en disposición de dar mas información por que sigo analizando los log. Y me esta costando encontrar el fallo.

    En mi caso lo único que he descubierto es el el open-vpn tiene algo que ver. Si paro los server open-vpn el ipsec no cae, pero las redes ipsec y openvpn no tienen absolutamente nada que ver.

    En los log y en la configuración no he encontrado todavía nada que explique por que pasa eso, tengo todavía que recabar mucha mas información antes.

    En mi caso tengo la sospecha de que las rutas que se propagan por ospf entre los tuneles open-vpn puedan hacer algún conflicto con el ipsec. Pero por ahora no es mas que una sospecha.

    Lo he comentado por si ha gts le podia ayudar a acotar el problema.

    Cuando encuentre de donde viene el fallo lo posteare. Un saludo



  • Hola.

    Sí, watchdog sólo vigila los servicios que se le añadan a monitorizar, no el estado de los túneles de IPSec (up/down).

    Esperamos tu solución de "convivencia" entre OpenVPN e IPSec.

    Por cierto el subforo de IPSec, por si buscando ahí, encuentras alguna solución:

    https://forum.pfsense.org/index.php?board=16.0

    Salu2



  • Hola

    Probad este script y me contais si va bien (no tengo ahora un tunel IPSec para probar)

    El script se ejecutaria creando un cron (cada x horas) con la orden:

    /bin/sh /path/MonitorIPSEC.sh
    

    Donde path es la carpeta o rutas de carpetas, donde alojeis el script
    Y lo que haces es: monitoriza que si no hay ningún tunel IPSec levantado, entonces los levanta

    El código de MonIPSEC.sh

    
    #!/bin/sh
    # ref # https://forum.pfsense.org/index.php?topic=112463.0
    #########################
    # by @javcasta - 2016 https://javcasta.com/
    # MonitorIPSEC.sh
    # Create cron with: /bin/sh /path/MonitorIPSEC.sh ;every x hours
    #########################
    
    # Script to be executed via cron every x hours
    # Script para ser ejecutado vía cron cada x horas
    
    # Monitors that if there is no IPSec tunnel raised, then it raises them
    # monitoriza que si no hay ningún tunel IPSec levantado, entonces los levanta
    
    ISDOWN=0
    #If none conexion then UP conexions - Si no hay ninguna conexión, levantar conexiones
    ISDOWN=$(/usr/local/sbin/ipsec status | grep -c none)
    if [ $ISDOWN -eq 1 ]; then
    	for CONEXION in $(/usr/local/sbin/ipsec status | egrep "con[123456789]" | cut -d"{" -f1 | sort -u); do
    		/usr/local/sbin/ipsec up ${CONEXION}
    	done
    fi
    
    

    Salu2



  • Funciona de PM. :-) ahora queda saber por que falla.



  • Retiro no me funciona :-( he esperado al al fallo para ejecutar el script no va

    Esto es el ipsec status funcionando

    /usr/local/sbin/ipsec status
    Shunted Connections:
      bypasslan:  192.168.200.0/24|/0 === 192.168.200.0/24|/0 PASS
    Routed Connections:
        con2003{2615}:  ROUTED, TUNNEL, reqid 93
        con2003{2615}:  192.168.199.0/24|/0 === 192.168.240.0/24|/0
        con2002{2614}:  ROUTED, TUNNEL, reqid 92
        con2002{2614}:  192.168.200.0/24|/0 === 192.168.241.0/24|/0
        con2001{2613}:  ROUTED, TUNNEL, reqid 91
        con2001{2613}:  192.168.200.0/24|/0 === 192.168.240.0/24|/0
        con2000{2612}:  ROUTED, TUNNEL, reqid 90
        con2000{2612}:  192.168.201.0/24|/0 === 192.168.240.0/24|/0
        con4000{2611}:  ROUTED, TUNNEL, reqid 104
        con4000{2611}:  192.168.200.0/24|/0 === 192.168.229.0/24|/0
        con1000{2610}:  ROUTED, TUNNEL, reqid 7
        con1000{2610}:  192.168.200.0/24|/0 === 192.168.230.0/24|/0
    Security Associations (3 up, 0 connecting):
        con1000[56]: ESTABLISHED 2 hours ago, 192.168.1.10[oficina_madrid]…AA.BB.CC.DD[oscar_rozas]
        con1000{2587}:  INSTALLED, TUNNEL, reqid 7, ESP in UDP SPIs: c03d24d0_i c0ed72df_o
        con1000{2587}:  192.168.200.0/24|/0 === 192.168.230.0/24|/0
      ->  con4000[58]: ESTABLISHED 3 seconds ago, 192.168.1.10[oficina_madrid]…AA.BB.CC.DD[oscar_villanueva]
      ->  con4000{2618}:  INSTALLED, TUNNEL, reqid 104, ESP in UDP SPIs: cfcXXXXb_i c7XXXX1_o
      ->  con4000{2618}:  192.168.200.0/24|/0 === 192.168.229.0/24|/0
        con2000[57]: ESTABLISHED 92 minutes ago, 192.168.1.10[oficina_madrid]…AA.BB.CC.DD[oficina_nueva]
        con2001{2595}:  INSTALLED, TUNNEL, reqid 91, ESP in UDP SPIs: c5XXXX_i cd8XXXX_o
        con2001{2595}:  192.168.200.0/24|/0 === 192.168.240.0/24|/0
        con2000{2596}:  INSTALLED, TUNNEL, reqid 90, ESP in UDP SPIs: c4eXXXX9_i cXXXXf5_o
        con2000{2596}:  192.168.201.0/24|/0 === 192.168.240.0/24|/0
        con2002{2604}:  INSTALLED, TUNNEL, reqid 92, ESP in UDP SPIs: ccfXXXX_i c14XXXX4_o
        con2002{2604}:  192.168.200.0/24|/0 === 192.168.241.0/24|/0
        con2003{2605}:  INSTALLED, TUNNEL, reqid 93, ESP in UDP SPIs: c6eXXXX2a_i c6XXXX6_o
        con2003{2605}:  192.168.199.0/24|/0 === 192.168.240.0/24|/0

    Y esto cuando falla:

    /usr/local/sbin/ipsec status
    Shunted Connections:
      bypasslan:  192.168.200.0/24|/0 === 192.168.200.0/24|/0 PASS
    Routed Connections:
        con2003{2615}:  ROUTED, TUNNEL, reqid 93
        con2003{2615}:  192.168.199.0/24|/0 === 192.168.240.0/24|/0
        con2002{2614}:  ROUTED, TUNNEL, reqid 92
        con2002{2614}:  192.168.200.0/24|/0 === 192.168.241.0/24|/0
        con2001{2613}:  ROUTED, TUNNEL, reqid 91
        con2001{2613}:  192.168.200.0/24|/0 === 192.168.240.0/24|/0
        con2000{2612}:  ROUTED, TUNNEL, reqid 90
        con2000{2612}:  192.168.201.0/24|/0 === 192.168.240.0/24|/0
        con4000{2611}:  ROUTED, TUNNEL, reqid 104
        con4000{2611}:  192.168.200.0/24|/0 === 192.168.229.0/24|/0
        con1000{2610}:  ROUTED, TUNNEL, reqid 7
        con1000{2610}:  192.168.200.0/24|/0 === 192.168.230.0/24|/0
    Security Associations (3 up, 0 connecting):
        -> con4000[55]: ESTABLISHED 7 hours ago, 192.168.1.10[oficina_madrid]…AA.BB.CC.DD[oscar_villanueva]
        con1000[56]: ESTABLISHED 2 hours ago, 192.168.1.10[oficina_madrid]…AA.BB.CC.DD[oscar_rozas]
        con1000{2587}:  INSTALLED, TUNNEL, reqid 7, ESP in UDP SPIs: c03XXXX0_i c0XXXXdf_o
        con1000{2587}:  192.168.200.0/24|/0 === 192.168.230.0/24|/0
        con2000[57]: ESTABLISHED 91 minutes ago, 192.168.1.10[oficina_madrid]…AA.BB.CC.DD[oficina_nueva]
        con2001{2595}:  INSTALLED, TUNNEL, reqid 91, ESP in UDP SPIs: c5XXXXf7_i cd8XXXX9c_o
        con2001{2595}:  192.168.200.0/24|/0 === 192.168.240.0/24|/0
        con2000{2596}:  INSTALLED, TUNNEL, reqid 90, ESP in UDP SPIs: c4eXXXX_i cde1XXXX_o
        con2000{2596}:  192.168.201.0/24|/0 === 192.168.240.0/24|/0
        con2002{2604}:  INSTALLED, TUNNEL, reqid 92, ESP in UDP SPIs: ccfXXXX_i XXXX_o
        con2002{2604}:  192.168.200.0/24|/0 === 192.168.241.0/24|/0
        con2003{2605}:  INSTALLED, TUNNEL, reqid 93, ESP in UDP SPIs: c6eXXXX_i XXXX9e6_o
        con2003{2605}:  192.168.199.0/24|/0 === 192.168.240.0/24|/0



  • Hola

    Cuando funciona, el status muestra:

    Security Associations (3 up, 0 connecting):

    Cuando falla, status muestra:

    Security Associations (3 up, 0 connecting):

    Es decir , lo mismo :). 3 conexiones levantadas y 0 conectando

    Por lo que veo usas 3 túneles, que pfSense denomina:

    con1000
    con2000
    con4000

    ¿Cual de los 3 falla, todos, uno, 2, …, la fase 2 sólo, por lo que veo en logs los túneles están UP? O.o

    Ahora no tengo túneles IPSec para hacer pruebas, en unos días me llega un box nuevo de pfSense y tengo que reestructurar mi red, pero implementaré IPSec y haré pruebas.

    Otra cosa que podrias intentar, es crear un cron cada x horas (o a ejecutar cuando menos tráfico vía tunel haya) que reinicie IPSec

    
    #!/bin/sh
    # by @javcasta - 2016
    # restart ipsec
    /usr/local/sbin/pfSsh.php playback svc stop ipsec
    /usr/local/sbin/pfSsh.php playback svc start ipsec
    sleep 90 # delay de 90sg para dar tiempo a IPSec a reiniciarse
    
    ISDOWN=0
    #If none conexion then UP conexions - Si no hay ninguna conexión, levantar conexiones
    ISDOWN=$(/usr/local/sbin/ipsec status | grep -c none)
    if [ $ISDOWN -eq 1 ]; then
    
    	for CONEXION in $(/usr/local/sbin/ipsec status | egrep "con[123456789]" | cut -d"{" -f1 | sort -u); do
    		/usr/local/sbin/ipsec up ${CONEXION}
    	done
    fi
    
    

    Pero lo ideal seria saber si caen todos los túneles, todo el servicio , uno, etc … hmmm, sin hacer pruebas reales estoy dando palos de ciego. Te vuelvo a remitir al doc https://doc.pfsense.org/index.php/IPsec_Troubleshooting

    Salu2



  • Hola,
    En esto soy nuevo. Me podéis indicar como poder subir ese  script o algún manual de como hacerlo.
    También quería comentar que la versión de PFsense que uso es la 2.2.1-RELEASE, es la misma que os pasa a vosotros o tenéis alguna mas avanzada?
    No se si hubiese alguna versión mas nueva que pueda corregir el problema.

    Un saludo.



  • Hola

    En firewalls prefiero usar la ver más actualizada, para pfSense: 2.3.2_1 = 2.3.2-RELEASE-p1

    Para crear un fichero en pfSense, puedes usar en Diagnostics > edit file (si no existe lo crea) copias y pegas el contenido y lo guardas con nombre y extension, lo puedes guardar en la raiz ( en / ) o en una carpeta. Para crear la carpeta /scripts , desde Diagnostics > command prompt > Execute shell command > mkdir /scripts , y luego puedes subir el fichero con Upload File o como citaba antes con copy/paste en edit file.

    Pero, para mi  lo mejor es trabajar directamente con la shell (sshd enable) y usar el comando para copiar en remoto a local y de local a remoto: scp

    Salu2



  • Hola,
    Gracias por la información que me has facilitado.
    Me puedes dar la sintaxis del comando CRONTAB para programar la tarea cada cierto tiempo todos los dias del año.
    Se puede meter el comando vía web o hay que hacerlo vía shell.

    Un saludo.



  • Hola

    @gts:

    Hola,
    Gracias por la información que me has facilitado.
    Me puedes dar la sintaxis del comando CRONTAB para programar la tarea cada cierto tiempo todos los dias del año.
    Se puede meter el comando vía web o hay que hacerlo vía shell.

    Un saludo.

    En pfSense para programar una tarea: Usa el paquete Cron (instalalo si no lo tienes instalado) y define los cron vía GUI. En el menú: Services > Cron

    Nota: En un cron en pfSense cualquier comando o llamada a un script se debe indicar el path completo

    Salu2



  • Hola,
    lo hemos subido pero nos ha tirado el túnel y al levantarlo manualmente había un problema, el túnel estaba funcionando pero no podíamos llegar desde una red a la otra. por dentro del túnel no dejaba trabajar.

    Otra cosa, al actualizar la versión, este problema se corrige lo habéis comprobado. Voy a actualizar la versión por si funcionase mejor.
    Para hacerlo, la versión de donde la bajo y lo puedo realizar en remoto?

    Un saludo.



  • Hola

    @gts:

    Hola,
    lo hemos subido pero nos ha tirado el túnel y al levantarlo manualmente había un problema, el túnel estaba funcionando pero no podíamos llegar desde una red a la otra. por dentro del túnel no dejaba trabajar.

    Otra cosa, al actualizar la versión, este problema se corrige lo habéis comprobado. Voy a actualizar la versión por si funcionase mejor.
    Para hacerlo, la versión de donde la bajo y lo puedo realizar en remoto?

    Un saludo.

    https://doc.pfsense.org/index.php/Upgrade_Guide

    Salu2



  • Hola

    Tienes habilitado el

    Dead Peer Detection - en Phase 1?



  • Hola,
    si, lo tengo activado con la configuración siguiente:

    10 seg
    5 retries

    un saludo.