当我进行查询时,未绑定的 DNS 服务器不会记录任何内容

当我进行查询时,未绑定的 DNS 服务器不会记录任何内容

我最近开始使用非绑定 DNS。

我已经正确配置了所有需要的内容。但是当我进行查询时,服务器没有记录。

unbound.conf 文件中没有错误

以下是我的.conf 文件

# The server clause sets the main parameters.
server:
# whitespace is not necessary, but looks cleaner.

# verbosity number, 0 is least verbose. 1 is default.
verbosity: 1

# print statistics to the log (for every thread) every N seconds.
# Set to "" or 0 to disable. Default is disabled.
statistics-interval: 5


interface: 192.168.116.134

# port to answer queries from
port: 53


cache-min-ttl: 400
cache-max-ttl: 86400


# Enable IPv4, "yes" or "no".
do-ip4: yes

# Enable IPv6, "yes" or "no".
# do-ip6: yes

# Enable UDP, "yes" or "no".
    do-udp: yes

# Enable TCP, "yes" or "no".
    do-tcp: yes



access-control: 0.0.0.0/0 allow

# chroot: "/etc/unbound"


# username: "unbound"


# directory: "/etc/unbound"

# the log file, "" means log to stderr.
# Use of this option sets use-syslog to "no".
logfile: "/var/log/unbound/unbound.log"

forward-zone:
name: "."
forward-addr: 8.8.4.4
forward-addr: 8.8.8.8  

lig 文件确实存在于给定的目录中,并且我已使用 将未绑定的用户设为其所有者chown,但当我进行查询时,日志文件仍然为空。

平台:Ubuntu 18 桌面

答案1

Unbound Debian/Ubuntu/类似软件包默认登录/var/log/syslog。经过反复尝试,我找到了如何更改它的方法。

步骤1

确保所有 CHROOT 指令均被注释掉,并且添加了日志指令:

搜索指令:

sudo grep -R "chroot" /etc/unbound/*

注意:我们正在搜索整个配置区域。您的配置文件位置可能有所不同。我的配置文件位于 下/etc/unbound/unbound.conf.d/99-custom-(servername).conf

无论如何,如果注释正确,你应该看到类似这样的内容:

# chroot:""

还要确保您的配置文件中包含以下条目:

 use-syslog: no
 logfile: "/var/log/unbound/unbound.log"

注意:您可以将日志保存在任何您喜欢的地方,但如果您遵循本指南的其余部分,则必须调整路径/文件名。

第2步

确保创建具有适当所有者(未绑定)和权限的文件夹/文件:

sudo mkdir /var/log/unbound && sudo chmod 755 /var/log/unbound
sudo touch /var/log/unbound/unbound.log
sudo chown unbound:unbound /var/log/unbound /var/log/unbound/unbound.log

重新启动服务后,它对我(或您)来说仍然不起作用。

我注意到在调高详细程度进行调试后,它仍在记录到 syslog。我还注意到一些内核日志显示“apparmor”正在为未绑定的日志位置访问记录“DENIED”:

sudo cat /var/log/syslog | grep DENIED

系统日志中的示例:

 Dec 30 16:41:48 ip-192-168-1-1 kernel: [ 1368.641789] audit: type=1400 audit(1577724108.624:29): apparmor="DENIED" operation="open" profile="/usr/sbin/unbound" name="/var/log/unbound/unbound.log" pid=2247 comm="unbound" requested_mask="ac" denied_mask="ac" fsuid=112 ouid=112

步骤3

为了解决这个问题,我添加了一个当地的覆盖至apparmor.d区域:

sudo nano /etc/apparmor.d/local/usr.sbin.unbound

添加以下一行:

/var/log/unbound/unbound.log rw,

(是的,末尾有一个逗号。)保存。

步骤4

重新加载未绑定的 apparmor 条目:

sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.unbound

步骤5

重启 Unbound:

sudo systemctl restart unbound

检查日志:

$ sudo tail -f /var/log/unbound/unbound.log
[1577725445] unbound[2721:0] info: start of service (unbound 1.6.7).

有效。如果您注意到,当 syslog 记录它时,它使用标准日期格式。但是,Unbound 自定义日志记录/非 syslog 使用Unix/纪元时间(自 1970 年以来的秒数)默认情况下。如果您希望拥有像 syslog 这样的时间戳,请将其添加到您的未绑定配置并重新加载服务:

log-time-ascii: yes

第 6 步

日志轮换:

如果你希望 Unbound 日志随日志旋转服务(你应该),将此位添加到文件中/etc/logrotate.d/unbound

/var/log/unbound/*.log {
    weekly
    rotate 7
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    create 644
    postrotate
        /usr/sbin/unbound-control log_reopen
    endscript
}

重新启动一切:
sudo systemctl restart logrotate.service unbound.service

持续观察伐木一到两周,确保一切正常伐木和旋转。


我的配置:
主旨文本

参考:
https://nlnetlabs.nl/documentation/unbound/unbound.conf/
https://wiki.debian.org/AppArmor/Debug
https://gist.github.com/kometchtech/06fc3326c83338afd151

答案2

您需要设置适当的详细程度。3应该足够了。

verbosity: <number>
          The verbosity number, level 0 means no verbosity,  only  errors.
          Level  1  gives  operational information. Level 2 gives detailed
          operational information. Level 3 gives query level  information,
          output  per  query.   Level 4 gives algorithm level information.
          Level 5 logs client identification for cache misses.  Default is
          level  1.  The verbosity can also be increased from the command-
          line, see unbound(8).

答案3

您正在 chroot 环境中运行 ( /etc/unbound),这意味着您的日志实际上应该保存在/etc/unbound/var/log/unbound/unbound.log。这是您要查找的地方吗?

答案4

这与@b. shea 的答案相同。只需使用以下方法自动执行步骤即可ansible

- name: unbound logging
  ansible.builtin.file:
    path: /var/log/unbound
    state: directory
    owner: unbound
    group: unbound
  become: true

- name: unbound logging - file
  ansible.builtin.file:
    path: /var/log/unbound/unbound.log
    state: touch
    owner: unbound
    group: unbound
  become: true

- name: unbound logging - apparmor
  ansible.builtin.copy:
    dest: /etc/apparmor.d/local/usr.sbin.unbound
    content: |
      /var/log/unbound/unbound.log rw,
  register: unbound_apparmor
  become: true

- name: unbound logging - apparmor parse
  ansible.builtin.shell:
    cmd: apparmor_parser -r /etc/apparmor.d/usr.sbin.unbound
  become: true
  when: unbound_apparmor.changed

相关内容