rfc9726v1.txt | rfc9726.txt | |||
---|---|---|---|---|
skipping to change at line 128 ¶ | skipping to change at line 128 ¶ | |||
There are some ways of using DNS that will present problems for MUD | There are some ways of using DNS that will present problems for MUD | |||
controllers, which Section 4 explains. | controllers, which Section 4 explains. | |||
Section 5 details how current trends in DNS resolution such as public | Section 5 details how current trends in DNS resolution such as public | |||
DNS servers, DNS over TLS (DoT) [RFC7858], DNS over HTTPS (DoH) | DNS servers, DNS over TLS (DoT) [RFC7858], DNS over HTTPS (DoH) | |||
[RFC8484], or DNS over QUIC (DoQ) [RFC9250] can cause problems with | [RFC8484], or DNS over QUIC (DoQ) [RFC9250] can cause problems with | |||
the strategies employed. | the strategies employed. | |||
The core of this document is Section 6, which makes a series of | The core of this document is Section 6, which makes a series of | |||
recommendations ("best current practices") for manufacturers on how | recommendations ("best current practices") for manufacturers on how | |||
to use DNS and IP addresses with MUD supporting IoT devices. | to use DNS and IP addresses with IoT devices described by MUD. | |||
Section 8 discusses a set of privacy issues that encrypted DNS (for | Section 8 discusses a set of privacy issues that encrypted DNS (for | |||
example, DoT and DoH) are frequently used to deal with. How these | example, DoT and DoH) are frequently used to deal with. How these | |||
concerns apply to IoT devices located within a residence or | concerns apply to IoT devices located within a residence or | |||
enterprise is a key concern. | enterprise is a key concern. | |||
Section 9 also covers some of the negative outcomes should MUD/ | Section 9 also covers some of the negative outcomes should MUD/ | |||
firewall managers and IoT manufacturers choose not to cooperate. | firewall managers and IoT manufacturers choose not to cooperate. | |||
2. Terminology | 2. Terminology | |||
skipping to change at line 154 ¶ | skipping to change at line 154 ¶ | |||
"CDNs" refers to Content Distribution Networks, such as those | "CDNs" refers to Content Distribution Networks, such as those | |||
described in [RFC6707], Section 1.1. | described in [RFC6707], Section 1.1. | |||
3. A Model for MUD Controller Mapping of DNS Names to Addresses | 3. A Model for MUD Controller Mapping of DNS Names to Addresses | |||
This section details a strategy that a MUD controller could take. | This section details a strategy that a MUD controller could take. | |||
Within the limits of the DNS use detailed in Section 6, this process | Within the limits of the DNS use detailed in Section 6, this process | |||
could work. The methods detailed in Appendix A just will not work. | could work. The methods detailed in Appendix A just will not work. | |||
The simplest successful strategy for translating DNS names for a MUD | The simplest successful strategy for a MUD controller to translate | |||
controller to take is to do a DNS lookup on the name (a forward | DNS names is to do a DNS lookup on the name (a forward lookup) and | |||
lookup) and then use the resulting IP addresses to populate the | then use the resulting IP addresses to populate the actual ACLs. | |||
actual ACLs. | ||||
There are a number of possible failures, and the goal of this section | There are a number of possible failures, and the goal of this section | |||
is to explain how some common DNS usages may fail. | is to explain how some common DNS usages may fail. | |||
3.1. Non-Deterministic Mappings | 3.1. Non-Deterministic Mappings | |||
Most importantly, the mapping of the DNS names to IP addresses should | Most importantly, the mapping of the DNS names to IP addresses could | |||
be non-deterministic. | be non-deterministic. | |||
[RFC1794] describes the very common mechanism that returns DNS A (or | [RFC1794] describes the very common mechanism that returns DNS A (or | |||
reasonably AAAA) records in a permuted order. This is known as | reasonably AAAA) records in a permuted order. This is known as | |||
"round-robin DNS" and has been used for many decades. The historical | "round-robin DNS" and has been used for many decades. The historical | |||
intent is that the requestor will tend to use the first IP address | intent is that the requestor will tend to use the first IP address | |||
that is returned. As each query results in addresses being in a | that is returned. As each query results in addresses being in a | |||
different order, the effect is to split the load among many servers. | different order, the effect is to split the load among many servers. | |||
This situation does not result in failures as long as all possible A/ | This situation does not result in failures as long as all possible A/ | |||
skipping to change at line 306 ¶ | skipping to change at line 305 ¶ | |||
The first is that the update service server must decide whether to | The first is that the update service server must decide whether to | |||
provide an IPv4 or an IPv6 literal, assuming that only one URL can be | provide an IPv4 or an IPv6 literal, assuming that only one URL can be | |||
provided. A DNS name can contain both kinds of addresses and can | provided. A DNS name can contain both kinds of addresses and can | |||
also contain many different IP addresses of each kind. An update | also contain many different IP addresses of each kind. An update | |||
server might believe that if the connection were on IPv4, then an | server might believe that if the connection were on IPv4, then an | |||
IPv4 literal would be acceptable. However, due to NAT64 [RFC6146], a | IPv4 literal would be acceptable. However, due to NAT64 [RFC6146], a | |||
device with only IPv6 connectivity will often be able to reach an | device with only IPv6 connectivity will often be able to reach an | |||
IPv4 firmware update server by name (through DNS64 [RFC6147]) but not | IPv4 firmware update server by name (through DNS64 [RFC6147]) but not | |||
be able to reach an arbitrary IPv4 address. | be able to reach an arbitrary IPv4 address. | |||
A MUD file definition for this access would need to resolve to the | A MUD file for this access would need to resolve to the set of IP | |||
set of IP addresses that might be returned by the update server. | addresses that might be returned by the update server. This can be | |||
This can be done with IP address literals in the MUD file, but this | done with IP address literals in the MUD file, but this may require | |||
may require continuing updates to the MUD file if the addresses | continuing updates to the MUD file if the addresses change | |||
change frequently. A DNS name in the MUD could resolve to the set of | frequently. A DNS name in the MUD could resolve to the set of all | |||
all possible IPv4 and IPv6 addresses that would be used, with DNS | possible IPv4 and IPv6 addresses that would be used, with DNS | |||
providing a level of indirection that obviates the need to update the | providing a level of indirection that obviates the need to update the | |||
MUD file itself. | MUD file itself. | |||
A third problem involves the use of HTTPS. It is often more | A third problem involves the use of HTTPS. It is often more | |||
difficult to get TLS certificates for an IP address, and so it is | difficult to get TLS certificates for an IP address, and so it is | |||
less likely that the firmware download will be protected by TLS. An | less likely that the firmware download will be protected by TLS. An | |||
IP address literal in the TLS ServerNameIndicator [RFC6066] might not | IP address literal in the TLS ServerNameIndicator [RFC6066] might not | |||
provide enough context for a web server to distinguish which of the | provide enough context for a web server to distinguish which of the | |||
(potentially many) tenants the client wishes to reach. This drives | (potentially many) tenants the client wishes to reach. This drives | |||
the use of an IP address per tenant, and for IPv4 (at least), this is | the use of an IP address per tenant, and for IPv4 (at least), this is | |||
skipping to change at line 364 ¶ | skipping to change at line 363 ¶ | |||
Even if the CDN provider's chosen DNS names are deterministic, they | Even if the CDN provider's chosen DNS names are deterministic, they | |||
may change at a rate much faster than MUD files can be updated. | may change at a rate much faster than MUD files can be updated. | |||
This situation applies to firmware updates but also applies to many | This situation applies to firmware updates but also applies to many | |||
other kinds of content: video content, in-game content, etc. | other kinds of content: video content, in-game content, etc. | |||
A solution may be to use a deterministic DNS name within the control | A solution may be to use a deterministic DNS name within the control | |||
of the device manufacturer. The device manufacturer is asked to | of the device manufacturer. The device manufacturer is asked to | |||
point a CNAME to the CDN, to a name that might look like | point a CNAME to the CDN, to a name that might look like | |||
"g7.a.example", with the expectation that the CDN vendor's DNS will | "g7.a.example", with the expectation that the CDN provider's DNS will | |||
do all the appropriate work to geolocate the transfer. This can be | do all the appropriate work to geolocate the transfer. This can be | |||
fine for a MUD file, as the MUD controller, if located in the same | fine for a MUD file, as the MUD controller, if located in the same | |||
geography as the IoT device, can follow the CNAME and collect the set | geography as the IoT device, can follow the CNAME and collect the set | |||
of resulting IP addresses along with the TTL for each. Then, the MUD | of resulting IP addresses along with the TTL for each. Then, the MUD | |||
controller can take charge of refreshing that mapping at intervals | controller can take charge of refreshing that mapping at intervals | |||
driven by the TTL. | driven by the TTL. | |||
In some cases, a complete set of geographically distributed servers | In some cases, a complete set of geographically distributed servers | |||
may be known ahead of time (or that it changes very slowly), and the | may be known ahead of time (or that it changes very slowly), and the | |||
device manufacturer can list all those IP addresses in the DNS for | device manufacturer can list all those IP addresses in the DNS for | |||
skipping to change at line 435 ¶ | skipping to change at line 434 ¶ | |||
6. Recommendations to IoT Device Manufacturers on MUD and DNS Usage | 6. Recommendations to IoT Device Manufacturers on MUD and DNS Usage | |||
Inclusion of a MUD file with IoT devices is operationally quite | Inclusion of a MUD file with IoT devices is operationally quite | |||
simple. It requires only a few small changes to the DHCP client code | simple. It requires only a few small changes to the DHCP client code | |||
to express the MUD URL. It can even be done without code changes via | to express the MUD URL. It can even be done without code changes via | |||
the use of a QR code affixed to the packaging (see [RFC9238]). | the use of a QR code affixed to the packaging (see [RFC9238]). | |||
The difficult part is determining what to put into the MUD file | The difficult part is determining what to put into the MUD file | |||
itself. There are currently tools that help with the definition and | itself. There are currently tools that help with the definition and | |||
analysis of MUD files; see [mudmaker]. The remaining difficulty is | analysis of MUD files; see [mudmaker]. The remaining difficulty is | |||
now the actual list of expected connections to put in the MUD file. | the actual list of expected connections to put in the MUD file. An | |||
An IoT manufacturer must now spend some time reviewing the network | IoT manufacturer must spend some time reviewing the network | |||
communications by their device. | communications by their device. | |||
This document discusses a number of challenges that occur relating to | This document discusses a number of challenges that occur relating to | |||
how DNS requests are made and resolved, and the goal of this section | how DNS requests are made and resolved, and the goal of this section | |||
is to make recommendations on how to modify IoT systems to work well | is to make recommendations on how to modify IoT systems to work well | |||
with MUD. | with MUD. | |||
6.1. Consistently Use DNS | 6.1. Consistently Use DNS | |||
For the reasons explained in Section 4.1, the most important | For the reasons explained in Section 4.1, the most important | |||
skipping to change at line 528 ¶ | skipping to change at line 527 ¶ | |||
resolver to mitigate against local misconfiguration. There are a | resolver to mitigate against local misconfiguration. There are a | |||
number of reasons to avoid this, detailed in Section 6.4. The public | number of reasons to avoid this, detailed in Section 6.4. The public | |||
resolver might not return the same tailored names that the MUD | resolver might not return the same tailored names that the MUD | |||
controller would get. | controller would get. | |||
It is recommended that non-local resolvers are only used when the | It is recommended that non-local resolvers are only used when the | |||
locally provided resolvers provide no answers to any queries at all | locally provided resolvers provide no answers to any queries at all | |||
and do so repeatedly. The status of the operator-provided resolvers | and do so repeatedly. The status of the operator-provided resolvers | |||
needs to be re-evaluated on a periodic basis. | needs to be re-evaluated on a periodic basis. | |||
Finally, if a device will ever attempt to use a non-local resolver, | Finally, if a device will ever attempt to use non-local resolvers, | |||
then the address of that resolver needs to be listed in the MUD file | then the addresses of those resolvers need to be listed in the MUD | |||
as a destination that is to be permitted. This needs to include the | file as destinations that are to be permitted. This needs to include | |||
port numbers (i.e., 53, 853 for DoT, 443 for DoH) that will be used | the port numbers (i.e., 53, 853 for DoT, 443 for DoH) that will be | |||
as well. | used as well. | |||
7. Interactions with mDNS and DNS-SD | 7. Interactions with mDNS and DNS-SD | |||
Unicast DNS requests are not the only way to map names to IP | Unicast DNS requests are not the only way to map names to IP | |||
addresses. IoT devices might also use Multicast DNS (mDNS) | addresses. IoT devices might also use Multicast DNS (mDNS) | |||
[RFC6762], both to be discovered by other devices and also to | [RFC6762], both to be discovered by other devices and also to | |||
discover other devices. | discover other devices. | |||
mDNS replies include A and AAAA records, and it is conceivable that | mDNS replies include A and AAAA records, and it is conceivable that | |||
these replies contain addresses that are not local to the link on | these replies contain addresses that are not local to the link on | |||
End of changes. 7 change blocks. | ||||
20 lines changed or deleted | 19 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |