add gluon-dns-config: a package that enables the next node to be used as dns cache
This commit is contained in:
parent
edaeffe909
commit
842e1015e3
36
package/gluon-dns-cache/Makefile
Normal file
36
package/gluon-dns-cache/Makefile
Normal 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))
|
||||||
|
|
39
package/gluon-dns-cache/README.md
Normal file
39
package/gluon-dns-cache/README.md
Normal 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
|
||||||
|
|
3
package/gluon-dns-cache/check_site.lua
Normal file
3
package/gluon-dns-cache/check_site.lua
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
need_string_match('dns.cacheentries', '^%d$')
|
||||||
|
need_string_array('dns.servers')
|
||||||
|
need_string_match('next_node.ip6', '^[%x:]+$')
|
14
package/gluon-dns-cache/files/lib/gluon/upgrade/820-dns-config
Executable file
14
package/gluon-dns-cache/files/lib/gluon/upgrade/820-dns-config
Executable 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')
|
Loading…
Reference in New Issue
Block a user