如何在 Debian 上转储 pdns-recursor 缓存?

如何在 Debian 上转储 pdns-recursor 缓存?

据此man rec_control(1)我应该能够将 pdns-recursor 缓存转储到文件中rec_control dump-cache /tmp/the-cache

如果我这样做(在 Debian buster 上),它会显示“转储 xxx 记录”,但当我查看时却没有文件 /tmp/the-cache。如果我再次尝试相同的命令,它会显示“打开转储文件进行写入时出错:文件存在”。但我仍然找不到该文件。

# rec_control dump-cache /tmp/the-cache
dumped 324 records

# cat /tmp/the-cache
cat: /tmp/the-cache: No such file or directory

# rec_control dump-cache /tmp/the-cache
Error opening dump file for writing: File exists

# cat /tmp/the-cache
cat: /tmp/the-cache: No such file or directory

# systemctl restart pdns-recursor.service

# rec_control dump-cache /tmp/the-cache
dumped 532 records

# cat /tmp/the-cache
cat: /tmp/the-cache: No such file or directory

Debian 是否可能在 chroot jail 中运行 pdns-recursor?有没有办法将缓存转储到我可以找到的文件中?

答案1

Reddit 用户u/hahainternet 帮我解决了r/debian

Debian 的 pdns-recursor 服务 systemd 单元文件将该进程沙盒化。不过,其 /tmp 目录仍可从主机系统访问:

  • 通过 /tmp/systemd-private-[...]-pdns-recursor.service-[...]/tmp
  • 或者使用 输入进程的命名空间nsenter -a -t <pid of pdns-recursor>

其中一个允许访问 /tmp/the-cache。有点笨拙,但可以工作。

相关内容