diff --git a/package/gluon-dns-cache/Makefile b/package/gluon-dns-cache/Makefile new file mode 100644 index 00000000..55438b97 --- /dev/null +++ b/package/gluon-dns-cache/Makefile @@ -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)) + diff --git a/package/gluon-dns-cache/README.md b/package/gluon-dns-cache/README.md new file mode 100644 index 00000000..c2a5a1bc --- /dev/null +++ b/package/gluon-dns-cache/README.md @@ -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. + +
+ +##### 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 + diff --git a/package/gluon-dns-cache/check_site.lua b/package/gluon-dns-cache/check_site.lua new file mode 100644 index 00000000..69675e54 --- /dev/null +++ b/package/gluon-dns-cache/check_site.lua @@ -0,0 +1,3 @@ +need_string_match('dns.cacheentries', '^%d$') +need_string_array('dns.servers') +need_string_match('next_node.ip6', '^[%x:]+$') diff --git a/package/gluon-dns-cache/files/lib/gluon/upgrade/820-dns-config b/package/gluon-dns-cache/files/lib/gluon/upgrade/820-dns-config new file mode 100755 index 00000000..b4ed7b31 --- /dev/null +++ b/package/gluon-dns-cache/files/lib/gluon/upgrade/820-dns-config @@ -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')