Transversamento de Firewall/NAT do Bacula (Jobs Iniciados pelo Cliente)

O vetor de comunicação de um software de backup tradicional é sempre iniciado pelo servidor de backup. No entanto, firewalls e NATs são os dispositivos intermediários mais freqüentes que podem afetar o tráfego na Internet [1], e terminam por impedir essa conexão. De igual sorte, é muito difícil e trabalhoso abrir portas de rede locais para cada máquina que precisa de backup remoto.

Os clientes de backup por trás de firewalls ou com endereços NAT devem poder atravessar esses dispositivos, iniciando a conexão  e Jobs de backup pela Internet a partir dos clientes remotos. Este é um dos recursos do serviço Tray Monitor do Bacula Community e Enterprise, como mostrado na Figura 1.

Transversamento de Firewall/NAT do Bacula (Jobs Iniciados pelo Cliente) 1

Figure 1: Client Initiated Backup flow[2]

Instalação Tray Monitor Bacula Enterprise

No Linux, o Bacula Tray Monitor é fornecido pelo mesmo pacote de instalação da interface gráfica BAT (por exemplo, bacula-enterprise-bat-8.8.6-1.el7.x86_64.rpm).

No Windows, o pacote de instalação tudo-em-um permite a seleção do componente do Tray Monitor.

Instalação Tray Monitor Bacula Community

O Tray Monitor do Bacula Community também pode ser instalado com o pacote de instalação executável do Windows, ou com o pacote Linux autônomo ou em conjunto com o pacote de instalação da interface BAT (por exemplo, rpm, deb), dependendo de como foi empacotado.

No entanto, também é possível compilar e instalar o Tray Monitor a partir do código-fonte Bacula com o Cliente Bacula, da seguinte maneira:

wget -qO- http://www.bacula.com.br/atual | tar -xzvf - -C /usr/src
cd /usr/src/bacula-*/
./configure --enable-client-only --enable-build-dird=no --enable-build-stored=no --enable-smartalloc --enable-bat
yum install -y qt-devel qt
ln /usr/bin/qmake-qt4 /usr/bin/qmake
cd src/bacula-*/src/qt-console/tray-monitor/
qmake
make
make install
cd ../../../
make && make install && make install-autostart-fd
service bacula-fd restart

Configuração do Tray Monitor

Lado do Director

Adicione as seguintes linhas no arquivo de configuração do Director – /opt/bacula/etc/bacula-dir.conf. Ela pode servir à conexão de múltiplos clientes remotos.

Console {
  Name = fd-cons
  Password = yyy
  # These commands are used by the tray-monitor, it is possible to restrict
  CommandACL = run, restore, wait, .status, .jobs, .clients
  CommandACL = .storages, .pools, .filesets, .defaults, .estimate
  # Adapt for your needs
  jobacl = *all*
  poolacl = *all*
  clientacl = *all*
  storageacl = *all*
  catalogacl = *all*
  filesetacl = *all*
}

Lado dos Clientes Remotos

Adicione o seguinte recurso no arquivo de configuração do cliente –/opt/bacula/etc/bacula-fd.conf (no Windows: Menu Iniciar, Bacula, Configuration, Edit Client Configuration):

Console { # Abre conexão para o Director
  Name = fd-cons
  DIRPort = 9101
  address = localhost  # Endereço IP Público/Internet do Director 
  Password = "yyy"
}

Director {
  Name = remote-cons
  Password = "xxx"
  Remote = yes
}

Reinicie o daemon/serviço do cliente Bacula para aplicar as alterações.

Adicione os seguintes recursos na configuração da Console na mesma máquina –/opt/bacula/etc/bconsole.conf (no Windows: Menu Iniciar, Bacula, Configuration, Edit Console Configuration):

Director {
  Name = localhost-fd
  address = localhost # Endereço de rede local do Cliente
  DIRport = 9102 
  Password = "notused"
}

Console {
  Name = remote-cons
  Password = "xxx"
}

Finalmente, substitua ou crie um arquivo de configuração do usuário Bacula Tray Monitor, por exemplo: ~/.bacula-tray-monitor.conf (no windows, C:\Users\<user>\AppData\Roaming\bacula-tray-monitor.conf).

Observação: é possível fazer esta configuração graficamente usando a interface do Tray Monitor.

Monitor {
  Name = remote-cons
  Command Directory = /tmp # Directory to create "*.bcmd" files that runs backups automatically
}

Client {
  Name = localhost-fd
  address = localhost # Endereço de rede local do Cliente
  Port = 9102 
  Password = "xxx"
  Remote = yes
  Monitor = yes
}

Iniciando os Jobs de Backup

É possível usar o GUI do Tray Monitor para iniciar novos trabalhos de backup. Além disso, o serviço também irá verificar periodicamente o diretório definido na diretiva “Command Directory” e processar eventuais arquivos “* .bcmd” criados pelo usuário para encontrar Jobs serem executados.

O formato do arquivo de comando “arquivo.bcmd” é o seguinte [2]:

<component name>:<run command>
<component name>:<run command>
...
<component name> = string
<run command> = string (bconsole command line)

Por exemplo:

localhost-fd: run job=backup-localhost-fd level=full
localhost-dir: run job=BackupCatalog

O arquivo de comando deve conter pelo menos um comando. O componente especificado na primeira parte da linha de comando deve ser definido no Tray Monitor. Uma vez que o arquivo de comando é detectado pelo Tray Monitor, um pop-up é exibido para o usuário, e ele pode cancelar o Job se necessário.

O arquivo pode ser criado com ferramentas como “cron” ou o “agendador de tarefas” no Windows.

Telas

Transversamento de Firewall/NAT do Bacula (Jobs Iniciados pelo Cliente) 2 Transversamento de Firewall/NAT do Bacula (Jobs Iniciados pelo Cliente) 3 Transversamento de Firewall/NAT do Bacula (Jobs Iniciados pelo Cliente) 4

Referências

[1] Stiemerling, Martin. “NAT and Firewall Traversal Issues of Host Identity Protocol (HIP) Communication,” 2008. https://tools.ietf.org/html/rfc5207.txt.

[2] Bacula. “Release 9.0.0 | Bacula,” 2017. http://blog.bacula.org/release-9-0-0/.

Disponível em: pt-brPortuguêsenEnglish (Inglês)

Deixe uma resposta