我刚刚从 Debian 5 升级到 6,我注意到 bind 停止工作。尝试从外部查询域时,出现“连接超时;无法访问服务器”错误。从本地主机查询会给出正确的响应。可能是什么原因?
我确信以前有人以某种形式询问过这个问题,但我对 DNS 完全陌生并且对 Linux 缺乏经验,所以请耐心等待:)
我有一个来自 OVH 托管的 VPS,我设法对其进行了配置以满足我的需求,但我似乎无法让 DNS 服务器正常工作。根据我在网上找到的故障排除页面,绑定被配置为不接受来自外部的连接,但我不知道如何更改它。
telnet localhost 53 在服务器上工作
telnet myserver.com 53 在我的本地机器上说 telnet: Unable to connect to remote host: Connection refused
netstat -Wa 返回以下内容
tcp 0 0 *:imaps *:* LISTEN
tcp 0 0 *:pop3s *:* LISTEN
tcp 0 0 localhost.localdomain:10024 *:* LISTEN
tcp 0 0 *:rsync *:* LISTEN
tcp 0 0 localhost.localdomain:10025 *:* LISTEN
tcp 0 0 localhost.localdomain:mysql *:* LISTEN
tcp 0 0 localhost.localdomain:813 *:* LISTEN
tcp 0 0 *:pop3 *:* LISTEN
tcp …Run Code Online (Sandbox Code Playgroud) 首先,我有点拘泥于 n00b,所以如果我说一些没有意义的事情,请忽略它们 =)
是否有任何软件可以允许“API”之类的命令用于在 BIND 上创建、更新、删除等区域和记录?
我有两个 DNS 服务器在 EC2 上运行,我希望能够从另一个应用程序轻松管理它们上的域。我知道像 CPanel 这样的东西有一个 HTTP API 和与 BIND 的接口,但这对于我需要的东西来说可能有点过分了。我不介意安装 Apache/PHP/Mysql/Python/Rails/无论其他需要让它工作但所有服务器都会做的是 DNS
编辑: 或者让 BIND 使用 MySQL 来存储它的配置,然后我可以编写一个简单的 PHP 脚本来执行“API”位
我们在 Debian 的稳定版本(每周更新)上使用 BIND 9.7.3,我们看到某个特定域的一些非常奇怪的行为。我们主持了几百人,但这是我们的。
基本上,辅助 DNS 服务器正在尝试从主服务器传输域。根据日志,每次都可以成功转移域名,但总是把序列号弄错!因此,它会抓住每一个机会不断地重新进行传输。我什至不确定它从哪里获取序列号,因为主服务器会返回正确的序列号。
这是我们从辅助服务器获得的日志(IP 192.168.0.130 是主服务器,192.168.0.4 是辅助服务器。当然,它们不是真实的。):
Aug 23 03:01:08 ns2 named[4242]: transfer of 'mydomain.ca/IN/external' from 192.168.0.130#53: connected using 192.168.0.4#60959
Aug 23 03:01:08 ns2 named[4242]: transfer of 'mydomain.ca/IN/external' from 192.168.0.130#53: Transfer completed: 0 messages, 1 records, 0 bytes, 0.001 secs (0 bytes/sec)
Run Code Online (Sandbox Code Playgroud)
这看起来很正常,虽然两台主机都设置了 IPv6 地址并且从技术上讲他们应该使用它们,但这是另一天的问题(我认为)。
所以让我们从辅助服务器查询主服务器,看看它说了什么:
$ host -4 -t any mydomain.ca 192.168.0.130
Using domain server:
Name: 192.168.0.130
Address: 192.168.0.130#53
Aliases:
mydomain.ca has IPv6 address fc00:::31
mydomain.ca has SOA record ns1.mydomain.bc.ca. hostmaster.mydomain.ca. 2011082201 …Run Code Online (Sandbox Code Playgroud) 我有一个 Bind 9 DNS 服务器位于 NAT 防火墙后面,假设面向 Internet 的 IP 是 1.2.3.4
对传出流量没有限制,端口 53 (TCP/UDP) 从 1.2.3.4 转发到内部 DNS 服务器 (10.0.0.1)。VPS 或内部 Bind 9 服务器上没有 IP 表规则。
从位于互联网其他地方的远程 Linux VPS,nslookup 工作正常
# nslookup foo.example.com 1.2.3.4
Server: 1.2.3.4
Address: 1.2.3.4#53
Name: foo.example.com
Addresss: 9.9.9.9
Run Code Online (Sandbox Code Playgroud)
但是,在host远程 VPS 上使用该命令时,我收到以下输出:
# host foo.example.com 1.2.3.4
;; reply from unexpected source: 1.2.3.4#13731, expected 1.2.3.4#53
;; reply from unexpected source: 1.2.3.4#13731, expected 1.2.3.4#53
;; connection timed out; no servers could be reached.
Run Code Online (Sandbox Code Playgroud)
从 VPS,我可以建立到 1.2.3.4:53 …
我有一台安装了 CentOS 5.9 和 VMware 的机器。
目前我正在使用 BIND 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6(默认随发行版一起提供)。
当我重新启动机器时,我可以在命名服务启动时在屏幕上看到此消息:
Starting named: You need to implement a remote task_setrlimit in your security module and call it directly from this functionWARNING: at security/security.c:51 security_ops_task_setrlimit()
Call Trace:
[<ffffffff8012eeeb>] security_ops_task_setrlimit+0x87/0x96
[<ffffffff8009dc0a>] do_prlimit+0xd7/0x1d2
[<ffffffff8009ed53>] sys_setrlimit+0x36/0x43
[<ffffffff8005d29e>] tracesys+0xd5/0xdf
Run Code Online (Sandbox Code Playgroud)
这个错误似乎对绑定没有影响,服务工作正常,但我知道是什么产生了警告错误以及如何解决它。
我的绑定配置
carrie IN A 192.253.253.4
*.carrie IN A 192.253.253.6
*.test.carrie IN A 192.253.253.7
Run Code Online (Sandbox Code Playgroud)
执行
nslookup carrie
Address: 192.253.253.4
nslookup a.test.carrie
Address: 192.253.253.7
Run Code Online (Sandbox Code Playgroud)
但是当我执行 nslookup test.carrie
*** Can't find test.carrie: No answer
Run Code Online (Sandbox Code Playgroud) 我有两台运行 BIND9 的 DNS 服务器,一台主机和一台从机。当主服务器上的区域文件更新时,我希望从服务器立即开始为更改的记录提供服务,但 BIND 给了我一些建议。
DNS 区域传输已经在 master 和 slave 之间正常工作。我可以登录从服务器并运行dig @dnsmaster myzone. AXFR,它会打印出该区域的全部内容。为了使其工作,DNS 主机配置了notify yes和also-notify { dnsslave }。同样,从站配置为allow-transfer { dnsmaster }.
当 dnsmaster 更新时,我运行rndc reload并告诉我正在发送通知。通过检查/var/named/slavedata/. 它们包含最新的数据,与主人知道的相匹配。
现在是奇怪的部分。
从服务器将继续提供旧的、陈旧的 DNS 记录,完全忽略在收到主服务器通知后磁盘上有新数据可用的事实。我使用dig的检查与此命令的结果:dig @slaveserver record.zone.tld。
我认为 BIND 可能会保留其权威区域的内存缓存,因此我将max-cache-size和设置max-cache-ttl为 0,但这没有任何效果。
我尝试了其他方法来刷新这个所谓的缓存,通过在从服务器上运行类似rndc flush和 的命令rndc reload,但它仍然返回旧的陈旧记录。
最后发现MINTTLonzone被设置为86400(24小时),所以我暂时将其MINTTL改为15秒,并重启了从服务器。无效 - 从站只会在服务重新启动后提供更新的 DNS 结果。
这里发生了什么?收到区域更新通知时 BIND9 的预期行为是什么?它总是尊重TTL …
我已将 BIND 和 ISC DHCPD 配置为协同工作(使用密钥进行更新)。现在并不是它根本不起作用:最常添加前向地图等。
但是,通常情况下,区域的 .jnl 文件(日志)无缘无故地留在那里,并且主区域文件没有更新。这导致在获取 DHCP 租约后某些主机无法解析令人气愤(如果这些主机最初不在区域文件中,或者导致旧地址)。
权限如下所示:
-rw-r--r-- 1 bind bind 691 Dec 10 11:06 myzone.zone
-rw-r--r-- 1 bind bind 765 Dec 10 12:17 myzone.zone.jnl
Run Code Online (Sandbox Code Playgroud)
不应该是权限问题,因为该区域确实(经常)通过 DHCP/DDNS 更新?
这个问题的根源是什么?
操作系统:debian 7.2 x64,稳定版绑定和 isc-dhcp 服务器。
你好服务器故障,
我在一家使用 192.168.0.0/23(在我到达之前)建立网络的医院工作。我们希望使用 VPN 从远程位置连接笔记本电脑和移动客户端,但医院网络与大多数家用路由器的冲突非常严重。我已经向管理层施压,让我们有时间改变它,但作为一家到处都是服务器/设备/等的医院,这是不可能安排的。所以我们通过使用 10.22.0.0/23 的 1:1 nat 来“修复”这个问题。
问题:客户端可以毫无问题地使用 10.22.0.0/23 IP 连接和访问资源,但如果他们查询 DNS 服务器,他们会收到 192.168.0.0/23 响应。如果查询来自 VPN 子网,BIND 中是否有正确的方法将这些动态转换为 10.22.0.0/23 地址?强调正确,因为我在 cron 中使用以下内容通过 BIND 视图工作:
sed -e 's/192.168.0./10.22.0./' -e 's/192.168.1./10.22.1./' /var/lib/bind/db.company.local > /var/lib/bind/db.company.local.ext && /usr/sbin/rndc reload company.local in extView
Run Code Online (Sandbox Code Playgroud)
这很好用,但由于 BIND 日志需要大约 15 分钟写回 db.company.local 文件,因此延迟了 15 到 20 分钟。
我已经阅读了一些关于 RPZ 的内容,但信息似乎参差不齐。任何人都可以指出我正确的方向吗?如果没有,你能让我的解决方案更优雅吗?
编辑:我只想说清楚我已经在使用 BIND 视图,但我正在使用两个区域。我正在从第一个区域生成我的第二个区域,通过 sed 发送它以更改 IP,并在该视图中对该区域执行 rndc 重新加载。这有很大的延迟,有没有办法在两个视图中使用相同的区域文件,并在查询时更改 DNS 响应?
谢谢!
bind ×10
debian ×2
centos ×1
ddns ×1
debian-lenny ×1
dhcpd ×1
linux ×1
master-slave ×1
mysql ×1
nat ×1
redhat ×1
security ×1
ubuntu-12.04 ×1
vpn ×1
wildcard ×1