Change domain to .meshname

This commit is contained in:
George 2020-02-03 14:32:44 -05:00
parent 5c09a910c7
commit 9bb3f1ca2a
4 changed files with 24 additions and 31 deletions

View File

@ -35,28 +35,28 @@ In this example, meshnamed is configured as authoritative for two domain zones:
{ {
"Domain":"aiag7sesed2aaxgcgbnevruwpy", "Domain":"aiag7sesed2aaxgcgbnevruwpy",
"Records": [ "Records": [
"aiag7sesed2aaxgcgbnevruwpy.mesh.arpa. AAAA 200:6fc8:9220:f400:5cc2:305a:4ac6:967e", "aiag7sesed2aaxgcgbnevruwpy.meshname. AAAA 200:6fc8:9220:f400:5cc2:305a:4ac6:967e",
"_xmpp-client._tcp.aiag7sesed2aaxgcgbnevruwpy.mesh.arpa. SRV 5 0 5222 xmpp.aiag7sesed2aaxgcgbnevruwpy.mesh.arpa", "_xmpp-client._tcp.aiag7sesed2aaxgcgbnevruwpy.meshname. SRV 5 0 5222 xmpp.aiag7sesed2aaxgcgbnevruwpy.meshname",
"_xmpp-server._tcp.aiag7sesed2aaxgcgbnevruwpy.mesh.arpa. SRV 5 0 5269 xmpp.aiag7sesed2aaxgcgbnevruwpy.mesh.arpa", "_xmpp-server._tcp.aiag7sesed2aaxgcgbnevruwpy.meshname. SRV 5 0 5269 xmpp.aiag7sesed2aaxgcgbnevruwpy.meshname",
"xmpp.aiag7sesed2aaxgcgbnevruwpy.mesh.arpa. AAAA 300:6fc8:9220:f400::1", "xmpp.aiag7sesed2aaxgcgbnevruwpy.meshname. AAAA 300:6fc8:9220:f400::1",
"forum.aiag7sesed2aaxgcgbnevruwpy.mesh.arpa. CNAME amag7sesed2aaaaaaaaaaaaaau.mesh.arpa." "forum.aiag7sesed2aaxgcgbnevruwpy.meshname. CNAME amag7sesed2aaaaaaaaaaaaaau.meshname."
] ]
} }
{ {
"Domain":"amag7sesed2aaaaaaaaaaaaaau", "Domain":"amag7sesed2aaaaaaaaaaaaaau",
"Records":[ "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` `/etc/dnsmasq.conf`
port=53 port=53
domain-needed domain-needed
bogus-priv bogus-priv
server=/mesh.arpa/::1#53535 server=/meshname/::1#53535
server=8.8.8.8 server=8.8.8.8
## Using meshnamed as a standalone DNS server ## Using meshnamed as a standalone DNS server

View File

@ -9,7 +9,7 @@ import (
"errors" "errors"
) )
var domainZone = ".mesh.arpa" var domainZone = ".meshname"
func reverse_lookup(target string) (string, error) { func reverse_lookup(target string) (string, error) {
ip := net.ParseIP(target) ip := net.ParseIP(target)

View File

@ -13,7 +13,7 @@ import (
"github.com/miekg/dns" "github.com/miekg/dns"
) )
const domainZone = "mesh.arpa." const domainZone = "meshname."
var _, validSubnet, _ = net.ParseCIDR("::/0") var _, validSubnet, _ = net.ParseCIDR("::/0")
var zoneConfigPath = "" var zoneConfigPath = ""

View File

@ -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 Since there is no need for a global authority or consensus, such a naming system
will reliably work in any network split scenarios. 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. 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: The name space is derived from its IPv6 address as follows:
1) IPv6 address is converted to its binary form of 16 bytes: 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. 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' 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 In order to resolve a domain in "xxx.meshname." space, the client derives IPv6
address from the third level domain "xxx" and use it as authoritative DNS server address from the second level domain "xxx" and use it as authoritative DNS server
for that zone. 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. can point to any other IPv6 address.
## Resolving process explained ## Resolving process explained
1) A client application makes a request to a resolver. 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 2) When a resolver detects "meshname." domain, it extracts the second level
domain from it. In this example, "aiag7sesed2aaxgcgbnevruwpy.mesh.arpa.". domain from it. In this example, "aiag7sesed2aaxgcgbnevruwpy.meshname.".
3) If the resolver is configured as an authoritative server for that 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. 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 4) If it's not, the resolver derives IPv6 address of the corresponding
authoritative DNS server from the third level domain. authoritative DNS server from the second level domain.
For "aiag7sesed2aaxgcgbnevruwpy.mesh.arpa." the authoritative server is For "aiag7sesed2aaxgcgbnevruwpy.meshname." the authoritative server is
"200:6fc8:9220:f400:5cc2:305a:4ac6:967e". "200:6fc8:9220:f400:5cc2:305a:4ac6:967e".
The resolver then relays clients request to a derived server address and The resolver then relays clients request to a derived server address and
relays a response back to the client. relays a response back to the client.
@ -67,17 +67,10 @@ relays a response back to the client.
## Why not .ip6.arpa ## Why not .ip6.arpa
There is a special domain for reverse DNS lookups, but it takes 72 characters to 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" "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 This saves twice amount of bandwidth and storage space. It is also arguably more
aesthetically appealing, even though that's not a goal. 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.