dnscacheをTCP専用化について、ここに記述してください。
資料: http://djbdns.qmail.jp/ djbdns 文書の日本語訳
仙石さんのページにある変更をおこなったdnscacheをテスト中です。 -- ToshinoriMaeno 2011-05-22 01:57:56
qmail.jp のDNSサーバは一部しかTCP対応させていないので、ときどきquery がタイムアウトします。:-<
- メイルの送受信に問題なければ、このままテストを続行します。
- dnscache以外にも影響があるので、dnscacheだけを置き換える必要があります。
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 で問合わせを転送する、 フォワード専用型キャッシュネームサーバになる。