但服务器将响应“警告:递归请求但不可用”,因为我的客户端 104.200.17.225 将连接到外部。但客户端“位于”受信任的 ACL 中。Bind 完全忽略我的信任列表。
mlr01 ~ # dig facebook.com
; <<>> DiG 9.9.5 <<>> facebook.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10440
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;facebook.com. IN A
;; AUTHORITY SECTION:
. 3600000 IN NS G.ROOT-SERVERS.NET.
. 3600000 …Run Code Online (Sandbox Code Playgroud) 我在本地有域“engine02.prod.qc.offercal.com” bind9。
我不认为这是 DNS 服务器或 TTL 问题,因为基准测试几乎总是这样(我使用每种方法尝试了 2 分钟):
curl -o /dev/null http://engine02.prod.qc.offercal.com:49157/void
time_namelookup: 0.150
time_connect: 0.151
time_starttransfer: 0.152
----------
time_total: 0.152
curl -o /dev/null http://192.168.100.10:49157/void # use IP directly
time_namelookup: 0.000
time_connect: 0.002
time_starttransfer: 0.003
----------
time_total: 0.003
time dig @192.168.100.4 engine02.prod.qc.offercal.com
real 0m0.009s
user 0m0.004s
sys 0m0.004s
time host engine02.prod.qc.offercal.com
engine02.prod.qc.offercal.com has address 192.168.100.10
real 0m0.011s
user 0m0.006s
sys 0m0.004s
Run Code Online (Sandbox Code Playgroud)
我的resolv.conf文件:
[root@gateway01 ~]# cat /etc/resolv.conf
nameserver 192.168.100.4
Run Code Online (Sandbox Code Playgroud)
我已经被这个问题困扰了一段时间,请帮忙:D
我有一个权威 DNS 服务器池,它们必须为 5 个用户托管区域,每个用户有 2 到 10 个区域。
每个用户都可以使用公钥认证通过 ssh 连接到服务器。我面临的要求是,只要用户能够连接到服务器上的 ssh 端口,他们还必须能够在不依赖任何其他网络通信的情况下更新自己的区域。
到目前为止,我所做的是将每个区域配置为从拥有该区域的用户的主目录加载,如下例所示:
zone "example.com" {
type master;
file "/home/example/zones/example.com";
};
Run Code Online (Sandbox Code Playgroud)
我不知道是否有任何关于直接从用户的主目录加载区域文件的建议。我尝试了一些搜索,但没有发现支持或反对这种做法的建议。
它似乎有效,但更改仅在我重新启动或重新加载绑定后才会生效,我目前必须以 root 身份执行此操作。
我使用的发行版为 BIND 9.8 提供了安全补丁。所以我下载了 9.8 版本的“BIND 9 管理员参考手册”来寻找用户指示绑定重新加载区域的方法。
我找到了该rndc命令,但是 BIND 上的访问控制似乎不够精细,无法仅将机密用于重新加载特定区域。我可以指定允许访问的 IP 地址和 HMAC-MD5 机密的组合,但任何此类允许访问的组合都将被允许通过rndc.
如何允许用户重新加载他们的区域文件而不授予他们其他管理权限?
在这一点上,我想我可以使用sudo或command选项.ssh/authorized_keys来授予用户调用特定rndc命令的权限。
这是一种可取的方法还是我应该做其他事情?
我也考虑过使用区域传输。但我对区域传输如何工作的理解是,接收 DNS 服务器在区域传输中充当客户端,而发送 DNS 服务器充当服务器。如果我的理解是正确的,这意味着让客户端向服务器提供新版本的区域是不可能的。因此,似乎如果我要采用这种方法,我将不得不使用隐藏主设置,该隐藏主设置在 VPN 客户端上运行,由于我无法完全制定的原因,这感觉是错误的。
大家下午好!
我正在查看一些 BIND 区域文件,并且遇到了一个奇怪的问题,我没有找到一个好的答案。其中一些区域文件的 ORIGIN 指令只有一个点 (.)。看起来很奇怪,我知道。这是经过消毒的指令:
$ORIGIN .
$TTL 600 ; 10 minutes
example.com IN SOA ns1.example.com. support.example.com. (
2016010101 ; serial
28800 ; refresh (8 hours)
120 ; retry (2 minutes)
1209600 ; expire (2 weeks)
86400 ; minimum (1 day)
)
Run Code Online (Sandbox Code Playgroud)
该文件似乎工作正常,并且通过了 DNSStuff 的在线测试。我确实打算
大师们有什么想法吗?
感谢大家的关注!
G
我正在尝试PTR为反向 DNS设置一个,以便从我的脚本发送的邮件不会由于反向 DNS 故障而被阻止。我相信我的区域设置正确,但是我“认为”它是正确的和“知道”它是正确的是两件事!
首先,我有:mydomain.com
此域位于公共 IP:1.2.3.4
我conf的bind配置文件如下所示:
zone "mydomain.com" {
type master;
file "/var/lib/bind/mydomain.com.hosts";
};
zone "4.3.2.1.in-addr.arpa" {
type master;
file "/var/lib/bind/mydomain.com.reverse.hosts";
};
Run Code Online (Sandbox Code Playgroud)
该mydomain.com.reverse.hosts文件包含:
$ttl 38400
@ IN SOA ns1.mydomain.com. zak.mydomain.com. (
1502115400
10800
3600
604800
38400 )
IN NS ns1.mydomain.com.
IN NS ns2.mydomain.com.
4.3.2.1.in-addr.arpa. 3600 IN PTR mydomain.com.
Run Code Online (Sandbox Code Playgroud)
正向查找效果很好——IEdig mydomain.com A和dig mydomain.com NS两者都会调出相应的(正确的)A 和 NS 记录。然而,反向查找没有显示PTR. IE:
zak@zak-webserver:~$ dig -x 1.2.3.4 PTR …Run Code Online (Sandbox Code Playgroud) 根据http://www.zytrax.com/books/dns/ch7/queries.html#forwarders,可以在地址后指定端口。
但是当我尝试将其设置为
forwarders {
127.0.0.1 2053;
}
Run Code Online (Sandbox Code Playgroud)
命名的 checkconf 返回
/etc/bind/named.conf.options:12: missing ';' before '2053'
/etc/bind/named.conf.options:12: expected IP address near '2053'
Run Code Online (Sandbox Code Playgroud)
我的完整的named.conf.options文件:
options {
directory "/var/cache/bind";
dnssec-validation no;
auth-nxdomain no;
recursion yes;
allow-recursion { any; };
allow-query { any; };
allow-query-cache { any; };
listen-on { any; };
listen-on-v6 { any; };
forwarders {
127.0.0.1 2053;
};
};
Run Code Online (Sandbox Code Playgroud) 我的 DNS 中有一个域条目,其中包含 3 个不同的 TXT 记录(1 个 SPF、1 个密钥库证明和一个 DMARC 条目)。
我即将将我的邮件服务器移至新主机,因此需要更新 SPF 记录,但我正在努力找出如何使用 nsupdate 删除和替换 SPF 记录。
目前,我能想到的最佳选择是编写 nsupdate 脚本来删除所有 3 个记录,并在添加更新的 SPF 记录之前添加 2 个未更改的记录。
有没有办法只删除1条记录?
我正在尝试使用本教程设置转发 DNS 服务器https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-caching-or-forwarding-dns-server -在-ubuntu-16-04 上。我已按照所有步骤操作并插入了该行
dnssec-enable yes;
dnssec-validation yes;
Run Code Online (Sandbox Code Playgroud)
但是,运行时:
sudo named-checkconf
Run Code Online (Sandbox Code Playgroud)
它告诉我
选项“dnssec-enable”已过时,应删除
那么,还有什么选择呢?我尝试在 Goolge 上搜索它并快速浏览一下 Bind 9 文档,但没有提及任何内容。我非常感谢你的帮助。
我正在开发一个应用程序,该应用程序将用于验证新域在设置托管时是否正确配置。这部分会检查 SPF、DomainKey、DKIM 记录等的有效性。
我目前对大多数这些记录使用一小时的默认 TTL。偶尔会在其中一条记录中发现错误,因此需要对其进行更新。目前,如果我刚刚测试了域,我必须等待系统解析器的缓存记录过期,然后才能验证我的应用程序是否正确。(是的,我可以手动检查,但我编写了应用程序,所以我不必这样做)。
我想在系统上设置一个 DNS 服务器来充当普通的缓存解析器,除了它会在最长设置时间内(例如五分钟)使记录过期,或者根本不缓存。并非所有域都在我的普通名称服务器上托管 DNS,因此该系统必须查询域的权威名称服务器,而不是使用上游解析器(只会使用它们的缓存记录)。
这台机器当前没有运行任何类型的 DNS,所以我可以安装 BIND 或 djbdns(如果有好的建议,也可以安装其他东西。
我希望通过一个简单的 shell 脚本(可能是:BASH)绑定到一个用于 SSH 隧道的端口,我想要一种更......“理智”的方式来测试该端口是否已经绑定到另一个进程,我宁愿不喜欢(阅读:grep)netstat的输出。
是否有一些命令或实用程序可以使这变得理智?我要么有糟糕的 google-fu 和糟糕的词汇,要么大多数人不尝试通过 shell 以编程方式迭代端口,而是通过编程语言。
bind ×10
networking ×3
linux ×2
port ×2
djbdns ×1
dns-zone ×1
named-conf ×1
nsupdate ×1
reverse-dns ×1
ssh ×1