add gluon-dns-config: a package that enables the next node to be used as dns cache

This commit is contained in:
Christof Schulze 2016-12-30 17:22:22 +01:00
parent edaeffe909
commit 842e1015e3
4 changed files with 92 additions and 0 deletions

View File

@ -0,0 +1,36 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=gluon-dns-config
PKG_VERSION:=1
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
include $(GLUONDIR)/include/package.mk
define Package/gluon-dns-config
SECTION:=gluon
CATEGORY:=Gluon
TITLE:=Use Node as DNS cache, configure using site.conf
DEPENDS:=+gluon-core
endef
define Package/gluon-legacy/description
Use Node as DNS cache, configure using site.conf
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
endef
define Build/Configure
endef
define Build/Compile
endef
define Package/gluon-dns-config/install
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,gluon-dns-config))

View File

@ -0,0 +1,39 @@
##### Hintergrund
Es ist erstrebenswert, die Menge der kleinen Datenpakete vom Router zum
Supernode zu reduzieren. Dabei hilft es, die DNS-Anfragen der Clients zu
den Supernodes zu reduzieren.
<br>
##### Das Packages
Durch dieses Package wird der Cache der Router-dnsmasq-Instanz, welche
auf Port 53 horcht, konfiguriert. Die Freifunk-Router halten dadurch
eine Anzahl von *dns.cacheentries* Einträgen im RAM des Routers vor.
Sollte ein DNS-Record im Cache nicht gefunden werden, wird einer der in
der Tabelle *dns.servers* angegebenen Server abgefragt.
Dieses Paket konfiguriert neben dem Cache auch die Namensauflösung für
die Host-Namen "*nextnode*". Die IP-Adressen werden aus der *site.conf*
ausgelesen.
#### Konfiguration
Die Konfiguration erfolgt per ***site.conf*** mit folgenden Parametern:
```
dns = {
cacheentries = 5000,
servers = { '2a06:8187:fb00:53::53', },
},
```
* ***cacheentries*** ist die Anzahl der Einträge, die der Cache aufnehmen soll.
Je Eintrag werden ca 90 Byte RAM benötigt. Der Speicher für alle Einträge wird
als Block beim Systemstart reserviert.
* ***servers*** ist eine Namens-Liste von Servern, welche bei Cache-Misses angefragt werden.
---
Siehe auch:
https://wiki.openwrt.org/doc/uci/dhcp
http://flux242.blogspot.de/2012/06/dnsmasq-cache-size-tuning.html

View File

@ -0,0 +1,3 @@
need_string_match('dns.cacheentries', '^%d$')
need_string_array('dns.servers')
need_string_match('next_node.ip6', '^[%x:]+$')

View File

@ -0,0 +1,14 @@
#!/usr/bin/lua
local site = require 'gluon.site_config'
local uci = require('luci.model.uci').cursor()
dnsmasq=uci:get_first("dhcp", "dnsmasq")
uci:set('dhcp', dnsmasq, 'cachesize', site.dns.cacheentries)
uci:set('dhcp', dnsmasq, 'server', site.dns.servers)
uci:set('dhcp', dnsmasq, 'localise_queries', '1')
uci:set('dhcp', dnsmasq, 'localservice', '0')
domain = uci:add('dhcp', 'domain')
uci:set('dhcp', domain, 'name', 'nextnode')
uci:set('dhcp', domain, 'ip', site.next_node.ip6 )
uci:save('dhcp')