Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    DNS Cache that Autoupdates

    Scheduled Pinned Locked Moved DHCP and DNS
    3 Posts 3 Posters 1.1k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • E
      ericnix
      last edited by

      This may be either a dumb question or something that isn't possible.

      I'm about to order pfSense hardware to change my router.

      I'm wanting to maintain my own DNS server and cache perhaps the top 1-5,000 domains. I want the database to update every 24-48 hours using Google or some other DNS database.

      Is this possible?  My goal is to reduce latency by not needing to send the DNS request to Google when the web page is loaded.

      1 Reply Last reply Reply Quote 0
      • stan-qazS
        stan-qaz
        last edited by

        Since the DNS entries are cached once fetched and they persist for some period of time (based on the expire time the DNS server you query sets) a very simple way to accomplish this is to just do a name lookup of each host you want cached. If you want to be simple just use a single list, fancier use multiple lists based on the expire times. Dig will give you the expire times to play with and if run in batch mode will process your lists.

        ; <<>> DiG 9.9.6-P1 <<>> pfsense.com
        ;; global options: +cmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40735
        ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
        
        ;; OPT PSEUDOSECTION:
        ; EDNS: version: 0, flags:; udp: 4096
        ;; QUESTION SECTION:
        ;pfsense.com.                   IN      A
        
        ;; ANSWER SECTION:
        pfsense.com.            35588   IN      CNAME   pfsense.org.
        pfsense.org.            300     IN      A       208.123.73.69
        
        ;; Query time: 153 msec
        ;; SERVER: 172.16.0.1#53(172.16.0.1)
        ;; WHEN: Sun Jun 12 18:52:09 MST 2016
        ;; MSG SIZE  rcvd: 81
        

        So for the pfsense sites as an example, pfsense.com shows 35588 while pfsense.org shows  300 seconds when checked from my pfSense system which is served by OpenDNS.com.

        It is a bit more complicated than that in some situations, this has a bit more detail:  http://serverfault.com/questions/179630/how-can-i-see-time-to-live-ttl-for-a-dns-record

        I don't know just how much time you are going to save here since new DNS fetches are only done if the cached record has expired. You will be saving one lookup every X seconds where X is set by the server you query.

        Have you played with NameBench to see how your DNS is performing?  https://code.google.com/archive/p/namebench/

        1 Reply Last reply Reply Quote 0
        • johnpozJ
          johnpoz LAYER 8 Global Moderator
          last edited by

          "I want the database to update every 24-48 hours using Google or some other DNS database. "

          You need to do some more research on how dns caching works..

          While stan tried to go into how ttl works, his example is just bad..  The ttl on cname of pfsense.com is large, while the A record is short..  He did not get that A record from his cache because it would of been something less than 300 and it wouldn't of taken 153 ms to pull it from his cache..

          So here is query that was authoritative

          
          ;; QUESTION SECTION:
          ;pfsense.org.                   IN      A
          
          ;; ANSWER SECTION:
          pfsense.org.            300     IN      A       208.123.73.69
          
          ;; Query time: 31 msec
          ;; SERVER: 192.168.9.253#53(192.168.9.253)
          ;; WHEN: Mon Jun 13 06:10:54 Central Daylight Time 2016
          
          

          Notice how it took 31 msec… I then looked it up again and was 0 msec because it just grabbed it from the cache notice how the ttl has started counting down from the 300

          
          ;; QUESTION SECTION:
          ;pfsense.org.                   IN      A
          
          ;; ANSWER SECTION:
          pfsense.org.            292     IN      A       208.123.73.69
          
          ;; Query time: 0 msec
          ;; SERVER: 192.168.9.253#53(192.168.9.253)
          ;; WHEN: Mon Jun 13 06:11:02 Central Daylight Time 2016
          
          

          Currently pfsense uses unbound as resolvler and not a forwarder out of the box.  But if your using the forwarder dnsmasq or unbound the resolver they both cache.  And items will be cached for the length of their ttl.  This is how dns is designed to work.  There really is little need to pre-populate this cache or update it on any sort of schedule.

          But if you wanted you could turn on the prefetch feature in unbound..

          unboundprefetch.jpg
          unboundprefetch.jpg_thumb

          An intelligent man is sometimes forced to be drunk to spend time with his fools
          If you get confused: Listen to the Music Play
          Please don't Chat/PM me for help, unless mod related
          SG-4860 24.11 | Lab VMs 2.8, 24.11

          1 Reply Last reply Reply Quote 0
          • First post
            Last post
          Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.