I have a DNS server that has a single IP address
configured in its IP Frowarding table. So, if this DNS
server does not have the answer to a DNS request from a
client in its local table, it will proxy on behalf of the
client and send a DNS query to the IP address in the table.
When the reply comes back, the source IP address in the
reply packet at layer-3 is not the same IP address that
the packet was sent to.
This is because the configured forwarding IP belongs to
a "server load balancer" which will receive the DNS query
and send it to one of several DNS servers who can answer
the query. Because the load balancer is not keeping state
nor is it performaing source IP NAT, the packet is sourced
from the actual DNS server that was chosen to get the
packet when it returns to the original DNS server who
could not answer the query.
Because the original DNS server sent the packet to, let's
say 10.0.0.1, but the response comes from 10.0.0.5, will
the original DNS server ignore the response because it
received a reply from an IP address other than "10.0.0.1"?
I have taken traces from client workstations, and they
don't care what IP address the response comes from. All of
our clients have configured DNS entries in their IP stack
to point to a "virtual IP" address on a load balancer and
will receive replies from various DNS boxes just fine.
But, I did not know if the DNS server cared or not. I have
not been able to schedule time to take a trace to know for
sure.
The problem is, whenever the IP Forwarding table is
configured with the "virtual IP address" of the load
balancer, then no one is able to resolve DNS queries that
the original DNS server does not know about. However, when
we configure the REAL IP addresses of the upstream DNS
servers in the IP forwarding table - everything works fine.
Hope this makes sense,
Kim