<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.24 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-masque-connect-ip-dns-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="CONNECT-IP DNS">DNS Configuration for Proxying IP in HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-ip-dns-03"/>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View</city>
          <region>CA</region>
          <code>94043</code>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="Y." surname="Rosomakho" fullname="Yaroslav Rosomakho">
      <organization>Zscaler</organization>
      <address>
        <postal>
          <street>120 Holger Way</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95134</code>
          <country>United States of America</country>
        </postal>
        <email>yrosomakho@zscaler.com</email>
      </address>
    </author>
    <date year="2025" month="March" day="03"/>
    <area>Web and Internet Transport</area>
    <workgroup>MASQUE</workgroup>
    <keyword>quic</keyword>
    <keyword>http</keyword>
    <keyword>datagram</keyword>
    <keyword>udp</keyword>
    <keyword>tcp</keyword>
    <keyword>proxy</keyword>
    <keyword>tunnels</keyword>
    <keyword>quic in quic</keyword>
    <keyword>turtles all the way down</keyword>
    <keyword>masque</keyword>
    <keyword>http-ng</keyword>
    <keyword>dns</keyword>
    <abstract>
      <?line 57?>

<t>Proxying IP in HTTP allows building a VPN through HTTP load balancers. However,
at the time of writing, that mechanism doesn't offer a mechanism for
communicating DNS configuration information inline. In contrast, most existing
VPN protocols provide a mechanism to exchange DNS configuration information.
This document describes an extension that exchanges this information using HTTP
capsules. This mechanism supports encrypted DNS transports.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-masque.github.io/draft-ietf-masque-connect-ip-dns/draft-ietf-masque-connect-ip-dns.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-masque-connect-ip-dns/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Multiplexed Application Substrate over QUIC Encryption Working Group mailing list (<eref target="mailto:masque@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/masque/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/masque/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-masque/draft-ietf-masque-connect-ip-dns"/>.</t>
    </note>
  </front>
  <middle>
    <?line 66?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Proxying IP in HTTP (<xref target="CONNECT-IP"/>) allows building a VPN through
HTTP load balancers. However, at the time of writing, that mechanism doesn't
offer a mechanism for communicating DNS configuration information inline. In
contrast, most existing VPN protocols provide a mechanism to exchange DNS
configuration information (e.g., <xref target="IKEv2"/>). This document describes
an extension that exchanges this information using HTTP capsules
(<xref target="HTTP-DGRAM"/>). This document does not define any new ways to convey
DNS queries or responses, only a mechanism to exchange DNS configuration
information.</t>
      <t>Note that this extension is meant for cases where connect-ip is used like a
Remote Access VPN (see <xref section="8.1" sectionFormat="of" target="CONNECT-IP"/>) or Site-to-Site VPN
(see <xref section="8.2" sectionFormat="of" target="CONNECT-IP"/>), but not for cases like IP Flow Forwarding
(see <xref section="8.3" sectionFormat="of" target="CONNECT-IP"/>).</t>
      <t>This specification uses Service Bindings (<xref target="SVCB"/>) to exchange
information about nameservers, such as which encrypted DNS transport is
supported. This allows support for DNS over HTTPS (<xref target="DoH"/>), DNS over
QUIC (<xref target="DoQ"/>), DNS over TLS (<xref target="DoT"/>), unencrypted DNS over
UDP port 53 and TCP port 53 (<xref target="DNS"/>), as well as potential future DNS
transports.</t>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>This document uses terminology from <xref target="QUIC"/>. Where this document
defines protocol types, the definition format uses the notation from <xref section="1.3" sectionFormat="of" target="QUIC"/>. This specification uses the variable-length integer encoding
from <xref section="16" sectionFormat="of" target="QUIC"/>. Variable-length integer values do not
need to be encoded in the minimum number of bytes necessary.</t>
        <t>In this document, we use the term "nameserver" to refer to a DNS recursive
resolver as defined in <xref section="6" sectionFormat="of" target="DNS-TERMS"/>, and the term
"domain name" is used as defined in <xref section="2" sectionFormat="of" target="DNS-TERMS"/>.</t>
      </section>
    </section>
    <section anchor="mechanism">
      <name>Mechanism</name>
      <t>Similar to how Proxying IP in HTTP exchanges IP address configuration
information (<xref section="4.7" sectionFormat="of" target="CONNECT-IP"/>), this mechanism leverages capsules
to request DNS configuration information and to assign it. Similarly, this
mechanism is bidirectional: either endpoint can request DNS configuration
information by sending a DNS_REQUEST capsule, and either endpoint can send DNS
configuration information in a DNS_ASSIGN capsule. These capsules follow the
format defined below.</t>
      <section anchor="domain-structure">
        <name>Domain Structure</name>
        <figure anchor="domain-format">
          <name>Domain Format</name>
          <artwork><![CDATA[
Domain {
  Domain Length (i),
  Domain Name (..),
}
]]></artwork>
        </figure>
        <t>Each Domain contains the following fields:</t>
        <dl>
          <dt>Domain Length:</dt>
          <dd>
            <t>Length of the following Domain field, encoded as a variable-length integer.</t>
          </dd>
          <dt>Domain Name:</dt>
          <dd>
            <t>Fully Qualified Domain Name in DNS presentation format and using an
Internationalized Domain Names for Applications (IDNA) A-label
(<xref target="IDNA"/>).</t>
          </dd>
        </dl>
      </section>
      <section anchor="domain-struct">
        <name>Nameserver Structure</name>
        <figure anchor="ns-format">
          <name>Nameserver Format</name>
          <artwork><![CDATA[
Nameserver {
  Service Priority (16),
  IPv4 Address Count (i),
  IPv4 Address (32) ...,
  IPv6 Address Count (i),
  IPv6 Address (128) ...,
  Authentication Domain Name (..),
  Service Parameters Length (i),
  Service Parameters (..),
}
]]></artwork>
        </figure>
        <t>Each Nameserver structure contains the following fields:</t>
        <dl>
          <dt>Service Priority:</dt>
          <dd>
            <t>The priority of this attribute compared to other nameservers, as specified in
<xref section="2.4.1" sectionFormat="of" target="SVCB"/>. Since this specification relies on using Service
Bindings in ServiceMode (<xref section="2.4.3" sectionFormat="of" target="SVCB"/>), this field <bcp14>MUST NOT</bcp14> be set
to 0.</t>
          </dd>
          <dt>IPv4 Address Count:</dt>
          <dd>
            <t>The number of IPv4 Address fields following this field. Encoded as a
variable-length integer.</t>
          </dd>
          <dt>IPv4 Address:</dt>
          <dd>
            <t>Sequence of IPv4 Addresses that can be used to reach this nameserver. Encoded
in network byte order.</t>
          </dd>
          <dt>IPv6 Address Count:</dt>
          <dd>
            <t>The number of IPv6 Address fields following this field. Encoded as a
variable-length integer.</t>
          </dd>
          <dt>IPv6 Address:</dt>
          <dd>
            <t>Sequence of IPv6 Addresses that can be used to reach this nameserver. Encoded
in network byte order.</t>
          </dd>
          <dt>Authentication Domain Name:</dt>
          <dd>
            <t>A Domain structure (see <xref target="domain-struct"/>) representing the domain name of
the nameserver. This <bcp14>MAY</bcp14> be empty if the nameserver only supports unencrypted
DNS (as traditionally sent over UDP port 53 and TCP port 53).</t>
          </dd>
          <dt>Service Parameters Length:</dt>
          <dd>
            <t>Length of the following Service Parameters field, encoded as a
variable-length integer.</t>
          </dd>
          <dt>Service Parameters:</dt>
          <dd>
            <t>Set of service parameters that apply to this nameserver. Encoded using the
wire format specified in <xref section="2.2" sectionFormat="of" target="SVCB"/>.</t>
          </dd>
        </dl>
        <t>Service parameters allow exchanging additional information about the nameserver:</t>
        <ul spacing="normal">
          <li>
            <t>The "port" service parameter is used to indicate which port the nameserver is
reachable on. If no "port" service parameter is included, this indicates that
default port numbers should be used.</t>
          </li>
          <li>
            <t>The "alpn" service parameter is used to indicate which encrypted DNS
transports are supported by this nameserver. If the "no-default-alpn" service
parameter is omitted, that indicates that the nameserver supports unencrypted
DNS, as is traditionally sent over UDP port 53 and TCP port 53. In that case,
the sum of IPv4 Address Count and IPv6 Address Count <bcp14>MUST</bcp14> be nonzero. If
Authentication Domain Name is empty, the "alpn" and "no-default-alpn" service
parameter <bcp14>MUST</bcp14> be omitted.</t>
          </li>
          <li>
            <t>The "dohpath" service parameter is used to convey a relative DNS over HTTPS
URI Template, see <xref section="5" sectionFormat="of" target="SVCB-DNS"/>.</t>
          </li>
          <li>
            <t>The service parameters <bcp14>MUST NOT</bcp14> include "ipv4hint" or "ipv6hint" SvcParams,
as they are superseded by the included IP addresses.</t>
          </li>
        </ul>
      </section>
      <section anchor="dns-configuration-structure">
        <name>DNS Configuration Structure</name>
        <figure anchor="assigned-addr-format">
          <name>Assigned Address Format</name>
          <artwork><![CDATA[
DNS Configuration {
  Request ID (i),
  Nameserver Count (i),
  Nameserver (..) ...,
  Internal Domain Count (i),
  Internal Domain (..) ...,
  Search Domain Count (i),
  Search Domain (..) ...,
}
]]></artwork>
        </figure>
        <t>Each DNS Configuration contains the following fields:</t>
        <dl newline="true" spacing="normal">
          <dt>Request ID:</dt>
          <dd>
            <t>Request identifier, encoded as a variable-length integer. If this DNS
Configuration is part of a request, then this contains a unique request
identifier. If this DNS configuration is part of an assignment that is in
response to a DNS configuration request then this field <bcp14>SHALL</bcp14> contain the value
of the corresponding field in the request. If this DNS configuration is part of
an unsolicited assignment, this field <bcp14>SHALL</bcp14> be zero.</t>
          </dd>
          <dt>Nameserver Count:</dt>
          <dd>
            <t>The number of Nameserver structures following this field. Encoded as
a variable-length integer.</t>
          </dd>
          <dt>Nameserver:</dt>
          <dd>
            <t>A series of Nameserver structures representing nameservers.</t>
          </dd>
          <dt>Internal Domain Count:</dt>
          <dd>
            <t>The number of Domain structures following this field. Encoded as a
variable-length integer.</t>
          </dd>
          <dt>Internal Domain:</dt>
          <dd>
            <t>A series of Domain structures representing internal domain names.</t>
          </dd>
          <dt>Search Domain Count:</dt>
          <dd>
            <t>The number of Domain structures following this field. Encoded as a
variable-length integer.</t>
          </dd>
          <dt>Search Domain:</dt>
          <dd>
            <t>A series of Domain structures representing search domains.</t>
          </dd>
        </dl>
      </section>
      <section anchor="dns-req">
        <name>DNS_REQUEST Capsule</name>
        <t>The DNS_REQUEST capsule (see <xref target="iana"/> for the value of the capsule type) allows
an endpoint to request DNS configuration from its peer. The capsule allows the
endpoint to optionally indicate a preference for which DNS configuration it
would get assigned. The sender can indicate that it has no preference by not
sending any nameservers or domain names in its request DNS Configuration.</t>
        <figure anchor="dns-req-format">
          <name>DNS_REQUEST Capsule Format</name>
          <artwork><![CDATA[
DNS_REQUEST Capsule {
  Type (i) = DNS_REQUEST,
  Length (i),
  DNS Configuration (..),
}
]]></artwork>
        </figure>
        <t>When sending a DNS_REQUEST capsule, the sender <bcp14>MUST</bcp14> generate and send a new
non-zero request ID that was not previously used on this IP Proxying stream.
Note that this request ID namespace is distinct from the one used by
ADDRESS_ASSIGN capsules (see <xref section="4.7.1" sectionFormat="of" target="CONNECT-IP"/>).</t>
        <t>An endpoint that receives a DNS_REQUEST capsule <bcp14>SHALL</bcp14> reply by sending a
DNS_ASSIGN capsule with the corresponding request ID. That DNS_ASSIGN capsule
<bcp14>MAY</bcp14> be empty, that indicates that its sender has no DNS configuration to share
with its peer.</t>
      </section>
      <section anchor="dns-assign">
        <name>DNS_ASSIGN Capsule</name>
        <t>The DNS_ASSIGN capsule (see <xref target="iana"/> for the value of the capsule type) allows
an endpoint to send DNS configuration to its peer.</t>
        <figure anchor="dns-assign-format">
          <name>DNS_ASSIGN Capsule Format</name>
          <artwork><![CDATA[
DNS_ASSIGN Capsule {
  Type (i) = DNS_ASSIGN,
  Length (i),
  DNS Configuration (..),
}
]]></artwork>
        </figure>
        <t>When sending a DNS_ASSIGN capsule in response to a received DNS_REQUEST
capsule, the Request ID field in the DNS_ASSIGN capsule <bcp14>SHALL</bcp14> be set to the
value in the received DNS_REQUEST capsule. Otherwise the request ID <bcp14>MUST</bcp14> be set
to zero.</t>
      </section>
    </section>
    <section anchor="handling">
      <name>Handling</name>
      <t>Note that internal domains include subdomains. In other words, if the DNS
configuration contains a domain, that indicates that the corresponding domain
and all of its subdomains can be resolved by the nameservers exchanged in the
same DNS configuration. Sending an empty string as an internal domain indicates
the DNS root; i.e., that the corresponding nameserver can resolve all domain
names.</t>
      <t>As with other IP Proxying capsules, the receiver can decide whether to use or
ignore the configuration information. For example, in the consumer VPN
scenario, clients will trust the IP proxy and apply received DNS configuration,
whereas IP proxies will ignore any DNS configuration sent by the client.</t>
      <t>If the IP proxy sends a DNS_ASSIGN capsule containing a DNS over HTTPS
nameserver, then the client can validate whether the IP proxy is authoritative
for the origin of the URI template. If this validation succeeds, the client
<bcp14>SHOULD</bcp14> send its DNS queries to that nameserver directly as independent HTTPS
requests. When possible, those requests <bcp14>SHOULD</bcp14> be coalesced over the same HTTPS
connection.</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <section anchor="full-tunnel-consumer-vpn">
        <name>Full-Tunnel Consumer VPN</name>
        <t>A full-tunnel consumer VPN hosted at masque.example could configure the client
to use DNS over HTTPS to the IP proxy itself by sending the following
configuration.</t>
        <figure anchor="ex-doh">
          <name>Full Tunnel Example</name>
          <artwork><![CDATA[
DNS Configuration = {
  Nameservers = [{
    Service Priority = 1,
    IPv4 Address = [],
    IPv6 Address = [],
    Authentication Domain Name = "masque.example",
    Service Parameters = {
      alpn=h2,h3
      dohpath=/dns-query{?dns}
    },
  }],
  Internal Domains = [""],
  Search Domains = [],
}
]]></artwork>
        </figure>
      </section>
      <section anchor="split-tunnel-enterprise-vpn">
        <name>Split-Tunnel Enterprise VPN</name>
        <t>An enterprise switching their preexisting IKEv2/IPsec split-tunnel VPN to
connect-ip could use the following configuration.</t>
        <figure anchor="ex-split">
          <name>Split Tunnel Example</name>
          <artwork><![CDATA[
DNS Configuration = {
  Nameservers = [{
    Service Priority = 1,
    IPv4 Address = [192.0.2.33],
    IPv6 Address = [2001:db8::1],
    Authentication Domain Name = "",
    Service Parameters = {},
  }],
  Internal Domains = ["internal.corp.example"],
  Search Domains = [
    "internal.corp.example",
    "corp.example",
  ],
}
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Acting on received DNS_ASSIGN capsules can have significant impact on endpoint
security. Endpoints <bcp14>MUST</bcp14> ignore DNS_ASSIGN capsules unless it has reason to
trust its peer and is expecting DNS configuration from it.</t>
      <t>This mechanism can cause an endpoint to use a nameserver that is outside of the
connect-ip tunnel. While this is acceptable in some scenarios, in others it
could break the privacy properties provided by the tunnel. To avoid this,
implementations need to ensure that DNS_ASSIGN capsules are not sent before the
corresponding ROUTE_ADVERTISEMENT capsule.</t>
      <t>The requirement for an endpoint to always send DNS_ASSIGN capsules in response
to DNS_REQUEST capsules could lead it to buffer unbounded amounts of memory if
the underlying stream is blocked by flow or congestion control. Implementations
<bcp14>MUST</bcp14> place an upper bound on that buffering and abort the stream if that limit
is reached.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document, if approved, will request IANA add the following values to the
"HTTP Capsule Types" registry maintained at
&lt;<eref target="https://www.iana.org/assignments/masque"/>&gt;.</t>
      <table anchor="iana-capsules-table">
        <name>New Capsules</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Capsule Type</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0x818F79E</td>
            <td align="left">DNS_ASSIGN</td>
          </tr>
          <tr>
            <td align="left">0x818F79F</td>
            <td align="left">DNS_REQUEST</td>
          </tr>
        </tbody>
      </table>
      <t>Note that, if this document is approved, the values defined above will be
replaced by smaller ones before publication.</t>
      <t>All of these new entries use the following values for these fields:</t>
      <dl spacing="compact" newline="false">
        <dt>Status:</dt>
        <dd>
          <t>provisional (permanent if this document is approved)</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Change Controller:</dt>
        <dd>
          <t>IETF</t>
        </dd>
        <dt>Contact:</dt>
        <dd>
          <t>masque@ietf.org</t>
        </dd>
        <dt>Notes:</dt>
        <dd>
          <t>None</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="CONNECT-IP">
          <front>
            <title>Proxying IP in HTTP</title>
            <author fullname="T. Pauly" initials="T." role="editor" surname="Pauly"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="A. Chernyakhovsky" initials="A." surname="Chernyakhovsky"/>
            <author fullname="M. Kühlewind" initials="M." surname="Kühlewind"/>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <date month="October" year="2023"/>
            <abstract>
              <t>This document describes how to proxy IP packets in HTTP. This protocol is similar to UDP proxying in HTTP but allows transmitting arbitrary IP packets. More specifically, this document defines a protocol that allows an HTTP client to create an IP tunnel through an HTTP server that acts as an IP proxy. This document updates RFC 9298.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9484"/>
          <seriesInfo name="DOI" value="10.17487/RFC9484"/>
        </reference>
        <reference anchor="HTTP-DGRAM">
          <front>
            <title>HTTP Datagrams and the Capsule Protocol</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes HTTP Datagrams, a convention for conveying multiplexed, potentially unreliable datagrams inside an HTTP connection.</t>
              <t>In HTTP/3, HTTP Datagrams can be sent unreliably using the QUIC DATAGRAM extension. When the QUIC DATAGRAM frame is unavailable or undesirable, HTTP Datagrams can be sent using the Capsule Protocol, which is a more general convention for conveying data in HTTP connections.</t>
              <t>HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions, not applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9297"/>
          <seriesInfo name="DOI" value="10.17487/RFC9297"/>
        </reference>
        <reference anchor="SVCB">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </reference>
        <reference anchor="DoH">
          <front>
            <title>DNS Queries over HTTPS (DoH)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <date month="October" year="2018"/>
            <abstract>
              <t>This document defines a protocol for sending DNS queries and getting DNS responses over HTTPS. Each DNS query-response pair is mapped into an HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8484"/>
          <seriesInfo name="DOI" value="10.17487/RFC8484"/>
        </reference>
        <reference anchor="DoQ">
          <front>
            <title>DNS over Dedicated QUIC Connections</title>
            <author fullname="C. Huitema" initials="C." surname="Huitema"/>
            <author fullname="S. Dickinson" initials="S." surname="Dickinson"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <date month="May" year="2022"/>
            <abstract>
              <t>This document describes the use of QUIC to provide transport confidentiality for DNS. The encryption provided by QUIC has similar properties to those provided by TLS, while QUIC transport eliminates the head-of-line blocking issues inherent with TCP and provides more efficient packet-loss recovery than UDP. DNS over QUIC (DoQ) has privacy properties similar to DNS over TLS (DoT) specified in RFC 7858, and latency characteristics similar to classic DNS over UDP. This specification describes the use of DoQ as a general-purpose transport for DNS and includes the use of DoQ for stub to recursive, recursive to authoritative, and zone transfer scenarios.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9250"/>
          <seriesInfo name="DOI" value="10.17487/RFC9250"/>
        </reference>
        <reference anchor="DoT">
          <front>
            <title>Specification for DNS over Transport Layer Security (TLS)</title>
            <author fullname="Z. Hu" initials="Z." surname="Hu"/>
            <author fullname="L. Zhu" initials="L." surname="Zhu"/>
            <author fullname="J. Heidemann" initials="J." surname="Heidemann"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <author fullname="D. Wessels" initials="D." surname="Wessels"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="May" year="2016"/>
            <abstract>
              <t>This document describes the use of Transport Layer Security (TLS) to provide privacy for DNS. Encryption provided by TLS eliminates opportunities for eavesdropping and on-path tampering with DNS queries in the network, such as discussed in RFC 7626. In addition, this document specifies two usage profiles for DNS over TLS and provides advice on performance considerations to minimize overhead from using TCP and TLS with DNS.</t>
              <t>This document focuses on securing stub-to-recursive traffic, as per the charter of the DPRIVE Working Group. It does not prevent future applications of the protocol to recursive-to-authoritative traffic.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7858"/>
          <seriesInfo name="DOI" value="10.17487/RFC7858"/>
        </reference>
        <reference anchor="DNS">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="DNS-TERMS">
          <front>
            <title>DNS Terminology</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="A. Sullivan" initials="A." surname="Sullivan"/>
            <author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/>
            <date month="January" year="2019"/>
            <abstract>
              <t>The Domain Name System (DNS) is defined in literally dozens of different RFCs. The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has sometimes changed in the decades since the DNS was first defined. This document gives current definitions for many of the terms used in the DNS in a single document.</t>
              <t>This document obsoletes RFC 7719 and updates RFC 2308.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8499"/>
          <seriesInfo name="DOI" value="10.17487/RFC8499"/>
        </reference>
        <reference anchor="IDNA">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version. It describes the document collection and provides definitions and other material that are common to the set. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
        <reference anchor="SVCB-DNS">
          <front>
            <title>Service Binding Mapping for DNS Servers</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>The SVCB DNS resource record type expresses a bound collection of endpoint metadata, for use when establishing a connection to a named service. DNS itself can be such a service, when the server is identified by a domain name. This document provides the SVCB mapping for named DNS servers, allowing them to indicate support for encrypted transport protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9461"/>
          <seriesInfo name="DOI" value="10.17487/RFC9461"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IKEv2">
          <front>
            <title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="C. Kaufman" initials="C." surname="Kaufman"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="October" year="2014"/>
            <abstract>
              <t>This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs). This document obsoletes RFC 5996, and includes all of the errata for it. It advances IKEv2 to be an Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="79"/>
          <seriesInfo name="RFC" value="7296"/>
          <seriesInfo name="DOI" value="10.17487/RFC7296"/>
        </reference>
        <reference anchor="IKEv2-DNS">
          <front>
            <title>Split DNS Configuration for the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="P. Wouters" initials="P." surname="Wouters"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This document defines two Configuration Payload Attribute Types (INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA) for the Internet Key Exchange Protocol version 2 (IKEv2). These payloads add support for private (internal-only) DNS domains. These domains are intended to be resolved using non-public DNS servers that are only reachable through the IPsec connection. DNS resolution for other domains remains unchanged. These Configuration Payloads only apply to split- tunnel configurations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8598"/>
          <seriesInfo name="DOI" value="10.17487/RFC8598"/>
        </reference>
        <reference anchor="IKEv2-SVCB">
          <front>
            <title>Internet Key Exchange Protocol Version 2 (IKEv2) Configuration for Encrypted DNS</title>
            <author fullname="M. Boucadair" initials="M." surname="Boucadair"/>
            <author fullname="T. Reddy.K" initials="T." surname="Reddy.K"/>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <author fullname="V. Smyslov" initials="V." surname="Smyslov"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies new Internet Key Exchange Protocol Version 2 (IKEv2) Configuration Payload Attribute Types to assign DNS resolvers that support encrypted DNS protocols, such as DNS over HTTPS (DoH), DNS over TLS (DoT), and DNS over QUIC (DoQ).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9464"/>
          <seriesInfo name="DOI" value="10.17487/RFC9464"/>
        </reference>
      </references>
    </references>
    <?line 463?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The mechanism in this document was inspired by <xref target="IKEv2"/>,
<xref target="IKEv2-DNS"/>, and <xref target="IKEv2-SVCB"/>. The authors would like to
thank <contact fullname="Alex Chernyakhovsky"/>, <contact fullname="Tommy Pauly"/>, and other enthusiasts in
the MASQUE Working Group for their contributions.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
lSnjOgAA

-->

</rfc>
