我有一个 DNS 服务器,可以解析对一组内部服务器的所有查询。它是 CentOS 5.5(与 RHEL5 相同)上的绑定,我已将其设置为允许递归和解析方向,而无需任何转发器。
我面临的问题是第一次解析名称需要非常长的时间。(以 20 秒为幅度)这会导致客户端超时。
当我将它设置为全部转发到 Google 的公共 DNS,即 8.8.8.8+8.8.4.4 时,它运行得非常好(在一秒钟内)。
我尝试监控网络上的流量,看看为什么会这样:
[root@ns1 ~]# tcpdump -nnvvvA -s0 udp
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
23:06:36.137797 IP (tos 0x0, ttl 64, id 35903, offset 0, flags [none], proto: UDP (17), length: 60) 172.17.1.10.36942 > 172.17.1.4.53: [udp sum ok] 19773+ A? www.paypal.com. (32)
E..<.?..@..A...
.....N.5.(6.M=...........www.paypal.com.....
23:06:36.140594 IP (tos 0x0, ttl 64, id 56477, offset 0, flags [none], proto: UDP (17), length: 71) …Run Code Online (Sandbox Code Playgroud) 我管理多个 BIND DNS 服务器(在 RHEL/Centos 上)用于权威查找(正向和反向)以及专用缓存服务。我一直只在包管理器中使用最新的稳定版 BIND,但想知道我是否应该编译最新的稳定版以“正确执行”。其他人做什么?编译的利与弊?
是否有任何好的前端工具来管理 BIND9 服务器?我想为用户提供登录和管理他们托管区域的能力。
这在某种程度上与用于执行 whois 的更改界面有关
不同之处在于我想知道是否可以仅为特定程序指定默认接口 - 而不是系统范围的。例如:假设我的服务器有多个 IP。我想运行程序 X(比如 wget)并且我希望它使用我的 IP 之一作为源地址。它看起来像这样:
theprogram --use-interface=1.2.3.4 wget google.com
Run Code Online (Sandbox Code Playgroud)
wget 将使用我的 IP 1.2.3.4 连接到 google.com 并获取 html。是否可以?
我一直在尝试使用 nsupdate 来动态更新我的域名服务器记录。
我尝试时遇到服务器故障。这是来自系统日志。
Nov 12 08:00:53 ps133045 named[14314]: client 78.72.53.42#50135: signer "www.mydomain.com" approved
Nov 12 08:00:53 ps133045 named[14314]: client 78.72.53.42#50135: updating zone 'mydomain.com/IN': adding an RR at 'client$
Nov 12 08:00:53 ps133045 named[14314]: /etc/bind/zones/mydomain.com.zone.jnl: create: permission denied
Nov 12 08:00:53 ps133045 named[14314]: client 78.72.53.42#50135: updating zone 'mydomain.com/IN': error: journal open fai$
Run Code Online (Sandbox Code Playgroud)
所以我认为这是权限,所以为了测试我给了 /var/named 和 /etc/bind chmod 666
没有帮助,所以我创建了 mydomain.com.zone.jnl 文件和 chmod 600 并认为可以,我也做了 chown bind:bind 和 root:bind,但在这两种情况下我仍然遇到相同的错误。
由于这个错误,现在我什至无法重新启动绑定
Nov 12 08:40:10 ps133045 named[21169]: loading configuration from '/etc/bind/named.conf'
Nov 12 …Run Code Online (Sandbox Code Playgroud) dig @ns7.embarqservices.net www.126.com A +dnssec +multiline
; <<>> DiG 9.7.3 <<>> @ns7.embarqservices.net www.126.com A +dnssec +multiline
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54408
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.126.com. IN A
;; ANSWER SECTION:
www.126.com. 17668 IN CNAME mcache.mail.163.com.
mcache.mail.163.com. 269 IN CNAME email.163.com.lxdns.com.
email.163.com.lxdns.com. 108 IN …Run Code Online (Sandbox Code Playgroud) 我的服务器有一个 IP 和多个托管域。
一个相同的 IP 出现在 named.conf 和几个区域文件中。
当服务器的 IP 地址更改时,我需要手动更改所有这些 IP。
有没有办法做这样的事情:
在named.conf中:
#define $IP 123.123.123.123
Run Code Online (Sandbox Code Playgroud)
区域文件:
MX 10 mail
A $IP
www A $IP
mail A $IP
* CNAME www
Run Code Online (Sandbox Code Playgroud)
任何帮助都会得到认可
我正在使用 测试我的 ddns 更新配置(用于托管在同一服务器上的 ISC DHCP)nsupdate,并且当转发区域正确更新时:
# nsupdate
> server 127.0.0.1
> key dhcpupdate MYSECRETKEY
> update add test.example.com. 600 IN A 10.2.2.45
> send
# tail -n1 /var/log/named.conf
client 127.0.0.1#12584: view internal: updating zone 'example.com/IN': adding an RR at 'test.example.com' A
Run Code Online (Sandbox Code Playgroud)
反向区域不会:
# nsupdate
> server 127.0.0.1
> key dhcpupdate MYSECRETKEY
> update add 45.2.2.10.in-addr.arpa. 600 IN PTR test.example.com.
> send
response to SOA query was unsuccessful
Run Code Online (Sandbox Code Playgroud)
然后 nsupdate 将我吐回外壳,并且日志中没有错误(或任何类型的消息)。我已经尝试过带和不带尾随周期的反向区域更新。我觉得我错过了一些基本的东西,但我无法弄清楚它是什么。
感谢您的指点。这是我的配置文件和其他信息:
# cat /etc/named.conf
acl internals { …Run Code Online (Sandbox Code Playgroud) 我在 Internet DMZ 中使用 bind 9.9.2 作为 DNSSEC 验证递归解析器。我想将我的内部 DNS 服务器作为存根区域(理想情况下)或从属区域以外的任何区域(以避免非常大的区域传输)。我们使用可路由的 ip 空间进行内部寻址。抱歉,如果我在示例中使用的是您拥有的 IP 空间,但 167.xxx 是我发现的第一个适合我的问题的区域。
例如
dnssec-enable yes;
dnssec-validation yes;
dnssec-accept-expired no;
zone "16.172.in-addr.arpa" {
type stub;
masters { 167.255.1.53; }
}
zone "myzone.com" in {
type stub;
masters { 167.255.1.53; }
}
Run Code Online (Sandbox Code Playgroud)
当查询到达 DNS 服务器时,它们尝试进行验证,但失败了,因为 167.in-addr.arpa 有一个 RRSIG 记录,但子区域没有(也不应该!)。本示例中使用了 Google dns,但实际上它是我的递归解析器。
@8.8.8.8 -x 167.255.1.53 +dnssec
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 17488
;; flags: qr …Run Code Online (Sandbox Code Playgroud) 我在配置 BIND DNS 时遇到问题,显示 server can't find XXX.in-addr.arpa: NXDOMAIN while reverse dns check!
一切都适用于正向 DNS 查找,但反向 DNS 查找失败。这是我的配置文件:
命名文件
options {
listen-on port 53 { 192.168.10.1; }; // listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
recursion no;
allow-recursion {
localhost;
};
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key"; anaged-keys-directory "/var/named/dynamic"; };
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
}; …Run Code Online (Sandbox Code Playgroud) bind ×10
linux ×2
nameserver ×2
centos ×1
ddns ×1
debian ×1
dyndns ×1
interface ×1
ip ×1
named-conf ×1
nslookup ×1
recursive ×1
redhat ×1
reverse-dns ×1
ubuntu ×1
web-server ×1