Forum Discussion
Raymond_Feng_97
Jul 20, 2006Historic F5 Account
how to persistant client when using bigip load balance firepass
There is two problem when using bigip load balance firepass:
1> For ADSL client, when user logon the firepass, his adsl line dropped and reconnected adsl, so the client ip address had been changed. If the client connect to only one firepass,though the client address had been changed, but the client SSL ID don't change, so our firepass will let the client connected without re-logon. When using bigip loadbalance firepass, we can not using sourceIP persistant , only SSL persistant can let client to connect to original firepass.
2> For IE clients , when they logon firepass, and wait some minutes, then click VPN tunnel.At this time, the client SSL ID may change ( when they logon firepass using SSL-ID aaa, they establish VPN tunnel may using SSL-ID bbb). When the client connect directly to firepass, since when IE change SSL-ID ,there will be some comunication between the client and the firepass, there won't be any problem. But when we are using bigip load balance firepass, though client still comunicate with the original firepass when he logon , but when he use new SSL-id connect to the VS at bigip, if our bigip using SSL-ID persistant , we will treat this as one new user and send to another firepass. For this problem , we need to use source-addr as persistant method.
According to above, when we use bigip to load balance firepass, we need combine sourceIP and SSL persistant together, just because these two case may happen at the same time. That means, we need one irules to do persistant :
1> when client new connection come in , we record both ssl-id and source-ip at persistant list;
2> when client connection come in again, we first search persistant list for SSL-ID. If SSL-ID was in the list, we send the client to persist server. This can resolve ADSL reconnect user.Second, if there is no SSL-ID in the list, we must search sourceIP in the persist list. If we find in the list, we send the client to persist server . If no , we then do loadbalance.
That's what irules we need!!
Somebody said we can use bigip v9 prefer and fallback persistant, and set prefer persistant to be ssl , and fallback persistant to be sourceAddr. But, actually it can't resolve problem1, just because it's record ssl OR sourceaddr , not ssl AND sourceAddr.
- Nat_Thirasuttakorn
Employee
this might be too late reply... - Raymond_Feng_97Historic F5 AccountThanks, NAT
- blacksan_10396
Nimbostratus
We are also migrating our firepass from internal clustering to bigip and have the same issue with roaming SSL VPN users over multiple IP Addresses. - Nat_Thirasuttakorn
Employee
my friend from australia gave me feedback to enhance this i-rule (he did the irule for f/p ssl offload quite sometime ago but did not post to it to the forum). - blacksan_10396
Nimbostratus
This last i-rule is passing all of our bigip/firepass testing except one minor one. - Joel_Moses
Nimbostratus
I've got a bit of a modification to the BigIP LTM Firepass loadbalancing/offload iRule that allows you to enable "Selective" compression (if you are licensed for encryption) on the HTTP profile the VS uses. This effectively compresses all text/ mime types and javascripts that come through Firepass; in our testing, it can speed up pre-login sequences to high-latency clients (e.g., aircards) by as much as 30%.when SERVER_CONNECTED { persist add source_addr [IP::client_addr] $::tmout2 } when RULE_INIT { set ssl_handshake 0 Persistence timeout if MRHSession cookie is present set ::tmout 3600 Persistence timeout if no cookie is found. Source IP persistence is used. set ::tmout2 600 } when CLIENTSSL_HANDSHAKE { set ssl_handshake 1 } when CLIENTSSL_CLIENTCERT { set ssl_handshake 1 } when HTTP_REQUEST { set http_disable 0 set sid [HTTP::cookie "MRHSession"] Handle cookieless clients if { $sid == "" } { set sid [findstr [HTTP::uri] "S=" 2 "&"] } if { $ssl_handshake == 1 } { HTTP::header replace "BIGIP" "on" HTTP::header replace "BIGIP_SSL_CIPHER" "[SSL::cipher name]" HTTP::header replace "BIGIP_SSL_CIPHER_USEKEYSIZE" "[SSL::cipher bits]" HTTP::header replace "BIGIP_SSL_PROTOCOL" "[SSL::cipher version]" set ssl_handshake 0 } if { [HTTP::uri] starts_with "/myvpn" } { set sid [findstr [HTTP::uri] "sess=" 5 "&"] set http_disable 1 } if { [HTTP::uri] starts_with "/tunnel" } { set sid [findstr [HTTP::uri] "sess=" 5 "&"] set http_disable 1 } if { $sid != "" } { persist uie $sid $::tmout } else { persist source_addr [IP::client_addr] $::tmout2 } } when HTTP_REQUEST_SEND { if { $http_disable != 0 } { clientside {HTTP::disable} } else { clientside {COMPRESS::enable} } } when HTTP_RESPONSE { set sid [HTTP::cookie "MRHSession"] if { $sid != "" && $sid != "deleted" } { persist add uie $sid $::tmout } }
Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects