Con los valores de VPS y Computación en Nube muy accesibles en estos días, es posible instalar un Bacula remota y configurar un OpenVPN para efectuar directamente la copia de seguridad de los clientes locales detrás de Firewalls y NATs con más facilidad y seguridad.
Para ello vamos a considerar que tenemos un servidor CentOS 7 con una ip fija y con una interfaz tun0 habilitada y con Bacula Enterprise instalado y configurado.
1. En el servidor Bacula, descargue la secuencia de comandos de instalación de VPN y dé permiso de ejecución
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
Ejecute la secuencia de comandos para iniciar la instalación y dejar las opciones predeterminadas.
La dirección IP debe ser el IP público, ya que es esta dirección que los clientes utilizan para conectarse.
/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) Ejecutar la secuencia de comandos de nuevo para la creación de los clientes
La mensaje siguiente sólo aparece cuando el servidor OpenVPN está configurado.
Seleccione la opción «1) Add a new user».
Para una estandarización es interesante utilizar el mismo nombre del cliente en el bacula.
Por ejemplo: linux-fd, windows-fd, etc.
* En el nombre del cliente no se deben introducir espacios ni caracteres especiales.
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
El archivo de configuración del cliente se guardará en: / etc / openvpn / client con el nombre del cliente y la extensión «.ovpn».
Copiar este archivo a la máquina del cliente donde se encuentra FileDaemon instalado.
3) De forma predeterminada, OpenVPN configura el rango de red VPN con la siguiente pista: 10.8.0.0/24 y proporciona las direcciones para los clientes a través de DHCP
El servidor OpenVPN siempre reservará la primera dirección de esta pista para el IP del propio servidor, en el caso 10.8.0.1, y desde el segundo hasta la penúltima dirección estará disponible para los clientes.
Después de configurar el cliente es interesante definir una IP fija para los clientes, ya que con DHCP puede variar y el Bacula no puede conectar. Entonces básicamente el «cliente1-fd» tendrá la dirección 10.8.0.2, «cliente2-fd» la dirección 10.8.0.3 y así sucesivamente.
Cree un archivo dentro del directorio «/etc/openvpn/ccd/» con el mismo nombre del cliente creado anteriormente (sin ninguna extensión) y añada el contenido siguiente:
echo "ifconfig-push 10.8.0.2 255.255.255.0" > /etc/openvpn/ccd/cliente1-fd
Donde «10.8.0.2» es la dirección IP del cliente1. Cambie de acuerdo con el cliente.
4) Instalación y configuración del cliente de Linux
Instalar OpenVPN
Debian/Ubuntu apt-get install openvpn openssl ca-certificates CentOS/Red Hat yum -f install openvpn iptables openssl ca-certificates
Tome el archivo del cliente (cliente1-fd.ovpn) y guarde en /etc/openvpn/ con el nombre «client.conf».
Introduzca los siguientes comandos para habilitar el inicio automático de vpn e iniciar el servicio.
systemctl enable openvpn@client systemctl start openvpn@client
Si todo ocurre correctamente puede ingresar el comando «ipconfig» o «ip address» que se mostrará una interfaz «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
También puede realizar una prueba de ping a la dirección del 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) Instalación y configuración del cliente de Windows
Acceder a la dirección https://openvpn.net/index.php/download/community-downloads.html y descargar la última versión EXE disponible.
Después de instalar, debe copiar el archivo del cliente (cliente1-fd.ovpn) al directorio «C:Archivos de programaOpenVPNconfig» y acceder a los servicios de Windows «services.msc».
Es para existir 3 servicios OpenVPN:
- OpenVPNService
- OpenVPNServiceLegacy
- OpenVPNServiceInteractive
Haga clic con el botón derecho sobre el primer servicio (OpenVPNService), seleccionar propiedades y cambiar el tipo de inicio a «automático» y también iniciar el servicio.
Con ello, OpenVPN se iniciará automáticamente durante el inicio del sistema y conectarse a la VPN.
6) Configuración del Bacula
Con la VPN configurada tanto en el servidor cuando en los clientes, es necesario cambiar la IP del Storage Daemon del Bacula, a la dirección del Servidor OpenVPN (O crear un nuevo Almacenamiento) y configurar un Client, el Job y un FileSet.
Ejemplo de configuración:
# 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/" } }
Con el cliente configurado puede ejecutar un estado de cliente:
[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 ======================================================================= *
Y realizar un trabajo de copia de seguridad:
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: Español