Forum Discussion

Ellison_Zhang_2's avatar
Ellison_Zhang_2
Icon for Nimbostratus rankNimbostratus
May 11, 2016

HTTPS monitor does not work as expected.(what method does HTTPS monitor use to check pool member health)

Hi All,

 

I have a pool with two node which I am using HTTPS monitor to check node health. Monitor mark node down due to failed to receive expected string "OK". but I can use curl -k https:/xxx.xxx.xxx.xxx:8175/management/?action=health to get expected string. Can anyone help me to check what's wrong?

 

PS: F5 version(11.3.0)

 

ltm monitor https aw_https_monitor { cipherlist DEFAULT:+SHA:+3DES:+kEDH compatibility enabled defaults-from /Common/https destination : interval 5 partition Platform_Services recv OK send "GET /management/\?action=health\r\n" time-until-up 0 timeout 16 }

 

When I do a curl. I can get expected string "OK".

 

curl -vv -k * About to connect() to x.x.x.x port 8175 (0) * Trying x.x.x.x... connected * Connected to x.x.x.x (x.x.x.x) port 8175 (0) * successfully set certificate verify locations: * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * SSLv3, TLS handshake, Client hello (1): * SSLv3, TLS handshake, Server hello (2): * SSLv3, TLS handshake, CERT (11): * SSLv3, TLS handshake, Server finished (14): * SSLv3, TLS handshake, Client key exchange (16): * SSLv3, TLS change cipher, Client hello (1): * SSLv3, TLS handshake, Finished (20): * SSLv3, TLS change cipher, Client hello (1): * SSLv3, TLS handshake, Finished (20): * SSL connection using AES128-SHA * Server certificate: * subject: C=Unknown; ST=Unknown; L=Unknown; O=localhost; OU=localhost; CN=localhost * start date: 2009-03-27 18:42:02 GMT * expire date: 2009-06-25 18:42:02 GMT * common name: localhost (does not match 'x.x.x.x') * issuer: C=Unknown; ST=Unknown; L=Unknown; O=localhost; OU=localhost; CN=localhost * SSL certificate verify result: self signed certificate (18), continuing anyway.

 

GET /management/?action=health HTTP/1.1 User-Agent: curl/7.19.7 (i686-redhat-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8y zlib/1.2.3 libidn/0.6.5 Host: x.x.x.x:8175 Accept: /

 

< HTTP/1.1 200 OK < Content-Type: text/plain;charset=iso-8859-1 < Content-Length: 3 < OK * Connection 0 to host x.x.x.x left intact * Closing connection 0 * SSLv3, TLS alert, Client hello (1):

 

And I also used ssldump to read the package. It seems node doesn't answer client hello. here is the output of ssldump.

 

curl -vv -k * About to connect() to x.x.x.x port 8175 (0) * Trying x.x.x.x... connected * Connected to x.x.x.x (x.x.x.x) port 8175 (0) * successfully set certificate verify locations: * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * SSLv3, TLS handshake, Client hello (1): * SSLv3, TLS handshake, Server hello (2): * SSLv3, TLS handshake, CERT (11): * SSLv3, TLS handshake, Server finished (14): * SSLv3, TLS handshake, Client key exchange (16): * SSLv3, TLS change cipher, Client hello (1): * SSLv3, TLS handshake, Finished (20): * SSLv3, TLS change cipher, Client hello (1): * SSLv3, TLS handshake, Finished (20): * SSL connection using AES128-SHA * Server certificate: * subject: C=Unknown; ST=Unknown; L=Unknown; O=localhost; OU=localhost; CN=localhost * start date: 2009-03-27 18:42:02 GMT * expire date: 2009-06-25 18:42:02 GMT * common name: localhost (does not match 'x.x.x.x') * issuer: C=Unknown; ST=Unknown; L=Unknown; O=localhost; OU=localhost; CN=localhost * SSL certificate verify result: self signed certificate (18), continuing anyway.

 

GET /management/?action=health HTTP/1.1 User-Agent: curl/7.19.7 (i686-redhat-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8y zlib/1.2.3 libidn/0.6.5 Host: x.x.x.x:8175 Accept: /

 

< HTTP/1.1 200 OK < Content-Type: text/plain;charset=iso-8859-1 < Content-Length: 3 < OK * Connection 0 to host x.x.x.x left intact * Closing connection 0 * SSLv3, TLS alert, Client hello (1):

 

So, What method does F5 use for HTTPS monitor? and How deos HTTPS monitor works?

 

8 Replies

  • Hello,

     

    In your monitor, you just send a request with an uri, that's it. When using curl, you have a set of headers automatically filled : host, User-Agent, etc.

     

    maybe try to fil the following send option : GET /management/\?action=health 1.0\r\nHost: myhostname\r\nUser-Agent: curl/7.19.7\r\nConnection: Close\r\n

     

    • Ellison_Zhang_2's avatar
      Ellison_Zhang_2
      Icon for Nimbostratus rankNimbostratus
      Hi Yann, I tried you method. still no luck. you missed HTTP before 1.0\r\n.
    • Yann_Desmarest's avatar
      Yann_Desmarest
      Icon for Cirrus rankCirrus
      Hi, You are right, i forget HTTP. Sorry for that. Maybe, there is a cipher issue on the monitor.
    • Ellison_Zhang_2's avatar
      Ellison_Zhang_2
      Icon for Nimbostratus rankNimbostratus
      Thanks Yann. I finally fixed this issue myself by changing the Cipher Suite to "AES128-SHA" instead of DEFAULT one.
  • Hello,

     

    In your monitor, you just send a request with an uri, that's it. When using curl, you have a set of headers automatically filled : host, User-Agent, etc.

     

    maybe try to fil the following send option : GET /management/\?action=health 1.0\r\nHost: myhostname\r\nUser-Agent: curl/7.19.7\r\nConnection: Close\r\n

     

    • Ellison_Zhang_2's avatar
      Ellison_Zhang_2
      Icon for Nimbostratus rankNimbostratus
      Hi Yann, I tried you method. still no luck. you missed HTTP before 1.0\r\n.
    • Yann_Desmarest_'s avatar
      Yann_Desmarest_
      Icon for Nacreous rankNacreous
      Hi, You are right, i forget HTTP. Sorry for that. Maybe, there is a cipher issue on the monitor.
    • Ellison_Zhang_2's avatar
      Ellison_Zhang_2
      Icon for Nimbostratus rankNimbostratus
      Thanks Yann. I finally fixed this issue myself by changing the Cipher Suite to "AES128-SHA" instead of DEFAULT one.