据此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。有点笨拙,但可以工作。