Forum Discussion
GTM Translation doesnt work with Generic Host
GTM version 10.2.3. Not VE.
We have a requirement to configure a Generic Host as it is not behind any LB. We need the DNS to resolve to the Public address. The GTM, the real server is residing in DMZ and same subnet as the GTM self IP. We are using private IPs in the DMZ. Natting happens on the firewall.
I add the Generic host to GTM with the following settings.
Address: Public IP (say y.y.y.y)
Translation: Private IP(say x.x.x.x)
Under Virtual Servers
Address: Public IP (say y.y.y.y)
Service Port : 444
Translation: Private IP(say x.x.x.x)
Translation Service Port : 444
Then I create a pool add the VS as a member and use tcp monitoring. the pool and the member shows down with the above settings.
However with the following settings the pool works but Wide IP resolves to the private IP rather than public:
Address: Private IP(say x.x.x.x)
Service Port : 444
Translation:Public IP (say y.y.y.y)
Translation Service Port : 444
But translation works fine on the servers added through the LTMs.
Any help much appreciated.
Regards
3 Replies
- Hamish
Cirrocumulus
I gave up on the translations in GTM. Mainly because it disabled auto discovery of LTM VS's.
I have a quick iRule that does a lookup from several sources against DG's. One to determine which'list' to translate against given the requesting IP (This allows for multiple translations, depending on where the 'client' is in the network) and then a lookup for the specific translation list to decide which IP to actually give back in the resolution.
Although it's for GTM responses, it's actually implemented as an LTM iRule on the system VS created by the GTM listener. You can grab it from the codeshare. It's at https://devcentral.f5.com/wiki/iRules.GTM-Translation.ashx
H - Cisco_Crazy_110
Nimbostratus
Thanks Hamish. I actually tried the following irule as it exactly met my requirements and is working fine. Let me know if there are any issues with this:
when LB_SELECTED {
if { [DNS::rrname] eq "WIDE-IP.xx.com" } {
if { [LB::server addr] equals "10.X.X.X" } {
host 90.Y.Y.Y} elseif { [LB::server addr] equals "10.Y.Y.Y" } {
host 92.Y.Y.Y
}
}
} - Hamish
Cirrocumulus
I'm not sure your iRUle actually does anything... You're checking for the wide IP OK... But then you're testing LD::server... WHich should return a TCL LIST of Pool, nodeaddr and port for the currently selected server. Or if no server selected, the poolname only...
When attached to a GTM VS, I'm not sure what you'll get. But I don't believe you're going to translate the IP address returned to the client... (Unless v10 does something really different from v11 and the docs on devcentral)
H
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)Recent Discussions
Related Content
* 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