Forum Discussion

mrlopez's avatar
mrlopez
Icon for Altocumulus rankAltocumulus
Oct 24, 2023

Ayuda Irule DROP y log

Estimados,

ante todo disculpa por escribir en español, mi ingles es muy malo.

Actualmente tengo un Irule para que haga un drop cuando le llega una peticion a un path en particular:

when HTTP_REQUEST {
if {[HTTP::path] equals "/zzz/xxxx/zzz"}{
drop
return
}
}

 

La cual tiene mucho MACH y verifique que la misma funciona correctamente, lo que estoy necesitando es poder hacer que cada vez que haga un mach agrege la informacion a un archivo de log, necesito logear url completa e IP

esto es posible?

desde ya muchas gracias por su tiempo

  • Hola mrlopez,

    Perdón por mi malo Español y la traducción.

    Creo que desea registrar la URL y la dirección IP cuando la solicitud coincida con la declaración if.

    when HTTP_REQUEST {
    	if { [HTTP::path] equals "/zzz/xxxx/zzz" } {
    		log local0. "IP-del-cliente: [IP::client_addr] | URL: [HTTP::host][HTTP::uri]"
    		drop
    		return
    	}
    }

    Después de agregar el comando de "log local0." en iRule, puede encontrar los registros en el archivo /var/log/ltm.

     

     

    • mrlopez's avatar
      mrlopez
      Icon for Altocumulus rankAltocumulus

      Hola, muchas gracias por la ayuda, pero algo no esta funcionando como corresponde.

      ej: si abro un navegador y pongo la url completa https://xxx.xxx/xxxx/xxxx aparece en el log la informacion, ahora si el llamado lo hago desde el codigo de la aplicacion (veo el hit en la irule) pero no tengo ninguna entrada en el log.

  • Hi Mrlopez,

    If you would like logs the traffic please follow IRULES below

    when HTTP_REQUEST {
    if {[HTTP::path] equals "/zzz/xxxx/zzz"}{

    log local0. "Client IP: [IP::client_addr]-[HTTP::path]"
    drop
    return
    }
    }

     

    ##########

    If posible please using external syslog server for store more logs

    Step1: Create Pool for external syslog server

    Step2: Create IRULS for send HSL Logs

    when CLIENT_ACCEPTED {
    set hsl [HSL::open -proto UDP -pool syslog_server_pool]
    }

    when HTTP_REQUEST {
    if {[HTTP::path] equals "/zzz/xxxx/zzz"}{

    HSL::send $hsl "<190> Client IP: [IP::client_addr]-[HTTP::path]\n"
    drop
    return
    }
    }

    Hope this information will help you