2

我有一个 Bacula 服务器正在运行,它很高兴地支持自己。我现在正在使用独立的文件守护程序连接远程客户端,并且遇到了 TCP Wrappers 的问题。我发现连接(使用 telnet/nc 等)连接但立即关闭(这是典型的 TCP Wrappers 行为),但系统日志或文件守护程序的日志中没有任何记录(如果调试日志记录已打开)。

我尝试了 /etc/hosts.allow 和 hosts.deny 的各种排列。目前我有这些:

主机。允许:

bacula-fd: 1.2.3.4

主机.拒绝:

ALL: ALL

/etc/services 包含这样的条目:

bacula-fd    9102/tcp

我还在 Bacula 文档中找到了这一点:

您必须将名称调整为与每个守护程序配置文件中的 Name 指令相同。通常,它们与二进制守护程序名称不同。不能使用守护进程名称,因为多个守护进程可能在同一台机器上运行但具有不同的配置。

我尝试了各种名称来代替“bacula-fd”,但仍然无法弄清楚。有什么想法我需要改变才能完成这项工作吗?

4

1 回答 1

2

经过几个小时的困扰,我找到了解决方案。

Advanced TCP Wrappers 可以做的不仅仅是使用 hosts.allow/deny 和 services 文件。包装器保护的实际二进制文件也可以添加到一些配置中。Bacula 是我遇到的第一个这样做的人,因此我很困惑。

“守护进程”名称(在 hosts.allow/deny 的第一列中)实际上是在 /etc/bacula/bacula-fd.conf 中定义的。它是配置中的“FileDaemon Name”。例如:

FileDaemon {                          # this is me
  Name = bacula-fd
  FDport = 9102                  # where we listen for the director
  WorkingDirectory = /var/spool/bacula
  Pid Directory = /var/run
  Maximum Concurrent Jobs = 20
}

...将有一个名为“bacula-fd”的 TCP Wrappers 守护进程。将 bacula-fd.conf 更改为:

FileDaemon {                          # this is me
  Name = gribblechops
  FDport = 9102                  # where we listen for the director
  WorkingDirectory = /var/spool/bacula
  Pid Directory = /var/run
  Maximum Concurrent Jobs = 20
}

...并且您需要一个如下所示的 hosts.allow :

gribblechops: 1.2.3.4

这有点令人困惑,因为它与 /etc/services 中实际上并未使用的(可能是操作系统供应商提供的?)条目略有不同(除非您通过 xinetd 运行 FD)。

值得庆幸的是,就 Bacula Director 而言,客户端配置的“名称”似乎并不重要。Director 通过自己的配置了解客户端,而不是客户端本身的配置。这可能是个好消息,因为这意味着客户端配置对于大多数人来说可能是相当“默认”的(并且只有在您运行多个客户端实例时才真正需要偏离)。

于 2016-05-10T16:23:58.250 回答