Forum Discussion

TTOM's avatar
TTOM
Icon for Nimbostratus rankNimbostratus
Nov 22, 2021

iRule proxypass with profilessl

hello,

we are using proxypass irule to change pool when uri parameter change , so when user is hitting a.b.c.com/start it going to defined pool in datagroup and

thats working fine. Now we deploy certificates on servers side to secure traffic between F5 and physcial servers, and unfortunately it doesnt work.

We set on VIP SSL Profile (Server) as profilessl , we defined correctly in ProxyPassSSLProfiles datagroup : POOL -> profilessl , and during accessing a.b.c.com/test it response with : server doesnt send any data. It looks like loop , it finding rule but cannot proceed because we not receiving data.

When we access server directly( avoiding VIP) it respond without issue.

Below debugging from iRule.

    • yes this works, result is weird indeed.

      if you capture do you then see a port 80 request?

      • TTOM's avatar
        TTOM
        Icon for Nimbostratus rankNimbostratus

        hello boneyard , regarding requests to backend server, I see now that it sending clear http request....on firts screenshoot you can see that we hitting VIP on 443 afterwards it redirect to backend server on port 4004 and send there http requests but nothing respond because there is SSL. on second screenshot is debugging from proxypass irule, we can see that its looping after "Removed Accept-Encoding header"

        BR

         

         

         

  • TTOM's avatar
    TTOM
    Icon for Nimbostratus rankNimbostratus

    thank you for interesting of this topic. When I sniff traffic between F5 and physical server it looks like it want use SSL but strange things are happening, because it try negotiate TLS handshake and afterwards server is sending FIN. (we are using port 4004 for this communication ). Worth to mention , when I make this without proxypass its working ...

    • "without proxypass its working" - so, without the iRule?

       

      is your screenshot related to SSL error that you see when iRule is configured? Does it work as expected (ssl too) when you remove iRule? I would argue that in this case, default pool will always be selected (does default pool support SSL?)

       

      What's the output of this command? (replace IP with a member of POOL_SSL)

       

      (echo -e "GET /test/ HTTP/1.1\r\nHost: a.b.c.com\r\nConnection: Close\r\n\r\n";sleep 1) | openssl s_client -connect 10.xxx.yyy.zzz:4004

       

      If your iRule balances between one pool that does not support SSL, and one that does support it, and you applied serverssl profile on Virtual Server, you might want to disable SSL when non-ssl pool is selected:

       

      when SERVER_CONNECTED {

       if {[LB::server port] != 4004 } { # use "AND" statement for additional ports

        SSL::disable

       } 

      }

       

       

  • you see a loop, did you check HTTPS is used now? might it hit a HTTP to HTTPS redirect on the backend perhaps?