Forum Discussion
Eric_27859
Nimbostratus
Jul 29, 2011X-Forwarded-For and Route Domains issue with '%'
Hello,
I'm using the header X-Forwarded-For to tell the server the remote client IP (using AutoMap in the Virtual Server). When a Route Domain is involved, all the IPs are written with this format "IP%RouteDomainID". I've searched in the Wiki for IP::client_addr and the IP::addr ussage and didn't found how to extract in an easy manner the IP without the Route Domain. I also tried to use TCL string last, string trim and another string functions but without success.
Would you give me a hint about how should I get only the IP without the route domain?
Thank you in advance!
10 Replies
- The_Bhattman
Nimbostratus
Hi Eric,
You can do this in an irule. Specifically split command with a string and scan command. You can find these commands on the following link http://www.tcl.tk/man/tcl8.4/TclCmd/contents.htm
I hope this helps,
Bhattman - Kevin_Davies_40
Nacreous
I assume you want the X-Forwarded-For address updated yes? Try this and let me know how it goes.
when HTTP_REQUEST {
HTTP::header replace {X-Forwarded-For} [ getfield [HTTP::header {X-Forwarded-For}] {%} 1 ]
} - Kevin_Davies_40
Nacreous
I assume you want the X-Forwarded-For address updated yes? Try this and let me know how it goes.
when HTTP_REQUEST {
HTTP::header replace {X-Forwarded-For} [ getfield [HTTP::header {X-Forwarded-For}] {%} 1 ]
} - The_Bhattman
Nimbostratus
HI Jarvil,
Yes sorry about that. I, for some reason, misunderstood your question.
Yes your correct taht HTTP::header command along with getfield will work
Here is the typical code where you insert the field instead of replace itwhen HTTP_REQUEST { HTTP::header insert X-Forwarded-For [getfield [IP::client_addr] "%" 1] }
Bhattman - Kevin_Davies_40
Nacreous
Hi Bhattman,
If he is already using the header X-Forwarded-For tcp profile option as stated, wouldn't the HTTP::header insert leave him with a duplicate header?
Regards
Jarvil - The_Bhattman
Nimbostratus
Hi Jarvil,
Good question. I never tested it with the option turned on so, I suppose either you see 2 values or just one.
Bhattman - Kevin_Davies_40
Nacreous
You will see two X-Forwarded-For values as I just tested it. So the best solution is likely...
when HTTP_REQUEST {
HTTP::header replace X-Forwarded-For [getfield [IP::client_addr] "%" 1]
} - Eric_27859
Nimbostratus
Sorry about my absence.
The key about my problem is "getfield" command that I wasn't aware of. I need to insert the HTTP header X-Forwarded-For, but as Jarvil pointed right, maybe this header is coming yet within the original request arriving to F5. In that case I would rather replace the header value.
If the server log supports it, I will concatenate the arriving X-Forwarded-For value with the new one, separating with a coma, but I think that this maybe is not necessary regarding the actual server logs.
Thank you all for your help!! - Eric_27859
Nimbostratus
Sorry about my absence.
The key about my problem is "getfield" command that I wasn't aware of. I need to insert the HTTP header X-Forwarded-For, but as Jarvil pointed right, maybe this header is coming yet within the original request arriving to F5. In that case I would rather replace the header value.
If the server log supports it, I will concatenate the arriving X-Forwarded-For value with the new one, separating with a coma, but I think that this maybe is not necessary regarding the actual server logs.
I will try this and update how this goes.
Thank you all for your help!! - Kevin_Davies_40
Nacreous
maybe this header is coming yet within the original request arriving to F5
Actually its coming from the X-Forward-For setting in your HTTP profile whiich adds the header for you. Hence we need to update it and not add another one.
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)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