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