【问题标题】:DHCPD unable to Add Forward map (SERVFAIL)DHCPD 无法添加正向映射 (SERVFAIL)
【发布时间】:2015-07-25 22:51:24
【问题描述】:

我刚刚设置了一个家庭服务器(Ubuntu Server 14)并配置了 DNS 和 DHCP。除 DDNS 外,一切正常。 /var/logs/syslog 在发出新的 DHCPREQUEST 时报告以下内容:

Jul 25 23:20:14 ns.lan dhcpd: DHCPREQUEST for 192.168.1.73 from <mac> (<hostname>) via eth0
Jul 25 23:20:14 ns.lan dhcpd: DHCPACK on 192.168.1.73 to <mac> (<hostname>) via eth0
Jul 25 23:20:14 ns.lan dhcpd: Unable to add forward map from <hostname>.lan to 192.168.1.73: SERVFAIL

区域文件设置为 root:bind 和 664。

-rw-r--r-- 1 root root 2389 Jun 29 20:54 bind.keys
-rw-r--r-- 1 root root  237 Jun 29 20:54 db.0
-rw-r--r-- 1 root root  271 Jun 29 20:54 db.127
-rw-r--r-- 1 root bind  313 Jul 25 21:02 db.192
-rw-r--r-- 1 root root  237 Jun 29 20:54 db.255
-rw-r--r-- 1 root root  353 Jun 29 20:54 db.empty
-rw-rw-r-- 1 root bind  387 Jul 25 17:57 db.lan
-rw-r--r-- 1 bind bind    0 Jul 25 20:04 db.lan.jnl
-rw-r--r-- 1 root root  270 Jun 29 20:54 db.local
-rw-r--r-- 1 root root 3048 Jun 29 20:54 db.root
-rw-r--r-- 1 root bind  463 Jun 29 20:54 named.conf
-rw-r--r-- 1 root bind  490 Jun 29 20:54 named.conf.default-zones
-rw-r--r-- 1 root bind  398 Jul 25 17:14 named.conf.local
-rw-r--r-- 1 root bind  998 Jul 25 02:10 named.conf.options
-rw-r----- 1 bind bind   77 Jul 18 01:39 rndc.key
-rw-r--r-- 1 root root 1317 Jun 29 20:54 zones.rfc1918

我已将 dhcpd 用户添加到绑定组:

$ groups dhcpd
dhcpd : dhcpd bind

我还配置了 AppArmor (/etc/apparmor.d/usr.sbin.dhcpd) 以允许访问:

# Allow access to bind zone file so that it
# can be updated as new hosts are allocated
/etc/bind/db.lan rw,

区域文件如下所示:

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     ns.lan. hostmaster.localhost. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns
@       IN      A       127.0.0.1
@       IN      AAAA    ::1

ns              IN      A       192.168.1.1
server          IN      A       192.168.1.2
media           IN      A       192.168.1.3
web             IN      A       192.168.1.4
dsldevice       IN      A       192.168.1.254

关于“无法添加前向映射”SERVFAIL 错误的任何想法,甚至我如何诊断问题?

【问题讨论】:

    标签: dns bind dhcp


    【解决方案1】:

    我最终稍微重新调整了文件结构,我所做的一些事情使它工作了。我想这指向一个权限问题,可能与猜测有关。

    【讨论】:

      【解决方案2】:

      正如@Richard Payne 所说,这是 apparmor 的问题。

      运行 tail -f /var/log/messages 应该显示如下消息:

      kernel: [ss.sss]: audit: type=1400: apparmor="DENIED" operation="mknod" profile="/usr/sbin/named" name="/etc/bind/db.<zone>.jnl" ....
      

      所以,要解决这个问题,请将以下内容添加到/etc/apparmord.d/local/usr.sbin.named

      # Allow dynDNS entries to be written, along with journal ant temporary files
      /etc/bind/db.* rw,
      /etc/bind/tmp-* rw,
      

      此外,请确保文件 /etc/apparmord.d/usr.sbin.named 包含带有我们更改的文件的 #include 指令。一般在最后,看起来是这样的:

      # Site-specific additions and overrides
      #include <local/usr.sbin.named>
      

      然后,重启apparmor并绑定

      sudo systemctl restart apparmor
      sudo systemctl restart bind9
      

      【讨论】: