Knot DNS na OpenWRT

Projekt autoritativního serveru Knot DNS již není třeba představovat. Stojí však za zmínku, že lze server rovněž provozovat i v prostředí OpenWRT, a tedy i na routeru Turris. Dnes si tu popíšeme jak na to.

Ačkoli balíček Knota nebyl dosud začleněn do repozitáře OpenWRT, můžeme si ze stránek projektu stáhnout port balíčku, pomocí kterého si již snadno sestavíme binánární balíček pro naši konkrétní architekturu.

V našem příkladu budeme předpokládat, že pracujeme s OpenWRT verze 12.09. Některé starší verze jsou rovněž podporované. V případě hlavní vývojové větve je průběh ještě jednodušší, neboť potřebná závislost, knihovna liburcu, je v ní již začleněna.

Začneme stažením prostředí Buildroot:
git clone --depth 1 git://git.openwrt.org/12.09/openwrt.git

Jak již bylo zmíněno, OpenWRT 12.09 neobsahuje balíček knihovny liburcu. Proto si ho vypůjčíme z vývojové větve:
git clone --depth 1 git://git.openwrt.org/packages.git
cp -a ./packages/libs/liburcu ./openwrt/package/


Nyní už jen zbývá samotný port Knot DNS verze 1.4.4:
wget https://www.knot-dns.cz/static/download/knot-1.4.4-owrt.tar.gz
tar -xzf knot-1.4.4-owrt.tar.gz
cp -a ./knot ./openwrt/package/


Nastavení překladu provedeme následující sekvencí příkazů:
cd openwrt
make defconfig
make prereq
make menuconfig


V konfigurátoru nastavíme požadovanou platformu (např. ar71xx):
Target System>ar71xx
a zaškrtneme balíček serveru:
Network>IP Addresses and Names>knot
Dále můžeme zaškrtnout pomocné utility (kdig, khost, knsupdate a knsec3hash):
Network>IP Addresses and Names>knot-utils
A pokud si chceme ověřit, že Knot bude pracovat správně na naší platformě, zvolíme i sadu základních testů:
Network>IP Addresses and Names>knot-tests

Následuje překlad potřebných utilit a našich balíčků:
make tools/install
make toolchain/install
make package/knot/compile


Po několika desítkách minut se můžeme tešit na balíčky:
./bin/ar71xx/packages/knot_1.4.4-1_ar71xx.ipk
./bin/ar71xx/packages/knot-utils_1.4.4-1_ar71xx.ipk
./bin/ar71xx/packages/knot-tests_1.4.4-1_ar71xx.ipk
./bin/ar71xx/packages/liburcu_0.7.6-1_ar71xx.ipk


Předchozí soubory nakopírujeme na cílové zařízení (scp) a připojíme se na terminál (ssh).

Následuje instalace:
opkg install liburcu_0.7.6-1_ar71xx.ipk
opkg install knot_1.4.4-1_ar71xx.ipk
opkg install knot-utils_1.4.4-1_ar71xx.ipk
opkg install knot-tests_1.4.4-1_ar71xx.ipk


Základní testy spustíme:
cd /usr/share/knot/tests
./runtests -l TESTS -b /tmp

Celý článek