Technical Forum
Ask questions. Discover Answers.
cancel
Showing results for 
Search instead for 
Did you mean: 

GTM Source IP Redirect to Specific Pools iRule

Mark_Bark_24174
Nimbostratus
Nimbostratus

I'm trying to redirect clients to specific pools based on the clients IP address through an iRule. I created this iRule in the GTM and it seems to be working fine however, I'd like to set client networks in the rule instead of "starts_with" in an effort to keep this rule as short as we add more and more clients. I've tried "equals "10.80.0.0/16" however that didn't seem to work. Anyone have any ideas on what I could do to achieve my goal?

 

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

 

when DNS_REQUEST { if { [IP::client_addr] starts_with "10.80." } { pool pool_10_80 } elseif { [IP::client_addr] starts_with "10.96." } { pool pool_10_96 } elseif { [IP::client_addr] contains "172.27." } { pool pool_172_27 } }

 

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

 

Thanks in advance for any feedback.

 

3 REPLIES 3

Lee_Sutcliffe
Nacreous
Nacreous

You can use

[IP::addr]
so that you may use a CIDR mask notation for the subnet:

https://devcentral.f5.com/wiki/iRules.IP__addr.ashx

when DNS_REQUEST { 
    if { [IP::addr[IP::client_addr]] equals "10.80.0.0/16" } { 
        pool pool_10_80 
    } elseif { [IP::addr[IP::client_addr]] equals "10.96.0.0/16" } { 
        pool pool_10_96 
    } elseif { [IP::addr[IP::client_addr]] equals "172.27.0.0/16" } { 
        pool pool_172_27 
    } 
}

Stanislas_Piro2
Cumulonimbus
Cumulonimbus

GTM never sees real client IP but LDNS IP.

 

if all internal users uses the same DNS server, the GTM will answer based on the DNS server IP.

 

Brian_Achenbaugh
Altocumulus
Altocumulus

Is there a way around this at all? I think this preventing the topology LB from working, from what im reading.