Efetuando backup de equipamentos Juniper via SCP
Tags: juniper, freebsd
Published: 2022-09-16 16:49:38

Hoje vou descrever uma maneira simples de efetuar backup das configurações de equipamentos Juniper através de transferência via SCP à cada novo commit.

Para executar essa tarefa é necessário ter uma máquina Linux/BSD que tenha um usuário e senha configurado para uso do Juniper, para poder receber as transferências.

Aqui um cenário de laboratório de como funcionará o backup


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/janf8xj0xau2we6gev88.png)

Basicamente a conexão de backup via SCP vai funcionar através da interface fxp0 do roteador vMX, essa interface que é conhecida por ser a gerência do equipamento, que está conectada à interface e1 no servidor FreeBSD


**1 - Configurando um usuário**

Como mencionei no início do texto, vamos fazer o backup via SCP, logo precisamos ter um usuário criado em algum servidor seja ele Linux ou BSD, no meu caso vou utilizar o FreeBSD, mas também pode ser utilizado qualquer Linux da preferência do leitor.

No FreeBSD vamos criar o nosso usuário com o seguinte comando

```
root@freebsd-eve:~ # pw user add -n juniper -c "backup juniper" -d /home/juniper -m -s /usr/local/bin/bash
```

Abaixo vamos setar uma senha para nosso usuário, que em meu exemplo terá a senha como **patobranco123**
```
root@freebsd-eve:~ # passwd juniper
Changing local password for juniper
New Password:
Retype New Password:
root@freebsd-eve:~ #
```

Aqui acessamos o usuário via comando **su**, para ver se está tudo certo no diretório home

```
root@freebsd-eve:~ # su - juniper
To see the last time that you logged in, use lastlogin(8).
                -- Dru <genesis@istar.ca>
[juniper@freebsd-eve ~]$
```

Ainda dentro do diretório logado com o usuário juniper, vamos criar o diretório vmx, local este que será utilizado para salvar nossos backups.

```
[juniper@freebsd-eve ~]$ mkdir vmx
[juniper@freebsd-eve ~]$ ls
vmx
```

Com o diretório criado e o usuário fumando, vamos agora para o roteador vMX para efetuar as configurações de backup.


**2 - Configurando o roteador Juniper para efetuar o backup**

Com tudo ajustado no servidor que vai receber os arquivos, vamos para o nosso roteador Juniper fazer a configuração do backup via SCP

A comunicação entre o servidor e o Juniper como falei no início do artigo se dará via interface fxp0, através da rede 192.168.100.0/24, onde o servidor FreeBSD tem o IP 192.168.100.100/24 e o roteador Juniper tem o IP 192.168.100.101/24.



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bloi0h10qz6w44a9f6l4.png)

Depois de validarmos a conectividade, vamos a configuração do backup SCP:

```
root> edit
Entering configuration mode

[edit]
root# edit system archival configuration

[edit system archival configuration]
root# set transfer-on-commit


root# set archive-sites "scp://juniper@192.168.100.100:/home/juniper/vmx" password "patobranco123"
The authenticity of host '192.168.100.100 (192.168.100.100)' can't be established.
ECDSA key fingerprint is SHA256:o4A7FyvAjqN3GNM9fnHazfw8Z6Xng3SJfn+gEDEgDWs.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.100.100' (ECDSA) to the list of known hosts.

[edit system archival configuration]
root# show
transfer-on-commit;
archive-sites {
    "scp://juniper@192.168.100.100:/home/juniper" password "$9$q.T36/tBRS69tOIReKM8XNb2aJDP5FUD9A0ORE"; ## SECRET-DATA
}

[edit system archival configuration]
root# top

[edit]
root# show | compare
[edit system]
+   archival {
+       configuration {
+           transfer-on-commit;
+           archive-sites {
+               "scp://juniper@192.168.100.100:/home/juniper/vmx" password "$9$0oClOEyleW7dslKWx-d4oJGDHmT3nC1RS9CKMXxdV"; ## SECRET-DATA
+           }
+       }
+   }
[edit]
+  security {
+      ssh-known-hosts {
+          host 192.168.100.100 {
+              ecdsa-sha2-nistp256-key AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFKrb1vi6ld4XcvWd6bfT2wM4h6n0WGmnEIJLB49SSZOA9rSuiHLiAPv5niuxbrPm1vlutlbQLk6xPvGfuK5TeA=;
+          }
+      }
+  }

[edit]
root# commit and-quit
commit complete
Exiting configuration mode

root>
```
No quadro acima, entramos no modo de edição do equipamento 
e acessamos o nível **"system archival configuration"**, para inserir a opção de transferência de backup do sistema à cada novo commit executado e inserimos a linha do scp com o usuário juniper fazendo login no servidor FreeBSD que tem o usuário criado e apontando que o diretório de backup será a pasta vmx que criamos previamente. Após a configuração, executamos um **"show|compare"** para validarmos o que será mudado e é exibido que a configuração de backup via commit com scp foi criada e que no nível **"security"** de hosts conhecidos, foi adicionado o servidor FreeBSD.

Após essa configuração vamos aos logs do roteador para verificar se tudo ocorreu corretamente.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/riyzn7igji9p3qowmofz.png)

Podemos notar a seguinte linha:

```
Sep 16 16:17:08   logger[18674]: transfer-file: Transferred /var/transfer/config/_20220916_161655_juniper.conf.gz
```
A cada novo commit, essa linha é exibida, mostrando que o backup já foi despachado para o servidor via SCP.

Por último, vamos no servidor FreeBSD na home do usuário juniper no diretório vmx ver como tudo ficou:

```
root@freebsd-eve:~ # cd /home/juniper/vmx/
root@freebsd-eve:/home/juniper/vmx # ls -lha
total 12
drwxr-xr-x  2 juniper  juniper   512B Sep 16 16:17 .
drwxr-xr-x  3 juniper  juniper   512B Sep 16 14:50 ..
-rw-r-----  1 juniper  juniper   706B Sep 16 16:16 _20220916_161655_juniper.conf.gz
```

Podemos ver que o backup ocorreu corretamente no diretório que configuramos, se em algum momento haja necessidade de ver o arquivo de backup para alguma restauração ou simples consulta, basta utilizar o comando gunzip para poder visualizar o conteúdo:

```
root@freebsd-eve:/home/juniper/vmx # gunzip _20220916_161655_juniper.conf.gz
root@freebsd-eve:/home/juniper/vmx # ls
_20220916_161655_juniper.conf
root@freebsd-eve:/home/juniper/vmx # cat _20220916_161655_juniper.conf | more
## Last changed: 2022-09-16 16:16:46 UTC
version 21.3R1-S2.2;
system {
    root-authentication {
        encrypted-password "$6$htF6VKSr$YedS3Ki1Tudh.78942QdH5MvNApo7Nizou0SFpaMtZy5vpAEf7nS3rV6UnIzpZhtvjrO7CjerOO84mg0dqi0P/";
    }
    syslog {
        file interactive-commands {
            interactive-commands any;
        }
        file messages {
            any notice;
            authorization info;
        }
```

Podemos visualizar o arquivo via comando cat, vim, vi ou o editor de sua preferência, para possível edição e posterior restauração de backup no roteador.


Link de referência: [link](https://www.juniper.net/documentation/us/en/software/junos/cli/topics/task/junos-software-system-management-router-configuration-archiving.html)