lsd0001

LSD0001: GNU Name System
Log | Files | Refs | README

commit 2699b32e91b3e54b9675a30dfa3c16d21877916d
parent bd47a611a2c52bcc9cb98fc4787416f64b031dbf
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Fri, 20 May 2022 22:54:11 +0200

add migration

Diffstat:
Mdraft-schanzen-gns.xml | 76+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 71 insertions(+), 5 deletions(-)

diff --git a/draft-schanzen-gns.xml b/draft-schanzen-gns.xml @@ -2,6 +2,7 @@ <!DOCTYPE rfc [ <!ENTITY RFC1034 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1034.xml"> <!ENTITY RFC1035 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1035.xml"> +<!ENTITY RFC1928 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1928.xml"> <!ENTITY RFC2119 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"> <!--<!ENTITY RFC2693 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2693.xml">--> <!ENTITY RFC2782 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2782.xml"> @@ -2963,6 +2964,7 @@ Purpose | Name | References | Comment </references> <references> <name>Informative References</name> + &RFC1928; &RFC4033; &RFC6066; &RFC7363; @@ -3144,9 +3146,14 @@ Purpose | Name | References | Comment </front> </reference> - - - + <reference anchor="nsswitch" target="https://www.gnu.org/software/libc/manual/html_node/Name-Service-Switch.html"> + <front> + <title>System Databases and Name Service Switch</title> + <author> + <organization>GNU Project</organization> + </author> + </front> + </reference> </references> <section> @@ -3309,7 +3316,7 @@ Value Symbol Symbol specification. </t> </section> - <section> + <section anchor="uc_virthost"> <name>Virtual Hosting</name> <t> HTTP virtual hosting and TLS Server Name Indication are common @@ -3382,7 +3389,66 @@ Host: 000G0037FH3QTBCK15Y8BCCNRVWPV17ZC7TSGB1C9ZG2TPGHZVFV1GMG3W For example, the name in the URL bar may remain as "www.example.gnu" even if the used unique name differs. </t> - </section> + </section> + <section> + <name>Migration Paths</name> + <t> + DNS resolution is built into a variety of existing software + components. + Most significantly operating systems and HTTP clients. + This section illustrates possible migration paths for both in order + to enable "legacy" applications to resolve GNS names. + </t> + <t> + One way to efficiently facilitate the resolution of GNS names + are GNS-enabled DNS server implementations. + Local DNS queries are thereby either rerouted or explicitly configured + to be resolved by a "DNS-to-GNS" server that runs locally. + This DNS server tries to interpret any incoming query for a name + as a GNS resolution request. + If no start zone can be found for the name and it does not end in + a zTLD, the server tries to resolve the name in DNS. + Otherwise, the name is resolved in GNS. + In the latter case, the resulting record set is converted to a DNS + answer packet and is returned accordingly. + An implementation of a DNS-to-GNS server can be found in + <xref target="GNUnet"/>. + </t> + <t> + A similar approach is to use operating systems extensions such as + the name service switch (<xref target="nsswitch"/>). + It allows the system administrator to configure plugins + which are used for hostname resolution. + A GNS name service switch plugin can be used in a similar fashion as + the "DNS-to-GNS" server. + An implementation of a glibc-compatible nsswitch plugin for GNS + can be found in <xref target="GNUnet"/>. + </t> + <t> + The methods above are usually also effective for HTTP client + software. + However, HTTP clients are commonly used in combination with + TLS. + TLS certificate validation and in particular server name indication + (SNI) requires additional logic in HTTP clients when GNS names are + in play (<xref target="uc_virthost"/>). + In order to transparently enable this functionality for migration + purposes, a local GNS-aware SOCKS5 proxy <xref target="RFC1928"/> + can be configured to resolve domain names. + The SOCKS5 proxy, similar to the DNS-to-GNS server, is capable + of resolving both GNS and DNS names. + In the event of a TLS connection request with a GNS name, the SOCKS5 + proxy can act as a man-in-the-middle, terminating the TLS connection + and establishing a secure connection against the requested host. + In order to establish a secure connection, the proxy may use LEHO + and TLSA records stored in the record set under the GNS name. + The proxy must provide a locally trusted certificate for the GNS + name to the HTTP client which usually requires the generation and + configuration of a local trust anchor in the browser. + An implementation of this SOCKS5 proxy can be found in + <xref target="GNUnet"/>. + </t> + </section> </section> <section> <name>Example flows</name>