dnscacheをTCP専用化について、ここに記述してください。

資料: http://djbdns.qmail.jp/ djbdns 文書の日本語訳

仙石さんのページにある変更をおこなったdnscacheをテスト中です。 -- ToshinoriMaeno 2011-05-22 01:57:56


http://www.gcd.org/blog/2006/06/77/ TCPを使ったDNS問い合わせ(仙石浩明)

広く普及しているネームサーバ実装の一つである djbdns には、 
UDP 問合わせに失敗したり、あるいは 512バイト以上の問合わせを行なう際は、 TCP にて問合わせを行なう機能があるが、
最初から TCP しか使わない (キャッシュ) ネームサーバがあると便利だろう。
すなわち、遠方のネームサーバへ TCP で問合わせを転送する、フォワード専用型サーバである。 

dns_transmit.c で定義されている dns_transmit_start() 関数の末尾部分で、
    if (len + 16 > 512) return firsttcp(d);
    return firstudp(d);
となっている部分を、
    /* if (len + 16 > 512) */ return firsttcp(d);
    return firstudp(d);
で置き換える。 

このようなパッチをあてた dnscache プログラムを、
環境変数 FORWARDONLY をセットした状態で呼び出せば、
「servers/@」に指定したキャッシュネームサーバへ TCP で問合わせを転送する、
フォワード専用型キャッシュネームサーバになる。