Ever wondered what the difference was between the ‘@’ symbol and the ‘*’ symbol when setting up a DNS Zone file for a domain name. In the past I have seen them used interchangeably with sometimes unexpected results.
The difference is that one (@) is for exact match search where there is no subdomain and the other (*) is a Wild Card – they are not interchangeable in all circumstances.
Consider the following Zone File for domain name xyz.com.
- Any DNS request for an MX (mail) record for xyz.com (with no prefix) will return the two MX records mx1.mailserver.com and mx2.mailserver.com
- Any DNS request for an MX (mail) record for the subdomain branch.xyz.com will return the two MX records mx3.mailserver.com and mx4.mailserver.com
- If an A record request for the hostname ‘xyz.com’ is made, an exact match for this record with no subdomain is used (@) and it will return the IP address 103.6.216.204.
- If an A record request for the hostname ‘www.xyz.com’ is made, an exact match for this subdomain is used and it will return the IP address 103.6.216.205
- If an A record request for any other hostname e.g. ‘branch.xyz.com’ is made, the wildcard record (*) is used it will return the IP address 103.6.216.203.
In summary;
The prefix ‘@’ refers to the domain name itself — it essentially means no prefix.
The prefix * is a wildcard — if a DNS request is made for an address that does not have a specific A record setup, then the wildcard IP address will be returned.