Lowest DNS TTL value

Dear Experts.

     I would like to know the minimum number of TTL of dns. Can I define it lower than 30 seconds.
What's the exact lowest number of TTL ?
Who is Participating?
lrmooreConnect With a Mentor Commented:
Whie zero is possible, it is not practical except in very specific circumstances.
Background on minimum ttl values.

"For example, SOA records are always distributed
                with a zero TTL to prohibit caching.  Zero values can
                also be used for extremely volatile data."
Zero is the lowest
I just did one last week at 1 second - it worked like a champ. I don't know this for fact, but I imagine that if you set it for 0 seconds, you are telling other DNS servers to not cache the information.

Worried about phishing attacks?

90% of attacks start with a phish. It’s critical that IT admins and MSSPs have the right security in place to protect their end users from these phishing attacks. Check out our latest feature brief for tips and tricks to keep your employees off a hackers line!

Some older BIND nameservers enforce a minimum TTL on received DNS information, even if the TTL is zero, and client dns resolvers won't respond that fast if something's in their cache. It's considered bad form for public DNS and most commercial DNS providers will be hard pressed to set it under an hour. In-house if you are hitting the authoritative server anyway, doesn't make much difference.
siratorAuthor Commented:
Dear Sirs,

    After I tried and I always obtained unstable TTL. Let me explain, suppose I obtained A record ( www.abc.com ) to my labtop as I showed it with "ipconfig/displaydns" At first it is 30 seconds as defined in the zone database as indicated following.

$TTL 30
@       IN      SOA     ns.abc.com.  postmaster.abc.com. (
                        2003102401 ; serial
                        28800 ; refresh
                        7200 ; retry
                        604800 ; expire
                        30 ; ttl

@      IN      NS      ns.abc.com.
www              IN      A

subsequently, after the time was used up, and I received another A record, but it turned into 86400 for www.abc.com.

Thus, I changed my name server to other dns servers, the similar result happened. Sometimes the TTL was not 86400 or 30 seconds, sorry I can't recognize it.

What's wrong with my configuration or zone format ?
Please advise.
The local DNS resolver defaults to 86400 on a hit and 900 on a miss:
Value name: MaxCacheTtl
Data type: REG_DWORD
Default value: 86400 seconds
Value name: MaxNegativeCacheTtl
Data type: REG_DWORD
Default: 900 seconds (300 for XP I think)

Obtained a zone record?
Are you authoritative for www.abc.com?
If your server is authoritative for a domain and you make a change to the TTL for from 86400 to 30 seconds in that domain's zone record and reload BIND:
You query nameserver1 - it has no record - it looks up and gets the TTL from your zone record. If it's unreasonably small it SHOULD use it, it may not, but it probably will.
In 15 seconds it will be 15 seconds on that server, etc.

Meanwhile you query nameserverB - it resolved your domain 43200 seconds ago so it's TTL is 43200. Since it is not authoritative it looks up records for you domain and caches them until the TTL expires. It has no way of knowing you changed the TTL.

Now you query nameserverIII - it resolved your domain 86000 seconds ago. TTL? 400

What exactly are you trying to do?

siratorAuthor Commented:
The reason I defined $TTL 30 in the zone database due to the frequently change in IP address,

Let me explain again.
- Suppose, the "abc.com" is under my control. I can manage this domain name. thus I modified TTL as the above to 30 seconds.

Later, I tried each to dial to 3 local ISP and I will then be provided the name server IP from ISPs, right ?

- Assume that I ping to www.abc.com and I obtained the ip address "" after resolving name with the name server of each ISPs.

- Suddenly I command "ipconfig/displaydns" to view the "www.abc.com" record. In fact it should be 30 seconds as defined in the Zone database. It did like that at the first time. So I waited until 30 seconds gone, then I ping it again to cache in my labtop, but it was not that number. It fluctuated to be other number such as 86400, etc ?

This is what I'm doing.
You're looking at your resolver's cache, not the DNS server.
change the default value in the registry entry below to 0

Value name: MaxCacheTtl
Data type: REG_DWORD
Default value: 86400 seconds
BTW you already closed this question
Please open a new question
siratorAuthor Commented:
Dear chicagoan, I will open a new question. And Thanks for your support.
Can you continue to clarify me a bit about DNS anyway I will post in the question.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.