1. dnscache
/CNAME /TCP専用化 /authority-patch /cache.c /net-com /nstld.com /program /query.c /sockaddr_in /tcp-patch /ubuntu /プログラム /説明 |
Contents
djbdns を構成しているdnscache (キャッシュサーバ) の解説
query type = ANY を 当面は A と見做す。-- ToshinoriMaeno 2021-06-02 20:10:20
DNSの仕組みの解説のあと、 前半部分がキャッシュサーバの説明になっている。
1.1. dnscache サービスディレクトリ
run :
exec 2>&1 exec <seed exec envdir ./env sh -c ' exec envuidgid Gdnscache softlimit -o250 -d "$DATALIMIT" /usr/local/bin/dnscache '
1.1.1. env
CACHESIZE DATALIMIT IP IPSEND ROOT
$ROOT環境変数で指定されたディレクトリにchrootして、 $UID と $GID 環境変数で指定された uid と gid として実行されます。
$IP の port 53 に向けて接続されてくる UDP パケットと TCP 接続を受け付けます。 通常は $IP は 127.0.0.1ですが、 外部からアクセスできる IP アドレスでもかまいません。
- $IPSENDの高位ポートからパケットを送り出します。 通常、$IPSEND は 0.0.0.0です。 これはマシンの主 IP アドレスを意味します。
1.1.2. root/
ip : ポート 53に対する UDP パケットと TCP 接続を受け付けるアドレス範囲
- ip/1.2.3.4, ip/1.2.3, ip/1.2, ip/1 のどれかのファイルが存在すれば、 IP アドレス 1.2.3.4 からのパケット/接続を受け付けます。
servers:
- servers/@ :ルートサーバのドット10進表記IPアドレスが一行にひとつ ずつ書かれているファイル
さらに、他ドメイン用のサーバの IP アドレスがあるかどうか、 servers ディレクトリを調べます。
例えば、servers/moon.af.milというファイルにアドレス表があったら、
- anything.moon.af.mil という形のものはそこのアドレスに問合せます。 anything.moon.af.milについては これら以外の他のサーバ(ルートサーバを含む)からのレコードは キャッシュしません。
環境変数 $FORWARDONLY が設定されていると、
- servers/@ にはルートサーバではなく、 他のキャッシュの IP アドレスの一覧があるものとして扱います。 問い合わせはクライアントが問合せを送るように これらのキャッシュに転送されます。 NS レコードに従って連鎖をたどっていくことはしません。