V létě se děje spoustu věcí, ale pokaždé v tu nejméně vhodnou chvíli. Tak už to bývá. Teď nemáme úplně vlny vyder, nebo ne alepoň na té úrovni, že by to jakkoliv ovlivňovalo chod sítí a systémů, tuc tuc. Přesto čas od času dojde ke katastrofě a nemusí to být zrovna na globální úrovni, kdy zhavarují letiště.
V BIND9 se objevilo nedávno pár bugů, které někdo svědomitě opravil. Všechna čest, jistě, ale značný smysl to má pro velké stroje se spousto zón, ne už tolik pro domácí a vlastně izolovanou lokální doménu se Sambou, kde BIND9 funguje jako backend DNS. Tyhle stroje, v mém případě virtuální, by asi nemusely být úplně aktualizované, přesto je mám jako Debian stable s unattended-upgrades. No a jak se dalo čekat, oprava způsobila nějakou magii, jejímž výsledkem bylo, že BIND9 pokaždé spadnul, když se pokusil otevřít sdílený objekt pro komunikaci se Sambou – konkrétně to u dlz_open hlásilo něco jako named: munmap_chunk(): invalid pointer, což se děje, pokud se špatně uvolňuje alokovaná paměť. Problém je, že nic moc na to nezabralo, ať už šlo o dílčí aktualizaci balíků, nebo pokus o povýšení celého distra. No a nějak to opravit ručně asi taky není řešení na jednu minutu. Výsledek? Nejde nám DNS s lokální zónou, svět je v plamenech.
Takovým dočasným hotfixem je ale nastavení prostředí BIND9 tak, aby symboly modulu nenačítal do paměti hned při startu, ale použil se lazy binding až v momentě, kdy to je potřeba – to má svoje nevýhody, ale jak říkám, v domácím prostředí tam není prakticky žádný dopad na výkon. Příznak se dá nastavit buď přímo do systemd jednotky, nebo v rámci Debianu v /etc/default/named následovně.
# /etc/default/named RESOLVCONF=no OPTIONS="-u bind" LDB_MODULES_DISABLE_DEEPBIND=1
Je otázka, zda se v budoucnosti neobjeví ještě více možných backendů, třeba takové DLZ pro Knot. To by určitě mělo spoustu výhod, ale třeba taky ne – každopádně tento letní zónový hotfix zase pro jednou odstranil kajmana ze srdíčka a letní dny mohou spokojeně pokračovat.