Add CNAME record in BIND zone file

I have set up a virtual private network using virtualbox with a DNS server named: dns1.xyz1.com. I have a webs server named: xyz1.com.

I want to use my DNS server to resolve the IP address of the website. I configured the forward zone file as follows:

$TTL 604800
@ IN SOA dns1.xyz1.com. admin.xyz1.com. ( 13 ; Serial 604820 ; Refresh 86600 ; Retry 2419600 ; Expire 604600 ) ; Negative Cache TTL
; name servers - NS records IN NS dns1.xyz1.com. IN NS dns2.xyz1.com.
; name servers - A records
dns1.xyz1.com. IN A 192.168.56.13
dns2.xyz1.com. IN A 192.168.56.15
; 192.168.56.0/24 - A records
host1.xyz1.com. IN A 192.168.56.17
xyz1.com. IN CNAME host1.xyz1.com.
host1.xyz1.com. IN TXT "some text"
host2.xyz1.com. IN A 192.168.56.18

Before I add the CNAME record, I was able to type: and the browser transfer me to the right web server.

After I added the CNAME record (I want to browser to also translate to the same website as ) but unfortunately, after adding the CNAME line as shown below, none of the addresses open the desired web server: neither: nor .

xyz1.com. IN CNAME host1.xyz1.com.

FYI, here is the named.conf.local file content:

zone "xyz1.com" { type master; file "/etc/bind/forward.xyz1.com";
};
zone "56.168.192.in-addr.arpa"{ type master; file "/etc/bind/reverse.xyz1.com";
};

The bottom line: I want to access the same webserver (same IP) using different names: either or . Can you tell me what's wrong in my CNAME record? How can I fix it?

EDIT:

Thanks for the answers. But the problem still exist. I can not resolve this address: xyz.com and I need to point to a particular server using the names: xyz.com and host1.xyz.com.

Based on some answers, I updated this part of my configuration file:

; 192.168.56.0/24 - A records
@ IN A 192.168.56.7
host1.xyz1.com. IN CNAME xyz1.com.
host1.xyz1.com. IN TXT "text here"

There is a pingable web server with the IP: 192.168.56.7 which I want both xyz1.com and host1.xyz1.com to point to. How to achieve this?

3

2 Answers

CNAME records cannot coexist with any other record type, with a few rare exceptions. In your case, the same domain already has SOA and NS records (just like the zone apex always has).

As a result it's likely that BIND has completely refused to load the zone file. (But you'd only know for sure by actually checking BIND's error logs.)

In other words, it's not allowed to have a CNAME at zone apex, and you will have to manually copy the IP addresses as A/AAAA records.


In the future, DNS might standardize ANAME pseudo-records which allow the IP addresses to be aliased without full CNAME semantics. (These are currently offered by some DNS hosting services as a custom addition.) See here, here, or here.

You're doing it backwards. Don't set the domain name as a CNAME for a subdomain. Set the subdomain (host1) as a CNAME for the domain (xyz1.com).

Use @ to indicate the root domain (xyz1.com):

;192.168.56.0/24 - A records
@ IN A 192.168.56.17
host1.xyz1.com. IN CNAME xyz1.com.
host2.xyz1.com. IN A 192.168.56.18
2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like