<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GQ&#039;s blog &#187; BIND</title>
	<atom:link href="http://gq.net.ru/tag/bind/feed/" rel="self" type="application/rss+xml" />
	<link>http://gq.net.ru</link>
	<description>Next step is the world domination...</description>
	<lastBuildDate>Wed, 25 Aug 2010 19:29:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>MyDNS to BIND convert script</title>
		<link>http://gq.net.ru/2009/09/27/mydns-to-bind-convert-script/</link>
		<comments>http://gq.net.ru/2009/09/27/mydns-to-bind-convert-script/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 13:34:24 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[BIND]]></category>
		<category><![CDATA[ispconfig]]></category>
		<category><![CDATA[IXFR]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MyDNS]]></category>

		<guid isPermaLink="false">http://gq.net.ru/?p=364</guid>
		<description><![CDATA[Понадобилось мне тут на одном хосте поднять ispconfig. Ниче так, работает, одна проблема: для поддержки DNS там используется MyDNS (реально mydns-ng), который как-то странно работает. В частности он не умеет (не смотря на заявления автора) IXFR, так что на нормальные вторичники зона не трансферится, пока там явно не включишь request-ixfr no; для первичного сервера. И [...]]]></description>
			<content:encoded><![CDATA[<p>Понадобилось мне тут на одном хосте поднять ispconfig. Ниче так, работает, одна проблема: для поддержки DNS там используется MyDNS (реально mydns-ng), который как-то странно работает. В частности он не умеет (не смотря на заявления автора) IXFR, так что на нормальные вторичники зона не трансферится, пока там явно не включишь request-ixfr no; для первичного сервера. И вроде как заменить MyDNS нечем, исправить нереально, а работать должно. В итоге родилась извращенная идея генерить гонфиги и зоны для BIND на лету. Был написан такой скрипт:</p>
<pre>#!/bin/sh

rm -f /etc/bind/mydns/db.*
echo -n > /etc/bind/named.conf.mydns

echo "select origin from dns_soa where active='Y';" | mysql --defaults-file=/etc/mysql/debian.cnf dbispconfig | while read DOMAIN;do
[ "$DOMAIN" = "origin" ]&amp;&amp;continue

mydnsexport "$DOMAIN" &gt; /etc/bind/mydns/db."$DOMAIN"

XFER=$(echo "select xfer from dns_soa where origin=\"$DOMAIN\"" | mysql --defaults-file=/etc/mysql/debian.cnf dbispconfig | tail -n1|tr , \;| sed -e 's/;;/;/g' -e 's/^;$//')\;

echo "zone \"$DOMAIN\" { type master; allow-transfer { $XFER }; file \"/etc/bind/mydns/db.$DOMAIN\"; };" &gt;&gt; /etc/bind/named.conf.mydns

done

/etc/init.d/bind9 reload &gt; /dev/null</pre>
<p>где /etc/mysql/debian.cnf &#8211; это файл содержащий параметры доступа к mysql:</p>
<pre>[client]
host     = localhost
user     = root
password = password
socket   = /var/run/mysqld/mysqld.sock</pre>
<p>Правда, как оказалось, mydnsexport генерирует невалидный файл зоны, так что пришлось его слегка пропатчить:</p>
<pre>diff -rNu mydns-1.2.8/src/lib/rr.c mydns-1.2.8.patched/src/lib/rr.c
--- mydns-1.2.8/src/lib/rr.c	2009-02-03 12:15:26.000000000 +0300
+++ mydns-1.2.8.patched/src/lib/rr.c	2009-09-27 05:00:26.000000000 +0400
@@ -866,6 +866,7 @@
 			     "%s%s%s"
 			     "%s%s"
 			     "%s%s"
+			     "%s"
 			     "%s",

 			     columns,
@@ -891,8 +892,9 @@
 			     (filter)? " AND " : "",
 			     (filter)? filter : "",

+			     " ORDER BY name,type",
 			     /* Optional sorting */
-			     (mydns_rr_use_stamp)? " ORDER BY stamp DESC" : "");
+			     (mydns_rr_use_stamp)? ",stamp DESC" : "");

   RELEASE(namequery);
</pre>
<p>Ну и вставить вызов скрипта в крон. Извращение, но работает.</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/09/27/mydns-to-bind-convert-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
