* * * * * A limitation sure, but it sneaks around its own limitations I was reminded by Yesterday's post on DNS (Domain Name Service) [1] that I was playing around with SRV (Service) records, and oh yes, here's a few I set up some time ago: > _http._tcp IN SRV 1 1 8888 lucy > IN SRV 2 10 8888 marvin > IN SRV 2 20 8888 bunny-desktop > IN SRV 2 30 8888 saltmine > So, let's see what I get when I query _http._tcp.roswell.area51. (the “home domain” I use around here): > rcode = 0.000000, > ra = true, > aa = true, > query = false, > ad = false, > rd = true, > cd = false, > tc = false, > id = 1234.000000, > > question = > { > class = "IN", > name = "_http._tcp.roswell.area51.", > type = "SRV", > }, > Okay, so far, this is expected—some DNS flags, and the “question” we asked. Continuing … > answers = > { > [1] = > { > port = 8888.000000, > type = "SRV", > name = "_http._tcp.roswell.area51.", > weight = 30.000000, > target = "saltmine.roswell.area51.", > class = "IN", > ttl = 86400.000000, > priority = 2.000000, > }, > [2] = > { > port = 8888.000000, > type = "SRV", > name = "_http._tcp.roswell.area51.", > weight = 1.000000, > target = "lucy.roswell.area51.", > class = "IN", > ttl = 86400.000000, > priority = 1.000000, > }, > [3] = > { > port = 8888.000000, > type = "SRV", > name = "_http._tcp.roswell.area51.", > weight = 10.000000, > target = "marvin.roswell.area51.", > class = "IN", > ttl = 86400.000000, > priority = 2.000000, > }, > [4] = > { > port = 8888.000000, > type = "SRV", > name = "_http._tcp.roswell.area51.", > weight = 20.000000, > target = "bunny-desktop.roswell.area51.", > class = "IN", > ttl = 86400.000000, > priority = 2.000000, > }, > }, > Okay, these are the answers we were looking for, but wait? What's this? > additional = > { > [1] = > { > type = "A", > name = "lucy.roswell.area51.", > address = "192.168.1.10", > class = "IN", > ttl = 86400.000000, > }, > [2] = > { > type = "AAAA", > name = "lucy.roswell.area51.", > address = "fc00::1", > class = "IN", > ttl = 86400.000000, > }, > [3] = > { > type = "A", > name = "marvin.roswell.area51.", > address = "192.168.1.13", > class = "IN", > ttl = 86400.000000, > }, > [4] = > { > type = "AAAA", > name = "marvin.roswell.area51.", > address = "fc00::3", > class = "IN", > ttl = 86400.000000, > }, > [5] = > { > type = "A", > name = "bunny-desktop.roswell.area51.", > address = "192.168.1.16", > class = "IN", > ttl = 86400.000000, > }, > [6] = > { > type = "AAAA", > name = "bunny-desktop.roswell.area51.", > address = "fc00::2", > class = "IN", > ttl = 86400.000000, > }, > [7] = > { > type = "A", > name = "saltmine.roswell.area51.", > address = "192.168.1.18", > class = "IN", > ttl = 86400.000000, > }, > [8] = > { > type = "AAAA", > name = "saltmine.roswell.area51.", > address = "fc00::4", > class = "IN", > ttl = 86400.000000, > }, > }, > Yes, even though I run that braindead DNS implementation that only accepts single questions [2], it also preemptively sent back the appropriate IP (Internet Protocol) addresses! Will wonders never cease. There's probably no need for multiple DNS queries to handle SRV lookups. [1] gopher://gopher.conman.org/0Phlog:2015/02/17.1 [2] https://www.isc.org/downloads/bind/ Email Sean Conner at sean@conman.org .