diff --git a/README.md b/README.md index 4d62109..43791ca 100644 --- a/README.md +++ b/README.md @@ -35,28 +35,28 @@ In this example, meshnamed is configured as authoritative for two domain zones: { "Domain":"aiag7sesed2aaxgcgbnevruwpy", "Records": [ - "aiag7sesed2aaxgcgbnevruwpy.mesh.arpa. AAAA 200:6fc8:9220:f400:5cc2:305a:4ac6:967e", - "_xmpp-client._tcp.aiag7sesed2aaxgcgbnevruwpy.mesh.arpa. SRV 5 0 5222 xmpp.aiag7sesed2aaxgcgbnevruwpy.mesh.arpa", - "_xmpp-server._tcp.aiag7sesed2aaxgcgbnevruwpy.mesh.arpa. SRV 5 0 5269 xmpp.aiag7sesed2aaxgcgbnevruwpy.mesh.arpa", - "xmpp.aiag7sesed2aaxgcgbnevruwpy.mesh.arpa. AAAA 300:6fc8:9220:f400::1", - "forum.aiag7sesed2aaxgcgbnevruwpy.mesh.arpa. CNAME amag7sesed2aaaaaaaaaaaaaau.mesh.arpa." + "aiag7sesed2aaxgcgbnevruwpy.meshname. AAAA 200:6fc8:9220:f400:5cc2:305a:4ac6:967e", + "_xmpp-client._tcp.aiag7sesed2aaxgcgbnevruwpy.meshname. SRV 5 0 5222 xmpp.aiag7sesed2aaxgcgbnevruwpy.meshname", + "_xmpp-server._tcp.aiag7sesed2aaxgcgbnevruwpy.meshname. SRV 5 0 5269 xmpp.aiag7sesed2aaxgcgbnevruwpy.meshname", + "xmpp.aiag7sesed2aaxgcgbnevruwpy.meshname. AAAA 300:6fc8:9220:f400::1", + "forum.aiag7sesed2aaxgcgbnevruwpy.meshname. CNAME amag7sesed2aaaaaaaaaaaaaau.meshname." ] } { "Domain":"amag7sesed2aaaaaaaaaaaaaau", "Records":[ - "amag7sesed2aaaaaaaaaaaaaau.mesh.arpa. AAAA 300:6fc8:9220:f400::5" + "amag7sesed2aaaaaaaaaaaaaau.meshname. AAAA 300:6fc8:9220:f400::5" ] } -## Configure dnsmasq as a primary DNS resolver with "mesh.arpa." support +## Configure dnsmasq as a primary DNS resolver with "meshname." support `/etc/dnsmasq.conf` port=53 domain-needed bogus-priv - server=/mesh.arpa/::1#53535 + server=/meshname/::1#53535 server=8.8.8.8 ## Using meshnamed as a standalone DNS server diff --git a/cmd/meshname/main.go b/cmd/meshname/main.go index 7d313f7..7f71636 100644 --- a/cmd/meshname/main.go +++ b/cmd/meshname/main.go @@ -9,7 +9,7 @@ import ( "errors" ) -var domainZone = ".mesh.arpa" +var domainZone = ".meshname" func reverse_lookup(target string) (string, error) { ip := net.ParseIP(target) diff --git a/cmd/meshnamed/main.go b/cmd/meshnamed/main.go index 3dfc89c..97710b8 100644 --- a/cmd/meshnamed/main.go +++ b/cmd/meshnamed/main.go @@ -13,7 +13,7 @@ import ( "github.com/miekg/dns" ) -const domainZone = "mesh.arpa." +const domainZone = "meshname." var _, validSubnet, _ = net.ParseCIDR("::/0") var zoneConfigPath = "" diff --git a/protocol.md b/protocol.md index 9175317..a644567 100644 --- a/protocol.md +++ b/protocol.md @@ -16,12 +16,12 @@ base32 notation for deriving a globally unique name space managed by that node. Since there is no need for a global authority or consensus, such a naming system will reliably work in any network split scenarios. -".mesh.arpa" is meant to be used by machines, not by humans. A human-readable +".meshname" is meant to be used by machines, not by humans. A human-readable naming system would require a lot more engineering effort. -## How .mesh.arpa domains work +## How .meshname domains work -Each mesh node can manage its own unique name space in "mesh.arpa." zone. +Each mesh node can manage its own unique name space in "meshname." zone. The name space is derived from its IPv6 address as follows: 1) IPv6 address is converted to its binary form of 16 bytes: @@ -37,29 +37,29 @@ The name space is derived from its IPv6 address as follows: 3) Padding symbols "======" are removed from the end of the string. The resulting name space managed by '200:6fc8:9220:f400:5cc2:305a:4ac6:967e' -is "aiag7sesed2aaxgcgbnevruwpy.mesh.arpa." +is "aiag7sesed2aaxgcgbnevruwpy.meshname." -In order to resolve a domain in "xxx.mesh.arpa." space, the client derives IPv6 -address from the third level domain "xxx" and use it as authoritative DNS server +In order to resolve a domain in "xxx.meshname." space, the client derives IPv6 +address from the second level domain "xxx" and use it as authoritative DNS server for that zone. -"xxx.mesh.arpa" name is itself managed by the DNS server derived from "xxx" and +"xxx.meshname" name is itself managed by the DNS server derived from "xxx" and can point to any other IPv6 address. ## Resolving process explained 1) A client application makes a request to a resolver. -I.e. request AAAA record for "test.aiag7sesed2aaxgcgbnevruwpy.mesh.arpa.". +I.e. request AAAA record for "test.aiag7sesed2aaxgcgbnevruwpy.meshname.". -2) When a resolver detects "mesh.arpa." domain, it extracts a third level -domain from it. In this example, "aiag7sesed2aaxgcgbnevruwpy.mesh.arpa.". +2) When a resolver detects "meshname." domain, it extracts the second level +domain from it. In this example, "aiag7sesed2aaxgcgbnevruwpy.meshname.". 3) If the resolver is configured as an authoritative server for that domain, it sends back a response as a regular DNS server would do. 4) If it's not, the resolver derives IPv6 address of the corresponding -authoritative DNS server from the third level domain. -For "aiag7sesed2aaxgcgbnevruwpy.mesh.arpa." the authoritative server is +authoritative DNS server from the second level domain. +For "aiag7sesed2aaxgcgbnevruwpy.meshname." the authoritative server is "200:6fc8:9220:f400:5cc2:305a:4ac6:967e". The resolver then relays clients request to a derived server address and relays a response back to the client. @@ -67,17 +67,10 @@ relays a response back to the client. ## Why not .ip6.arpa There is a special domain for reverse DNS lookups, but it takes 72 characters to -store a single value. The same value in .mesh.arpa takes 36 characters. +store a single value. The same value in .meshname takes 35 characters. "e.7.6.9.6.c.a.4.a.5.0.3.2.c.c.5.0.0.4.f.0.2.2.9.8.c.f.6.0.0.2.0.ip6.arpa" -versus "aiag7sesed2aaxgcgbnevruwpy.mesh.arpa." +versus "aiag7sesed2aaxgcgbnevruwpy.meshname" This saves twice amount of bandwidth and storage space. It is also arguably more aesthetically appealing, even though that's not a goal. - -## Why .arpa - -".arpa" is a special domain reserved for Internet infrastructure. There is a -similar special-use domain for home networks ".home.arpa" specified in RFC 8375. -If ".mesh.arpa" will become widely used it could also be standardized, otherwise -it won't break much.