In DNS zone files, the @ symbol serves as a special placeholder representing the zone origin (the domain itself). When you see:
@ IN A 208.X.Y.Z
This is equivalent to specifying:
mydomain.com. IN A 208.X.Y.Z
The @ symbol derives its meaning from the $ORIGIN directive. In your example:
$ORIGIN mydomain.com.
@ IN A 208.X.Y.Z
This creates an A record for the naked domain (mydomain.com). The @ always references whatever is defined in $ORIGIN.
Here's a complete zone file snippet showing proper usage:
$ORIGIN example.com.
$TTL 3600
@ IN SOA ns1.example.com. admin.example.com. (
2023081501 ; serial
7200 ; refresh
3600 ; retry
1209600 ; expire
3600 ) ; minimum
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
@ IN A 192.0.2.1
www IN A 192.0.2.1
mail IN A 192.0.2.2
The @ record is most frequently used for:
- Root domain IP resolution
- MX records for domain-wide email
- TXT records for domain verification
Note that when using @ for subdomains, it will always reference the $ORIGIN of the zone file, not any intermediate domains.
For those using BIND, here's how this translates to named.conf:
zone "example.com" {
type master;
file "/etc/bind/zones/example.com.db";
allow-transfer { secondary_IP; };
};
The corresponding zone file would then use @ to reference example.com throughout.
If you're troubleshooting DNS issues involving the @ symbol:
- Verify your
$ORIGINis correctly set - Check for trailing dots in domain names
- Use
dig +trace @8.8.8.8 example.comto test resolution
In DNS zone files, the @ symbol serves a special purpose that every developer working with DNS configurations should understand. It represents the origin or the base domain itself in the zone file.
$ORIGIN example.com.
@ IN A 192.0.2.1
www IN A 192.0.2.1
When you see an entry like this:
@ IN A 208.X.Y.Z
It's equivalent to writing:
example.com. IN A 208.X.Y.Z
Here are three typical scenarios where you'd use the @ symbol:
; 1. Root domain record
@ IN A 192.0.2.1
; 2. MX record for the domain
@ IN MX 10 mail.example.com.
; 3. TXT record for domain verification
@ IN TXT "v=spf1 include:_spf.example.com ~all"
Here's a more complete zone file example showing various uses of @:
$ORIGIN example.com.
$TTL 3600
@ IN SOA ns1.example.com. admin.example.com. (
2023081501 ; serial
3600 ; refresh
900 ; retry
604800 ; expire
86400 ; minimum TTL
)
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
@ IN A 192.0.2.1
www IN A 192.0.2.1
mail IN A 192.0.2.2
Remember these key points when working with @ in zone files:
- The
@symbol always references the current$ORIGIN - It's particularly useful when you need to create records for the root domain
- Most DNS control panels will automatically translate root domain entries to use
@ - When manually editing zone files, ensure proper spacing between fields
If you're having problems with @ records:
- Verify your
$ORIGINis correctly set - Check for missing dots at the end of domain names
- Ensure your DNS software supports the
@notation - Test with both
@and the full domain name to isolate issues