I’ve been running the cisco for a bit now and it has an annoying ‘feature’ in that after a while the DNS server stops resolving some sites.
The only suggestion so far is that the router is running low on RAM but that doesn’t seem likely.
For now I have a caching DNS server on my Ubuntu box, but does anyone have any bright ideas?
I’d be inclined to stick with DNS on the Ubuntu box as the router might be running out of cache space i.e. RAM as suggested above.
This link may give you more of a clue but I’d have thought a server rather than router based DNS resolver would perform better – I have the same but with a M$ one rather than a Linux one.
If you have few hosts, you could scrap DNS internally altogether and go for modifying the host file! just a thought!
How can i tell the cache RAM state? ‘sh mem’ produces a lot of info.
The bind9 server on ubuntu does perform better, for sure. I wanted to use DNS so any device on the network just works.
I’ve only got a 2621 to go on which is a different IOS but you could try:
sh mem statistics Head Total(b) Used(b) Free(b) Lowest(b) Largest(b) Processor 8149D820 8124224 4068504 4055720 4050748 3577560 I/O 1C00000 4194304 2182296 2012008 2012008 2011964I’m assuming that if you have no free memory, the Free (b) count would be zero.
Thinking about it logically, the more dns queries you do, the more is going to be held in the DNS table therefore with limited RAM, you will eventually run out of memory as the DNS table will fill up the available space. The router memory is always going to be at a premium anyway as the RAM on a router will be a tenth of what’s likely to be available on the Ubuntu box and its probably got more routines in it to flush the stale records more often.
I’ll have a look. I did try that but nothing stood out as zero.
You’re right about the cache filling, and there only being limited RAM, and I probably push DNS hard with Spamassassin (it does a lot of lookups), but IMO if the cache is full it should look it up from the ISP servers, not return ‘no record found’.
if the cache is full it should look it up from the ISP servers, not return ‘no record found’.
You might need to configure it to lookup to an external box in that case, which is inefficient in terms of bandwidth and probably slower.
A-ha!
But that is what it is configured to do. That’s how if fills the cache in the first place :-).
That’s how I think it should behave too, but it doesn’t, sometimes…
I’ve checked your config over and it seems to be okay as this article will verify.
The obvious thing to do is to try and see if you can get an updated IOS image and see if that solves the problem. Cisco have their dodgy coders as well!
Yep. All the config examples I’ve found say it is right, and it works *for a while*.
I wonder if it’s because I have the advanced IP services image on (I was planning to fiddle with QoS)?
Won’t I need a support contract to get the image?
Anyway, the performance with the Ubuntu bind9 DNS is markedly better, so I might just stick with it.
By the way, here’s the memory state at the moment- though it’s not doing much DNS at the moment:
#sh mem stat Head Total(b) Used(b) Free(b) Lowest(b) Largest(b) Processor 835CF260 65211808 30990508 34221300 27357968 25971972 I/O 7400000 12582912 4036296 8546616 8546616 8546588Well, I’ve got 12.4 24 (T). Might upgrade it…..
Might be worth a punt to see if it fixes it. You’ve got 8 MB free I/O so it shouldn’t be running out of RAM. It could be filling up buffer space I suppose or running out of Stack or heap which used to be a feature of the Mac System 7 (the good old days!), so the memory management may not be that great. I wonder what you would get if you Googled “IOS memory management”? Just a thought.
I’ve had a problem with my Semperon PC on the network recently and I’ve upgraded the XP driver for the network card and forced negotiation to 100 Full duplex which I think has stopped a lot of RX retries between it and the server. I only found it thought by loading a protocol analyser!
I’ve updated the IOS, and changed the DHCP so the DNS is back with the router. Time to wait and see….
Well, looks like a bug in 12.4 20 (T). It’s now working fine as far as I can see.
The code must be missing some routines for scavaging stale records and then referring addresses to the next available resolver or flushing the dns table periodically. I’ve known this with M$ DNS servers but mine seems to hang together quite well probably because its low use compared to a college.
It’s not often you’ll catch me defending Windows server, but IME Win2k3 or 2k DNS is very stable, even under a highish load.
I have the exact same DNS problem as you on my Cisco – although I have a 2600 series. Actually I set it up this way to side step a really annoying ipsec tunnel and NAT interaction that was messing up my DNS servers. The problem I had was with the very same IOS version also. I’m going to try upgrading to see if the problem goes away. Did it fix it for you?
Hi Chris
Yes, it does seem to have fixed it. The problem I have now is getting dynamic dns updates to work…