Change domain to .meshname
This commit is contained in:
		
							parent
							
								
									5c09a910c7
								
							
						
					
					
						commit
						9bb3f1ca2a
					
				
							
								
								
									
										16
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								README.md
									
									
									
									
									
								
							| @ -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 | ||||||
|  | |||||||
| @ -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) | ||||||
|  | |||||||
| @ -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 = "" | ||||||
|  | |||||||
							
								
								
									
										35
									
								
								protocol.md
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								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  | 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. |  | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user