Com os valores de VPS e Computação em Nuvem bem acessíveis nos dias de hoje, é possível instalar um Bacula remoto e configurar uma OpenVPN para efetuar diretamente o backup dos clientes locais atrás de Firewalls e NATs com mais facilidade e segurança.
Para isso vamos considerar que temos um servidor CentOS 7 com um ip fixo e com uma interface tun0 habilitada e com o Bacula Enterprise instalado e configurado.
1. No Servidor Bacula, efetuar o download do script de instalação da VPN e dar permissão de execução
wget -c https://www.bacula.lat/wp-content/uploads/2018/08/openvpn-install.txt -O /usr/local/bin/openvpn-install.sh chmod a+x /usr/local/bin/openvpn-install.sh
Executar o script para iniciar a instalação e deixar as opções padrões.
O endereço IP precisa ser o IP público, pois é este endereço que os clientes utilizam para se conectar.
/usr/local/bin/openvpn-install.sh Welcome to this OpenVPN "road warrior" installer! I need to ask you a few questions before starting the setup. You can leave the default options and just press enter if you are ok with them. First, provide the IPv4 address of the network interface you want OpenVPN listening to. IP address: XXX.XXX.XXX.XXX Which protocol do you want for OpenVPN connections? 1) UDP (recommended) 2) TCP Protocol [1-2]: 1 What port do you want OpenVPN listening to? Port: 1194 Okay, that was all I needed. We are ready to set up your OpenVPN server now. Press any key to continue... Finished! Now you need to run the script again to add or remove clients!
2) Executar o script novamente para a criação dos clientes
A mensagem abaixo só aparece quando o servidor OpenVPN estiver configurado.
Selecionar a opção “1) Add a new user”.
Para uma padronização é interessante utilizar o mesmo nome do cliente no bacula.
Por exemplo: linux-fd, windows-fd, etc.
*No nome do cliente não deve-se digitar espaços e nem caracteres especiais.
Looks like OpenVPN is already installed. What do you want to do? 1) Add a new user 2) Revoke an existing user 3) Remove OpenVPN 4) Exit Select an option [1-4]: 1 Tell me a name for the client certificate. Please, use one word only, no special characters. Client name: cliente1-fd
O arquivo de configuração do cliente vai ser salvo em: /etc/openvpn/client com o nome do cliente e a extensão “.ovpn”.
Copiar este arquivo para a máquina do cliente onde encontra-se o FileDaemon instalado.
3) Por padrão o OpenVPN configura a faixa de rede da VPN com a seguinte faixa: 10.8.0.0/24 e disponibiliza os endereços para os clientes via DHCP
O servidor OpenVPN vai sempre reservar o primeiro endereço desta faixa para o IP do próprio servidor, no caso 10.8.0.1, e a partir do segundo até o penúltimo endereço será disponibilizado para os clientes.
Então após configurar o cliente é interessante definir um IP fixo para os clientes, pois com o DHCP ele pode variar e o Bacula não conseguir conectar. Então basicamente o “cliente1-fd” vai possuir o endereço 10.8.0.2, “cliente2-fd” o endereço 10.8.0.3 e assim por diante.
Crie um arquivo dentro do diretório “/etc/openvpn/ccd/” com o mesmo nome do cliente criado anteriormente (sem extensão nenhuma) e adicione o seguinte conteúdo:
echo "ifconfig-push 10.8.0.2 255.255.255.0" > /etc/openvpn/ccd/cliente1-fd
Onde “10.8.0.2” é o endereço ip do cliente1. Altere de acordo com o cliente.
4) Instalação e Configuração do Cliente Linux
Instalar o OpenVPN
Debian/Ubuntu apt-get install openvpn openssl ca-certificates CentOS/Red Hat yum -f install openvpn iptables openssl ca-certificates
Pegue o arquivo do cliente (cliente1-fd.ovpn) e salve em /etc/openvpn/ com o nome “client.conf”.
Digite os comandos abaixo para habilitar a inicialização automática da vpn e iniciar o serviço.
systemctl enable openvpn@client systemctl start openvpn@client
Se tudo ocorrer corretamente você pode digitar o comando “ipconfig” ou “ip address” que vai ser mostrado uma interface “tun0”
root@bacula:/# ifonfig tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500 inet 10.8.0.2 netmask 255.255.255.0 destination 10.8.0.10 inet6 fe80::106b:617a:2c2:6e81 prefixlen 64 scopeid 0x20<link> unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 100 (Não Especificado) RX packets 29 bytes 2436 (2.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 37 bytes 2820 (2.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Você pode também efetuar um teste de ping para o endereço do servidor OpenVPN
root@bacula:/# ping 10.8.0.1 PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data. 64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=189 ms 64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=187 ms 64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=181 ms 64 bytes from 10.8.0.1: icmp_seq=4 ttl=64 time=183 ms
4) Instalação e Configuração do Cliente Windows
Acessar o endereço https://openvpn.net/index.php/download/community-downloads.html e fazer o download da última versão EXE disponível.
Após instalado é preciso copiar o arquivo do cliente (cliente1-fd.ovpn) para diretório “C:Program FilesOpenVPNconfig” e acessar os serviços do Windows “services.msc”.
É para existir 3 serviços OpenVPN:
- OpenVPNService
- OpenVPNServiceLegacy
- OpenVPNServiceInteractive
Clicar com o botão direito em cima do primeiro serviço (OpenVPNService), selecionar propriedades e alterar o tipo de inicialização para “automática” e também iniciar o serviço.
Com isso, o OpenVPN vai ser iniciado automaticamente durante a inicialização do sistema e conectar com a VPN.
6) Configuração do Bacula
Com a VPN configurada tanto no Servidor quando nos cliente, é preciso alterar o IP do Storage Daemon do Bacula, para o endereço do Servidor OpenVPN (Ou então criar um novo Storage) e configurar um Client, o Job e um FileSet.
Exemplo de configuração:
# bacula-sd.conf Storage { Name = "File1" Address = 10.8.0.1 Autochanger = "File1" Device = "FileChgr1" MaximumConcurrentJobs = 10 MediaType = "File1" Password = "15hMBwwAtL984OA6fEmgCfdrejw3CYlXONKPe/orpcQ6" SdPort = 9103 } Client { Name = "client1-fd" Address = 10.8.0.2 AutoPrune = no Catalog = "MyCatalog" FileRetention = 31536000 JobRetention = 31536000 MaximumConcurrentJobs = 5 Password = "8UswWEjIiXN68yoUtxxIw1tdWygOxxq5t" } Job { Name = "Backup_Client1" Type = "Backup" Client = "client1-fd" Fileset = "FileSet_Client1" JobDefs = "DefaultJob" Messages = "Standard" Pool = "File" Schedule = "WeeklyCycle" Storage = "File1" } Fileset { Name = "FileSet_Client1" EnableVss = no Include { Options { Compression = Gzip6 Signature = Md5 } File = "/usr/sbin/" } }
Com o cliente configurado é possível executar um status client:
[root@bacula]# bconsole Connecting to Director localhost:9101 1000 OK: 10002 bacula-dir Version: 10.0.2 (30 May 2018) Enter a period to cancel a command. *status client=client1-fd Connecting to Client client1-fd at 10.8.0.2:9102 client1-fd Version: 10.0.2 (30 May 2018) x86_64-pc-linux-gnu-bacula-enterprise debian 9.0 Daemon started 28-jul-18 20:35. Jobs: run=1 running=0. Heap: heap=266,240 smbytes=4,837,726 max_bytes=5,141,688 bufs=172 max_bufs=213 Sizes: boffset_t=8 size_t=8 debug=0 trace=0 mode=0,2010 bwlimit=0kB/s Plugin: bpipe-fd.so Running Jobs: No Jobs running. ==== Terminated Jobs: JobId Level Files Bytes Status Finished Name ======================================================================= *
E efetuar um Job de Backup:
bacula-dir JobId 13: Start Backup JobId 13, Job=Backup_Client1.2018-07-28_19.36.21_37 bacula-dir JobId 13: Using Device "FileChgr1-Dev1" to write. bacula-dir JobId 13: Created new Volume="Vol-0001", Pool="File", MediaType="File1" in catalog. bacula-sd JobId 13: Labeled new Volume "Vol-0001" on File device "FileChgr1-Dev1" (/tmp). bacula-sd JobId 13: Wrote label to prelabeled Volume "Vol-0009" on File device "FileChgr1-Dev1" (/tmp) bacula-sd JobId 13: Elapsed time=00:17:25, Transfer rate=25.38 K Bytes/second bacula-sd JobId 13: Sending spooled attrs to the Director. Despooling 30,919 bytes ... bacula-dir JobId 13: Bacula Enterprise bacula-dir 10.0.2 (30May18): Build OS: x86_64-redhat-linux-gnu-bacula-enterprise redhat JobId: 13 Job: Backup_Client1.2018-07-28_19.36.21_37 Backup Level: Full Client: "client1-fd" 10.0.2 (30May18) x86_64-pc-linux-gnu-bacula-enterprise,debian,9.0 FileSet: "FileSet_Client1" 2018-07-28 19:30:35 Pool: "File" (From Job resource) Catalog: "MyCatalog" (From Client resource) Storage: "File1" (From Job resource) Scheduled time: 28-Jul-2018 19:36:20 Start time: 28-Jul-2018 19:36:28 End time: 28-Jul-2018 19:53:53 Elapsed time: 17 mins 25 secs Priority: 10 FD Files Written: 150 SD Files Written: 150 FD Bytes Written: 26,510,195 (26.51 MB) SD Bytes Written: 26,525,714 (26.52 MB) Rate: 25.4 KB/s Software Compression: 67.5% 3.1:1 Comm Line Compression: 0.7% 1.0:1 Snapshot/VSS: no Encryption: no Accurate: no Volume name(s): Vol-0001 Volume Session Id: 5 Volume Session Time: 1532387762 Last Volume Bytes: 26,560,522 (26.56 MB) Non-fatal FD errors: 0 SD Errors: 0 FD termination status: OK SD termination status: OK Termination: Backup OK
Disponível em: PortuguêsEnglish (Inglês)