Providing content DNS service

The Internet Utilities contains four dæmons that provide DNS content service:

Type of service provided by content servers

The content servers respond

All other responses depend from the contents of the database or whether the server knows how to generate the answers itself.

The content servers will respond "no such domain" to unrecognised names. This happens to help combat the problem of incorrect delegations.

Content servers can return either complete or partial responses. Only the Generic Content Server and the Zone Transfer Content Server provide referrals. The Fixed-data Content Server, and the Text Content Server all serve leaf domains on the content server graph, and so do not provide referrals.

To avoid truncation of a DNS/UDP response that would normally exceed the DNS/UDP datagram size limit, the content servers will first eliminate all of the "additional" section resource record sets. Only if that fails to reduce the response size to within the size limit, will the content servers eliminate all of the resource record sets and set the "truncated" flag in the response header to 1 .

The content servers do not eliminate "authority" resource record sets from responses in lieu of truncation, because that can change the semantics of a response from a referral into an enpty resource record set response.

Security

The primary purpose of content servers is to serve Internet at large. They are expected to be configured to listen on a public IP address.

The content servers do not execute programs based upon any data received from Internet, or indeed run any other programs at all. They can safely be run on a machine residing outside of a firewall.

In order that clients can recognise their responses as responses, the content servers send all responses from the same socket on which the original queries were received.

Resource usage

These servers are designed so that their memory requirements should remain constant over time. They generate their answers afresh or read them from a database with each request and do not cache any previous results in memory. (However, the operating system itself will of course cache the files comprising the database.)

Hosting one's own public domain

Suppose that one owned the domain some.corp. in the public DNS. Here is how to host that domain on one's own machines using the Internet Utilities:

Anonymous sites

Where an organisation wishes to have machines connected to Internet but does not wish either the names of (or even the number of) those machines to be known to the outside world, the Fixed-data Content Server can be combined with the General-purpose Content DNS Server as the publically accesible DNS servers in the manner described here. This provides name service without providing meaningful information about the zone.

To the rest of Internet it will appear that all IP addresses, even unused ones, have matching hostnames. The rest of Internet will thus have no meaningful information about the number of hosts actually within the domain or what IP addresses are actually assigned. Also, because the Fixed-data Content Server does not support zone transfers, attackers cannot obtain a list of the hosts in the domain by requesting zone transfers.

Here is how to do this for the domain "some.corp." such that all of the hosts within "some.corp." will have opaque names within the domain "hosts.some.corp.", with both forward and reverse lookups available to the rest of Internet:

Providing service for large homogenous IP blocks

One may have large IP blocks where the choice of hostnames is irrelevant, as long as they have names of some sort. A typical case of this would be an ISP with an IP block for its customers that are assigned IP addresses dynamically via DHCP or via dial-up connections. Mainintaining the hostnames of the IP address block by hand in the database for a General-purpose Content DNS Server would be tedious and error prone. It could also involve quite a large database if the address range is large.

As long as the IP blocks do not need customized DNS data, which is very rarely the case, there is an easier way of providing content service in such situations. (Note: This refers to the actual IP addresses themselves, not to the customers using them or their machines.)

Here's how to serve names for the dial-up ports with IP addresses in the range a.b.*.* for the ISP with domain some.isp.:

This causes the dial-up port with the IP address a.b.2.3 to automatically have the hostname 3.2.b.a.dialup.some.isp. without needing to list it explicitly in a database or a configuration file. Mappings in both directions also work. In particular, this allows dial-up clients to happily connect to wrongly written servers that perform reverse lookups in a misguided attempt to be secure.


The Internet Utilities are © Copyright Jonathan de Boyne Pollard. "Moral" rights are asserted.