If you can see this check that
After the SOA in a named forward zone file with an origin of hello.com, which
of the following lines would create:
- hello.com having a nameserver called ns1.hello.com
- hello.com having an IP address the same as www.hello.com
- www.hello.com having an IP address 10.0.1.1
- ns1.hello.com having an IP address 10.0.1.2
1D IN NS ns1.hello.com.
hello.com CNAME www
ns1 1D IN A 10.0.1.1
www 1D IN A 10.0.1.2
1D IN NS ns1.hello.com
ns1.hello.com 1D IN A 10.0.1.2
www.hello.com 1D IN A 10.0.1.1
1D IN NS ns1
ns1 1D IN A 10.0.1.2
www 1D IN A 10.0.1.1
1D IN NS ns1.
ns1. 1D IN A 10.0.1.2
www. 1D IN A 10.0.1.1
1D IN NS 10.0.1.2.
ns1 1D IN CNAME 10.0.1.2.
www 1D IN CNAME 10.0.1.1.
Here hello.com does not have a trailing dot, and is likely to be rewritten as hello.com.hello.com., which would be incorrect.
The trailing dot at the end of a hostname stops the origin name being added to the names. We really need ns1.hello.com to be ns1.hello.com. and not ns1.hello.com.hello.com., so the trailing dots are needed here.
The trailing dot after ns1 (etc) stops the origin name being added to the names. We really need ns1 to be ns1.hello.com, so the trailing dots are errors.
Trailing dots at the end of an IP number is an error.