我已经配置了绑定 dns 服务器。
这是他的配置和我的设置:
zone "lokha.local" {
type forward;
forward only;
forwarders { 116.202.112.23; };
};
options {
directory "/var/cache/bind";
dnssec-validation no;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { none; };
listen-on port 57 { 127.0.0.1; };
forwarders {
8.8.8.8;
8.8.4.4;
};
recursion yes;
allow-transfer {"none";};
allow-query { any; };
allow-recursion { any; };
forward first;
querylog yes;
};
配置配置为将本地区域请求重定向lokha.local
到我的 dns 服务器116.202.112.23
。
我的 dns 服务器116.202.112.23
只能响应 TCP dns 请求,因为 UDP 流量被防火墙阻止。
我用命令测试 dns 请求:
dig @127.0.0.1 +vc -p 57 host5.lokha.local
该参数+vc
通过 TCP 发出请求。
但是 bind 仍然尝试通过 UDP 发出请求:
21:49:13.042919 IP (tos 0x0, ttl 64, id 10022, offset 0, flags [none], proto UDP (17), length 77)
135.181.112.32.22902 > 116.202.112.23.53: [bad udp cksum 0x29e8 -> 0x5f4c!] 12467+% [1au] A? host5.lokha.local. ar: . OPT UDPsize=512 DO (49)
如何强制bind9使用TCP?
为了做我想做的事,我需要将此设置添加到 bind9 配置中:
但是旧版本的bind9没有这个设置,所以bind9需要更新。
我用这些命令做到了: