RFC 6106
IPv6 Router Advertisement Options for DNS Configuration
RFC 6106: IPv6 Router Advertisement Options for DNS Configuration β¨
okay so this is RFC 6106, published by the IETF in November 2010 π It's a Standards Track document (ISSN 2070-1721), written by J. Jeong (Brocade/ETRI), S. Park (SAMSUNG Electronics), L. Beloeil (France Telecom R&D), and S. Madanapalli (iRam Technologies). It obsoletes RFC 5006 π and doesn't update anything else.
Abstract π¦
this doc defines IPv6 Router Advertisement options so IPv6 routers can hand a list of DNS recursive server addresses and a DNS Search List over to IPv6 hosts π
Status of This Memo π
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc6106.
Copyright Notice Β©οΈ
Copyright (c) 2010 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
Table of Contents πΊοΈ
1. Introduction ....................................................3
1.1. Applicability Statements ...................................3
1.2. Coexistence of RA Options and DHCP Options for DNS
Configuration ..............................................4
2. Requirements Language ...........................................4
3. Terminology .....................................................4
4. Overview ........................................................5
5. Neighbor Discovery Extension ....................................5
5.1. Recursive DNS Server Option ................................6
5.2. DNS Search List Option .....................................7
5.3. Procedure of DNS Configuration .............................8
5.3.1. Procedure in IPv6 Host ..............................8
5.3.2. Warnings for DNS Options Configuration .............10
6. Implementation Considerations ..................................10
6.1. DNS Repository Management .................................10
6.2. Synchronization between DNS Server List and
Resolver Repository .......................................11
6.3. Synchronization between DNS Search List and
Resolver Repository .......................................12
7. Security Considerations ........................................13
7.1. Security Threats ..........................................13
7.2. Recommendations ...........................................14
8. IANA Considerations ............................................15
9. Acknowledgements ...............................................15
10. References ....................................................16
10.1. Normative References .....................................16
10.2. Informative References ...................................16
Appendix A. Changes from RFC 5006 ................................18
1. Introduction β¨
so the whole point of this doc is to standardize an IPv6 Router Advertisement (RA) option for DNS Recursive Server Addresses, which hosts use for DNS name resolution π§ this RA option was first specified in an earlier Experimental spec, [RFC5006]. This document also defines a brand new RA option for Domain Name Search Lists, for a more enhanced DNS setup π So yes, this document obsoletes [RFC5006], which only covered the RA option for DNS Recursive Server Addresses.
Neighbor Discovery (ND) for IP version 6 and IPv6 stateless address autoconfiguration give fixed or mobile nodes one or more IPv6 addresses, default routers, and some other parameters [RFC4861][RFC4862] π Most Internet services are reached by a DNS name, so the two RA options in this document give IPv6 hosts the DNS info they need to reach those services π«Ά
Manually configuring nomadic hosts every time they connect to a different network is basically infeasible π A one-time static configuration is possible, but it's generally not great on general-purpose hosts like laptops. For example, locally defined name spaces wouldn't be available to a host that ran its own name server software while directly connected to the global DNS π
DNS info can also come through DHCP [RFC3315][RFC3736][RFC3646]. But access to DNS is a fundamental requirement for almost all hosts, so IPv6 stateless autoconfiguration can't stand on its own as an alternative deployment model in any practical network without some support for DNS configuration π
These issues aren't pressing in dual-stack networks as long as a DNS server is available on the IPv4 side π but they get way more critical as IPv6-only networks roll out. So this document defines a mechanism based on IPv6 RA options that lets IPv6 hosts do automatic DNS configuration π¦
1.1. Applicability Statements π
RA-based DNS configuration is a useful alternative in networks where an IPv6 host's address is autoconfigured through IPv6 stateless address autoconfiguration, and where there is either no DHCPv6 infrastructure at all or some hosts don't have a DHCPv6 client π The goal is to enable full configuration of basic networking information for hosts without needing DHCPv6. But when many networks need some extra information distributed, those networks are likely to use DHCPv6, and in those networks RA-based DNS configuration may not be needed π
RA-based DNS configuration lets an IPv6 host acquire its DNS configuration (that is, DNS recursive server addresses and the DNS Search List) for the link(s) it's connected to πΈ Even better, the host learns this DNS configuration from the same RA message that provides configuration info for the link, so it avoids running DHCPv6 too π§
The advantages and disadvantages of the RA-based approach are discussed in [RFC4339], along with other approaches like the DHCP and well-known anycast address approaches π
1.2. Coexistence of RA Options and DHCP Options for DNS Configuration π¦
there are two protocols for configuring DNS info on a host: the Router Advertisement options described in this document, and the DHCPv6 options described in [RFC3646] π They can be used together! The rules for deciding when to use stateful configuration mechanisms are specified in [RFC4861] β¨ Hosts conforming to this specification MUST extract DNS information from Router Advertisement messages, unless the user has specified static DNS configuration π₯ And if DNS info is available from multiple Router Advertisements and/or from DHCP, the host MUST maintain an ordered list of this info, as specified in Section 5.3.1 π
2. Requirements Language π
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] π«Ά
3. Terminology π
this doc uses the terminology described in [RFC4861] and [RFC4862] πΈ On top of that, four new terms are defined below π
- Recursive DNS Server (RDNSS): Server that provides a recursive DNS resolution service for translating domain names into IP addresses, as defined in [RFC1034] and [RFC1035] π
- RDNSS Option: IPv6 RA option that delivers the RDNSS information to IPv6 hosts [RFC4861] π§
- DNS Search List (DNSSL): The list of DNS suffix domain names that IPv6 hosts use when they do DNS query searches for short, unqualified domain names π
- DNSSL Option: IPv6 RA option that delivers the DNSSL information to IPv6 hosts π
- DNS Repository: Two data structures for managing DNS Configuration Information in the IPv6 protocol stack, in addition to the Neighbor Cache and Destination Cache for Neighbor Discovery [RFC4861]. The first data structure is the DNS Server List for RDNSS addresses, and the second is the DNS Search List for DNS search domain names π¦
- Resolver Repository: Configuration repository holding RDNSS addresses and a DNS Search List that a DNS resolver on the host uses for DNS name resolution. Examples are the Unix resolver file (i.e.,
/etc/resolv.conf) and the Windows registry π
4. Overview πΈ
this doc standardizes the ND option called the RDNSS option, defined in [RFC5006], which contains the addresses of recursive DNS servers π«Ά It also defines a new ND option called the DNSSL option for the Domain Search List. This is to keep parity with the DHCPv6 options, and to make sure there's the functionality needed to determine the search domains π₯
The existing ND message (the Router Advertisement) is used to carry this info. An IPv6 host can configure the IPv6 addresses of one or more RDNSSes via RA messages β¨ Through the RDNSS and DNSSL options, along with the prefix information option from the ND protocol ([RFC4861] and [RFC4862]), an IPv6 host can configure its IPv6 address and its DNS info at the same time, without needing DHCPv6 for DNS configuration π The RA options for RDNSS and DNSSL can be used on any network that supports ND π
This approach needs manual configuration, or other automatic mechanisms (e.g., DHCPv6 or vendor proprietary configuration mechanisms), to set up the DNS info in the routers sending the advertisements π How routers automatically get their RDNSS addresses and DNS Search List is out of scope for this document π
5. Neighbor Discovery Extension π§
the IPv6 DNS configuration mechanism in this document needs two new ND options in Neighbor Discovery: (i) the Recursive DNS Server (RDNSS) option and (ii) the DNS Search List (DNSSL) option π
5.1. Recursive DNS Server Option π
okay so the RDNSS option is how an RA hands you the IPv6 addresses of recursive DNS servers π§ all the addresses inside one RDNSS option share the same Lifetime value. if you want different Lifetimes, just send multiple RDNSS options π Figure 1 is the format:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
: Addresses of IPv6 Recursive DNS Servers :
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: Recursive DNS Server (RDNSS) Option Format
Fields, bestie π
Type: an 8-bit identifier for the RDNSS option type, assigned by the IANA: 25 πΈLength: an 8-bit unsigned integer. The length of the option (including the Type and Length fields) is in units of 8 octets. The minimum value is 3 if one IPv6 address is contained in the option. Every additional RDNSS address increases the length by 2. The receiver uses the Length field to figure out how many IPv6 addresses are in the option π§Lifetime: a 32-bit unsigned integer. This is the maximum time, in seconds (counted from when the packet is sent), over which this RDNSS address MAY be used for name resolution. Hosts MAY send a Router Solicitation to make sure the RDNSS info is still fresh before the interval runs out π To give fixed hosts stable DNS service, and to let mobile hosts prefer local RDNSSes over remote ones, the value of Lifetime SHOULD be bounded like this, where MaxRtrAdvInterval is the Maximum RA Interval defined in [RFC4861]:
MaxRtrAdvInterval <= Lifetime <= 2*MaxRtrAdvInterval
A value of all one bits (0xffffffff) means infinity βΎοΈ and a value of zero means the RDNSS address MUST no longer be used. bye bye π
Addresses of IPv6 Recursive DNS Servers: one or more 128-bit IPv6 addresses of the recursive DNS servers. The Length field decides how many there are. The count is equal to(Length - 1) / 2β¨
5.2. DNS Search List Option π¦
the DNSSL option carries one or more domain names of DNS suffixes. Again, all the domain names share one Lifetime value, and if you want different Lifetimes you can use multiple DNSSL options. Figure 2 is the format:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
: Domain Names of DNS Search List :
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: DNS Search List (DNSSL) Option Format
Fields, babe π
Type: an 8-bit identifier for the DNSSL option type, assigned by the IANA: 31 πLength: an 8-bit unsigned integer. The length of the option (including the Type and Length fields) is in units of 8 octets. The minimum value is 2 if at least one domain name is contained in the option. The Length field is set to a multiple of 8 octets so it can fit all the domain names in the Domain Names of DNS Search List field π¦Lifetime: a 32-bit unsigned integer. This is the maximum time, in seconds (counted from when the packet is sent), over which this DNSSL domain name MAY be used for name resolution. The Lifetime value works the same way as it does for the RDNSS option. So Lifetime SHOULD be bounded like this:
MaxRtrAdvInterval <= Lifetime <= 2*MaxRtrAdvInterval
A value of all one bits (0xffffffff) means infinity, and a value of zero means the DNSSL domain name MUST no longer be used π
Domain Names of DNS Search List: one or more domain names of the DNS Search List. They MUST be encoded using the technique in Section 3.1 of [RFC1035]. With that technique, each domain name is a sequence of labels ending in a zero octet, and that's what gets called the domain name representation. When there's more than one domain name, the representations are just concatenated as they are. For simple decoding, the domain names MUST NOT be encoded in a compressed form, as described in Section 4.1.4 of [RFC1035] π« Because the size of this field MUST be a multiple of 8 octets, the leftover octets (the ones that aren't part of the domain name representations) MUST be padded with zeros. Padding with zeros, honestly so iconic π
Note: An RDNSS address or a DNSSL domain name MUST be used only as long as both the RA router Lifetime (advertised by a Router Advertisement message [RFC4861]) and the corresponding option Lifetime have not expired. The reason is that on the current network an IPv6 host is connected to, the RDNSS may not be reachable anymore, the DNSSL domain name may not be valid any more, or these options may not serve the host's current address (for example, because of network ingress filtering [RFC2827][RFC5358]). Read that twice, it's the main character rule π
5.3. Procedure of DNS Configuration π
configuring DNS through the RDNSS and DNSSL options works exactly the same as with any other ND option [RFC4861]. no surprises here β¨
5.3.1. Procedure in IPv6 Host πΈ
when an IPv6 host gets DNS options (RDNSS and DNSSL) through RA messages, it handles them like this π§
- Validity is checked with the Length field. So the RDNSS option's Length must be greater than or equal to the minimum value (3), and the DNSSL option's Length must be greater than or equal to the minimum value (2).
- If the DNS options are valid, the host SHOULD copy the values of the options into the DNS Repository and the Resolver Repository, in order. If not, the host MUST discard the options ποΈ Check Section 6 for the detailed procedure.
once the host has collected a sufficient number (e.g., three) of RDNSS addresses (or DNS search domain names), it SHOULD keep that many, and the newest RDNSS or DNSSL should be preferred over the old ones π So when the count is already sufficient, the new one replaces the old one that's going to expire first in terms of Lifetime. There's one exception: if the received RDNSS addresses (or DNS search domain names) are already on the host, their Lifetime fields just update their Expiration-time (that's when the DNS info expires on the host). And when Lifetime is zero, that RDNSS (or domain name) gets deleted from the host ποΈ Apart from that update, the IPv6 host SHOULD ignore other RDNSS addresses (or DNS search domain names) within an RDNSS (or DNSSL) option, and/or additional RDNSS (or DNSSL) options within an RA. Check Section 6 again for the detailed procedure π
The sufficient number is a system parameter, so local policy can decide it. You can also set separate parameters for the sufficient number of RDNSS addresses and for DNS search domain names. In this document, three is RECOMMENDED as the sufficient number, because it balances a robust DNS query against recognizing unreachable DNS servers in a reasonable amount of time π§
when the DNS options for RDNSS and DNSSL can come from more than one source, like RA and DHCP, the IPv6 host SHOULD keep some DNS options from all of those sources π«Ά Unless the discovery mechanism says otherwise, the exact number of addresses and domain names to keep is up to local policy and implementation choice. Still, being able to store at least three RDNSS addresses (or DNSSL domain names) from at least two different sources is RECOMMENDED π₯ DNS options from Router Advertisements and DHCP SHOULD be stored in the DNS Repository and Resolver Repository so that DHCP info shows up there first and takes precedence. So DNS info from DHCP takes precedence over RA's for DNS queries. But for DNS options announced by RA, if some RAs use the Secure Neighbor Discovery (SEND) protocol [RFC3971] for RA security, those MUST be preferred over the ones that don't use SEND π Check Section 7 for the detailed discussion on SEND for RA DNS options.
5.3.2. Warnings for DNS Options Configuration π¨
okay, two warnings here, and they're kinda important π Warning one is about multiple sources of DNS options, like RA and DHCP. An IPv6 host can configure its IP addresses from these sources, and then it isn't possible to control how the host uses DNS information or which source addresses it uses to send DNS queries. So if different sources give different info, things can break. That's why the network administrator needs to configure DNS options in multiple sources so those problems don't happen.
Warning two is about multiple network interfaces. If different DNS info shows up on different interfaces, the behavior can get inconsistent. The IETF is working on this for both DNS and other info obtained over multiple interfaces [MIF-PROBLEM][MIF-PRACTICE]. Stay tuned, it's giving "to be continued" π
6. Implementation Considerations β¨
Note: this bit is non-normative, so think of it as friendly hints π«Ά for implementing how an IPv6 host processes the RDNSS and DNSSL options.
okay so for managing DNS info, the advertised config can be stored and managed in both the DNS Repository and the Resolver Repository π
If the DNS info lives in user space but ND runs in the kernel π§, you have to keep the DNS info in kernel space and the Resolver Repository in user space in sync. For that, a kernel-side ND implementation should offer a write operation so it can push DNS updates from the kernel to the Resolver Repository. One simple approach is a daemon (or a program called at set intervals) that keeps an eye on the Lifetimes of RDNSS addresses and DNS search domain names all the time π. Whenever it spots an expired entry in the DNS Repository, it can delete the matching entry from the Resolver Repository. Super clean πΈ
6.1. DNS Repository Management
For DNS repository management, the kernel or the user-space process (whichever one handles the RAs) should keep track of two data structures: (i) the DNS Server List, which holds the RDNSS addresses, and (ii) the DNS Search List, which holds the DNS search domain names π. Every entry in these two lists is a pair: an RDNSS address (or DNSSL domain name) plus an Expiration-time. Here's the breakdown:
- RDNSS address for the DNS Server List: the IPv6 address of the Recursive DNS Server that's available for recursive DNS resolution in the network advertising the RDNSS option π₯οΈ.
- DNSSL domain name for the DNS Search List: the DNS suffix domain names used to run DNS query searches for short, unqualified domain names in the network advertising the DNSSL option π.
- Expiration-time for the DNS Server List or DNS Search List: the moment this entry stops being valid β°. It's set to the Lifetime field of the RDNSS or DNSSL option plus the current system time. Whenever a new RDNSS option with the same address (or a DNSSL option with the same domain name) comes in on the same interface as a previous RDNSS option (or DNSSL option), this field gets updated with a fresh Expiration-time π. When Expiration-time becomes less than the current system time, the entry is regarded as expired π.
6.2. Synchronization between DNS Server List and Resolver Repository
Okay this is the fun part π¦. When an IPv6 host gets info about multiple RDNSS addresses within a network (say, a campus network and a company network) through an RA message with RDNSS option(s), it stores the RDNSS addresses (in order) into both the DNS Server List and the Resolver Repository. Processing RDNSS has two pieces: (i) processing the RDNSS option(s) in an RA message and (ii) handling expired RDNSSes. Here's how the RDNSS option(s) processing goes:
Step (a): Receive and parse the RDNSS option(s). For the RDNSS addresses in each RDNSS option, do Steps (b) through (d) π.
Step (b): For each RDNSS address, check the following. If the RDNSS address already exists in the DNS Server List and the RDNSS option's Lifetime field is set to zero, delete that RDNSS entry from both the DNS Server List and the Resolver Repository. This stops the RDNSS address from being used any more for network management reasons, like the RDNSS shutting down or a renumbering situation π«. Basically, the RDNSS can resign from its DNS service because the machine running it is out of service, on purpose or by accident. Also, under renumbering the RDNSS's IPv6 address is going to change, so the old RDNSS address should not be used any more π ββοΈ. Processing for this RDNSS address ends right here. Otherwise, go to Step (c).
Step (c): For each RDNSS address, if it already exists in the DNS Server List, just update its Expiration-time field following the procedure in the third bullet of Section 6.1 β³.
Step (d): For each RDNSS address, if it's not in the DNS Server List, register the RDNSS address and Lifetime with the DNS Server List, then insert the RDNSS address in front of the Resolver Repository π. If the DNS Server List is already full of RDNSS entries (meaning it has more RDNSSes than the sufficient number discussed in Section 5.3.1), delete the entry with the shortest Expiration-time from the DNS Server List, i.e., the one that's going to expire first π₯². The matching RDNSS address also gets deleted from the Resolver Repository. As for ordering, the first RDNSS address in the RDNSS option becomes the first one in the Resolver Repository, the second becomes the second, and so on π. This ordering means the RDNSS addresses are preferred in the same order they show up in the RDNSS option when doing DNS name resolution. Processing for these RDNSS addresses is done here.
Handling expired RDNSSes is simple: whenever an entry expires in the DNS Server List, it gets deleted from the DNS Server List, and the RDNSS address for that entry gets deleted from the Resolver Repository too π§Ή.
6.3. Synchronization between DNS Search List and Resolver Repository
Same energy, different list π. When an IPv6 host receives info about multiple DNSSL domain names within a network (like a campus network and a company network) through an RA message with DNSSL option(s), it stores the DNSSL domain names (in order) into both the DNS Search List and the Resolver Repository. Processing DNSSL has two pieces: (i) processing the DNSSL option(s) in an RA message and (ii) handling expired DNSSLs. Here's the DNSSL option(s) processing:
Step (a): Receive and parse the DNSSL option(s). For the DNSSL domain names in each DNSSL option, do Steps (b) through (d) π.
Step (b): For each DNSSL domain name, check the following. If the DNSSL domain name already exists in the DNS Search List and the DNSSL option's Lifetime field is set to zero, delete that DNSSL entry from both the DNS Search List and the Resolver Repository. This stops the DNSSL domain name from being used any more for network management reasons, like the termination of the RDNSS or a renaming situation π«. That is, the RDNSS can resign from its DNS service because the machine running the RDNSS is out of service, intentionally or not. Also, under renaming the DNSSL domain names are going to change, so the old domain names should not be used any more π ββοΈ. Processing for this DNSSL domain name ends here. Otherwise, go to Step (c).
Step (c): For each DNSSL domain name, if it already exists in the DNS Server List, just update its Expiration-time field following the procedure in the third bullet of Section 6.1 β³.
Step (d): For each DNSSL domain name, if it's not in the DNS Search List, register the DNSSL domain name and Lifetime with the DNS Search List, then insert the DNSSL domain name in front of the Resolver Repository π. If the DNS Search List is full of DNSSL domain name entries (meaning it has more DNSSL domain names than the sufficient number discussed in Section 5.3.1), delete from the DNS Server List the entry with the shortest Expiration-time, i.e., the one that will expire first π₯². The matching DNSSL domain name also gets deleted from the Resolver Repository. For ordering, the first DNSSL domain name in the DNSSL option becomes the first one in the Resolver Repository, the second becomes the second, and so on π. This ordering means the DNSSL domain names are preferred in the same order they appear in the DNSSL option for the DNS domain name used by the DNS query. Processing for these DNSSL domain names is done here.
Handling expired DNSSLs: whenever an entry expires in the DNS Search List, it gets deleted from the DNS Search List, and the DNSSL domain name for that entry gets deleted from the Resolver Repository too π§Ή.
7. Security Considerations π
Okay, security time, and I'm not playing π€. In this section we look at the security threats related to DNS options and then suggest recommendations to handle them.
7.1. Security Threats
For the RDNSS option, an attacker could send an RA with a fraudulent RDNSS address π. That misleads IPv6 hosts into contacting an unintended DNS server for DNS name resolution. And for the DNSSL option, an attacker can make IPv6 hosts resolve a host name without a DNS suffix into an unintended host's IP address by sending a fraudulent DNS Search List π.
These attacks are kind of like Neighbor Discovery attacks that use Redirect or Neighbor Advertisement messages to send traffic to individual addresses of malicious parties π. Here's the deal: as a rogue router, a malicious node on a LAN can receive packets for any router's Media Access Control (MAC) address, promiscuously, and send packets with the router's MAC address as the source MAC address in the Layer 2 (L2) header. As a result, L2 switches send packets addressed to the router over to the malicious node π¨. This attack can also send redirects that tell hosts to send their traffic somewhere else. The malicious node can send unsolicited RA or Neighbor Advertisement (NA) replies, answer RS or Neighbor Solicitation (NS) requests, and so on. So the RDNSS and DNSSL attacks are similar to both Neighbor Discovery attacks and attacks against unauthenticated DHCP, since both can be used for both "wholesale" traffic redirection and more specific attacks πͺοΈ.
β οΈ Heads up: the security of these RA options for DNS configuration does not affect ND protocol security [RFC4861]. Learning DNS info via the RA options cannot be worse than learning bad router info via the RA options π . So the vulnerability of ND is not worse, and it's a subset of the attacks that any node attached to a LAN can do independently of ND β¨.
7.2. Recommendations π‘οΈ
okay so the big one here is Secure Neighbor Discovery (SEND) [RFC3971], which is the security mechanism for ND π. It is RECOMMENDED that ND use SEND so that all the ND options, including the RDNSS and DNSSL options, get automatically included in the signatures π. With SEND, the transport for the RA options is integrity protected, which means SEND can prevent anyone from spoofing these DNS options with signatures π«Ά. SEND also lets an IPv6 host verify that the sender of an RA is actually a router that's authorized to act as a router π.
BUT (plot twist π) any valid SEND router can still insert RDNSS and DNSSL options, and current SEND can't tell which routers are or aren't authorized to send those options. So this verification of authorized routers for ND options will be required. [CSI-SEND-CERT] covers the usage of the extended key for the certificate deployed in SEND π. This document defines the roles of routers (proxy and address owner) and explains how those roles get authorized π¦. The mechanism in this document can be extended to verify which routers are authorized to insert RDNSS and DNSSL options β¨.
It's common for network devices like switches to block unauthorized ports from running a DHCPv6 server, which protects you from rogue DHCP servers π. That means an attacker on other ports can't sneak in bogus DNS servers using DHCPv6 π . The corresponding technique for network devices is RECOMMENDED to block rogue Router Advertisement messages that include the RDNSS and DNSSL options from unauthorized nodes πΈ.
An attacker might send a bogus DNS Search List option to make the victim send DNS queries to a specific DNS server whenever the victim queries non-FQDNs (fully qualified domain names). Not me getting targeted like that π. For this attack, the DNS resolver in IPv6 hosts can mitigate the vulnerability with the recommendations in [RFC1535], [RFC1536], and [RFC3646] π₯.
8. IANA Considerations πΈ
The RDNSS option defined in this document uses the IPv6 Neighbor Discovery Option type defined in RFC 5006 [RFC5006], which the IANA assigned as follows:
Option Name Type
Recursive DNS Server Option 25
The IANA has also assigned a new IPv6 Neighbor Discovery Option type for the DNSSL option defined in this document π§:
Option Name Type
DNS Search List Option 31
These options have been registered in the "Internet Control Message Protocol version 6 (ICMPv6) Parameters" registry (http://www.iana.org) π.
9. Acknowledgements π«Ά
This document has greatly benefited from inputs by Robert Hinden, Pekka Savola, Iljitsch van Beijnum, Brian Haberman, Tim Chown, Erik Nordmark, Dan Wing, Jari Arkko, Ben Campbell, Vincent Roca, and Tony Cheneau π. The authors sincerely appreciate their contributions π.
10. References π
10.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC4861] Narten, T., Nordmark, E., Simpson, W., and H.
Soliman, "Neighbor Discovery for IP version 6
(IPv6)", RFC 4861, September 2007.
[RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6
Stateless Address Autoconfiguration", RFC 4862,
September 2007.
[RFC1035] Mockapetris, P., "Domain names - implementation and
specification", STD 13, RFC 1035, November 1987.
10.2. Informative References
[RFC1034] Mockapetris, P., "Domain names - concepts and
facilities", STD 13, RFC 1034, November 1987.
[RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins,
C., and M. Carney, "Dynamic Host Configuration
Protocol for IPv6 (DHCPv6)", RFC 3315, July 2003.
[RFC3736] Droms, R., "Stateless Dynamic Host Configuration
Protocol (DHCP) Service for IPv6", RFC 3736,
April 2004.
[RFC3646] Droms, R., "DNS Configuration options for Dynamic
Host Configuration Protocol for IPv6 (DHCPv6)",
RFC 3646, December 2003.
[RFC5006] Jeong, J., Park, S., Beloeil, L., and S.
Madanapalli, "IPv6 Router Advertisement Option for
DNS Configuration", RFC 5006, September 2007.
[RFC4339] Jeong, J., "IPv6 Host Configuration of DNS Server
Information Approaches", RFC 4339, February 2006.
[RFC3971] Arkko, J., Kempf, J., Zill, B., and P. Nikander,
"SEcure Neighbor Discovery (SEND)", RFC 3971,
March 2005.
[RFC5358] Damas, J. and F. Neves, "Preventing Use of Recursive
Nameservers in Reflector Attacks", BCP 140,
RFC 5358, October 2008.
[RFC2827] Ferguson, P. and D. Senie, "Network Ingress
Filtering: Defeating Denial of Service Attacks which
employ IP Source Address Spoofing", BCP 38,
RFC 2827, May 2000.
[RFC1535] Gavron, E., "A Security Problem and Proposed
Correction With Widely Deployed DNS Software",
RFC 1535, October 1993.
[RFC1536] Kumar, A., Postel, J., Neuman, C., Danzig, P., and
S. Miller, "Common DNS Implementation Errors and
Suggested Fixes", RFC 1536, October 1993.
[MIF-PROBLEM] Blanchet, M. and P. Seite, "Multiple Interfaces
Problem Statement", Work in Progress, August 2010.
[MIF-PRACTICE] Wasserman, M. and P. Seite, "Current Practices for
Multiple Interface Hosts", Work in Progress,
August 2010.
[CSI-SEND-CERT] Gagliano, R., Krishnan, S., and A. Kukec,
"Certificate profile and certificate management for
SEND", Work in Progress, October 2010.
Appendix A. Changes from RFC 5006 π
The following changes were made from RFC 5006 "IPv6 Router Advertisement Option for DNS Configuration":
- Added the DNS Search List (DNSSL) option to support advertising DNS suffixes used in DNS search, alongside the RDNSS option from RFC 5006 π.
- Clarified the coexistence of RA options and DHCP options for DNS configuration π¦.
- Modified the procedure in IPv6 host:
- Clarified the procedure for DNS options in an IPv6 host π .
- Specified a sufficient number of RDNSS addresses or DNS search domain names as three π’.
- Specified a way to deal with DNS options from multiple sources, such as RA and DHCP π§©.
- Modified the implementation considerations for DNSSL option handling π οΈ.
- Modified the security considerations to consider more attack scenarios and the corresponding possible solutions π.
- Modified the IANA considerations to require another IPv6 Neighbor Discovery Option type for the DNSSL option πΈ.
Authors' Addresses π
Jaehoon Paul Jeong
Brocade Communications Systems/ETRI
6000 Nathan Ln N
Plymouth, MN 55442
USA
Phone: +1 763 268 7173
Fax: +1 763 268 6800
EMail: pjeong@brocade.com
URI: http://www.cs.umn.edu/~jjeong/
Soohong Daniel Park
Digital Media & Communications R&D Center
SAMSUNG Electronics
416 Maetan-3dong, Yeongtong-Gu
Suwon, Gyeonggi-Do 443-742
Korea
Phone: +82 31 279 8876
EMail: soohong.park@samsung.com
Luc Beloeil
France Telecom R&D
42, rue des coutures
BP 6243
14066 CAEN Cedex 4
France
Phone: +33 2 40 44 97 40
EMail: luc.beloeil@orange-ftgroup.com
Syam Madanapalli
iRam Technologies
#H304, Shriram Samruddhi, Thubarahalli
Bangalore - 560066
India
EMail: smadanapalli@gmail.com
π¦ where this page comes from
- ietf: rfc6106 2010-11
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms