I don't understand how multiple @ symbols work in the DNS settings, and what will happen when I edit the associated records.

The screenshot below is what is set up already for a website I'm working on.

  1. If I change the value (166.78.44.155) of the first A record which is named @, will it affect any of the other records below it that are set as @? In other words, if I change the IP address in the first A record, will the MX, NS, SOA, and TXT records below change how things are working / break things?

  2. If I need to change the IP address of the first record, and IF it will affect the other records, what would be the correct names and values to set the other records to in order to keep them functioning as they are now?

Thank you

DNS Screenshot

I don't understand how multiple @ symbols work in the DNS settings

Absolutely like any other kind of resource record, there is nothing special about this, it is a shortcut to the zone itself.

For the zone example.com, this:

@ IN MX 10 mx1.example.com.
@ IN MX 20 mx2.example.com.
@ IN A 192.0.2.137
@ IN A 192.0.2.201
@ IN AAAA 2001:DB8::ABCD
@ IN AAAA 2001:DB8::1

is exactly the same as:

example.com. IN MX 10 mx1.example.com.
example.com. IN MX 20 mx2.example.com.
example.com. IN A 192.0.2.137
example.com. IN A 192.0.2.201
example.com. IN AAAA 2001:DB8::ABCD
example.com. IN AAAA 2001:DB8::1

So for the explanation of what happens when multiple records for same label, it is exactly the same: resource records are sets (and not lists, as there is no order), so each relevant record is returned for a given query on a type.

Using @ is just a shortcut when writing the zonefile. It has no impact on how the DNS messages are exchanged, and does not appear in packets.

And to go back to your question, each element of the set is independant of the other, so you change change one without impact to the other (they will still be replied together for the relevant query). Special rules apply of course when you change or add a new resource type such as a CNAME that has specific constraints.

You can change the IP address of your @ A record it will impact only resolutions of your zone name as label (because @ is your zone name), it will not impact resolution of pairings label or other ones (except if they are CNAME records towards the zone name of course, in which case the change in the A record will apply to all of them, as it is the exact purpose of a CNAME record).

  • Thanks. Could you elaborate on CNAME a bit more? The situation I have per the screenshot is that the CNAME value (blurred out) is some old / irrelevant domain name I don't believe the client is using. The new website is a wpengine blog at [domainname].wpengine.com (we want the blog to be at domainname.com and not show the .wpengine.com URL in the browser). Can I change the CNAME value to that wpengine URL? How will the A record with an IP address and the CNAME with the wpengine URL affect each other? Would that be an incorrect setup? Thanks for your help. – user1552794 Aug 21 at 0:32

You can change the A record for @ to your new server's IP address. What this will do is point your website example.com to the new server.

You may also want to create a new www A record to point the WWW version of your website (www.example.com) [if not already automatically pointed with the standalone @].

You can change pairings which a subdomain (pairings.example.com) to the new IP address if needed too.

As for the MX (used for email settings), CNAME and TXT records, these will remain as per their current settings. I'm not aware of what SOA does, so hopefully, someone can help you with this.

As for the NS which stands for Name Server, there are normally two records. Changing these will point the whole DNS (all the records) to the new host [of which the NS is assigned to]. You shouldn't change this unless you're planning to carry across all the current records to your new host too. As if you don't, these records would no-longer function.

  • 1
    The screenshot already shows a CNAME for www, so creating an A record for the same label is not possible (or the CNAME should be removed first). – Patrick Mevzek Aug 16 at 22:11
  • SOA is basically the only mandatory record in a zone, with NS ones (they can be more than 2 , this is ok), it stands for Start Of Authority and basically just says that indeed this current "zonefile" is the authoritative content for this zone. It provides various values needed for DNS operations, and should really not be changed without first really understanding its use and consequences. – Patrick Mevzek Aug 16 at 22:13

In this case the @ symbol means the domain apex. That is: the domain name with no subdomain.

So if your domain is example.com:

  • @example.com
  • wwwwww.example.com
  • drivedrive.example.com

If you edit the A record associated with the @, it will change where your bare domain points. The A record for the domain apex usually points to the same IP address as www. You could have separate servers handling the two if you really wanted to. One use case for that would be having the domain apex point to a redirect service that redirects the HTTP requests to www.example.com while having a different server that serves the main content for your domain on the www subdomain.

Note that a CNAME record should not be associated with the domain apex. You should always use an A record there. A CNAME with @ isn't allowed by the DNS spec although some DNS servers won't complain if you try it. If you end up with a CNAME at the apex, it causes MX records to be ignored and email to be misdelivered.

MX, NS, SOA, and TXT records are almost always associated with domain apex. It wouldn't usually make sense to have anything other than the @ with them. Those records are "special" records that don't resolve HTTP or other socket level protocols to IP addresses. MX records are for specifying email servers. NS records are for specifying domain name servers. SOA records are for specifying DNS authority. TXT records are more generic and mostly used for verification records.

  • 1
    _Aside:_The unicode character you've used in your list (🠆 - which appears to be "U+1F806: RIGHTWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD"?) doesn't display on any of my devices (Windows 7 desktop, iOS or Android)? – MrWhite Aug 16 at 21:51
  • A CNAME with @ isn't defined well it is against the DNS protocol specification, and while some provider propose the same feature, named in various ways (ALIAS, ANAME, etc.), a standard DNS server will refuse by default to load a zone with @ CNAME in it. – Patrick Mevzek Aug 16 at 22:19
  • 1
    @MrWhite I edited in a different arrow. Every single arrow on this page renders for me on Linux: xahlee.info/comp/unicode_arrows.html I had no idea unicode symbol support was so spotty. – Stephen Ostermiller Aug 16 at 23:13
  • @PatrickMevzek Some DNS servers can be wrongly configured to use a CNAME at the apex. Users can access your website, but mail breaks. I'm sure some DNS servers refuse the records entirely, but I haven't experienced that. ServerFault has an answer that explains the spec. It isn't that it forbids a CNAME there, it is that it forbids CNAME with other records types and requires other records at the apex. Why can't a CNAME record be used at the apex (aka root) of a domain? – Stephen Ostermiller Aug 16 at 23:35
  • Yes a CNAME is forbidden anywhere there is another record type for same label, which is always the case at apex because of SOA and NS records, and may be the case also elsewhere depending on what other labels are already there. (I am quite aware of the spec, as it is my day job since 20 years). – Patrick Mevzek Aug 16 at 23:38

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.