Host Names (or 'labels' in DNS jargon) were traditionally defined by RFC 952 and RFC 1123 and may be composed of the following valid characters.
A to Z ; upper case characters a to z ; lower case characters 0 to 9 ; numeric characters 0 to 9 - ; dash
The rules say:
RFC 2181 significantly liberalized the valid character set including the use of "_" (underscore) essentially saying that anything goes and its up to the client to validate in context. If you want to be safe stick with the rules above if you need the expanded capabilities (e.g. SRV RRs) use them. However you are taking a risk that one vital system will not talk to you at 3AM in the morning due to an upgrade!
The named.conf statement check-names allows control over the names accepted.
Domain names are defined to be case insensitive (essentially so you don't have to register every possible variant of your domain name) but the rule is that case should be preserved since this may change in the future. Host names seem to obey the same rules - essentially as an artifact of subdomains.
; for clarity we show a host name in A records www IN A 192.168.0.3 ; valid wWw IN A 192.168.0.3 ; valid my www IN A 192.168.0.3 ; invalid my-www IN A 192.168.0.3 ; valid my_www IN A 192.168.0.3 ; invalid but may work 3www IN A 192.168.0.3 ; valid -www IN A 192.168.0.3 ; invalid 5512 IN A 192.168.0.3 ; invalid host-5512 IN A 192.168.0.3 ; valid @www IN A 192.168.0.3 ; invalid
3 reverse map
4 dns types
5 install bind
8 dns records
12 bind api's
13 dns security
bits & bytes
notes & tips