# *Instalación VPN Triara*

Debido a la falta de Forticlient para Linux, en especifico la funcionalidad de conexión VPN IPSEC, se creo este pequeño manual con lo necesario para la configuración de la VPN.

Para el correcto funcionamiento es necesario instalar los certificados disponibles en el siguiente [enlace](https://descargas.triara.mexico/manuales.html) siguiendo el [manual](https://descargas.triara.mexico/manuales/Manual_Intalaci%C3%B3n_Certificados_Acceso_a_la_Red.pdf) correspondiente.


### Requerimientos
- [Libreswan](https://download.libreswan.org/) 3.32 - 4.25

### Adicionales
- [Networkmanager plugin libreswan](https://gitlab.gnome.org/GNOME/NetworkManager-libreswan) 1.2.16.
- [nm-connection-editor](https://linuxhint.com/nm-connection-editor-ubuntu/).

### Configuración LibreSwan
Para definir la conexión se necesitan de dos archivos, `.conf` el cual contiene los detalles de la conexión, `.secrets` el cual contiene el password de la TR a usar y el PSK del grupo.

#### Archivo Conf
Se ubicara dentro de la carpeta `/etc/ipsec.d/`

```sh
conn VPN #Nombre de la conexión
 aggrmode=yes
 leftid=@IDG_VPN #Local ID extraido de la configuración del Forticlient IDG_VPN para QRO|IDG para APODACA
 authby=secret
 left=%defaultroute
 leftmodecfgclient=yes
 right=200.57.155.43 #Dirección del Servidor
 rightmodecfgserver=yes
 modecfgpull=yes
 rightsubnet=0.0.0.0/0
 leftxauthclient=yes
 leftxauthusername=tryha #Usuario o TR a utilizar
 remote_peer_type=cisco
 rightxauthserver=yes
 ike=aes256-sha2_512-ecp384,aes128-sha2_256-ecp384
 phase2alg=aes256-sha2_512,aes128-sha2_256
 ikelifetime=8h
 salifetime=4h
 rekey=yes
 keyingtries=1
 ikev2=never
 nm-configured=no #Valor para definir si se utiliza el plugin del Network Manager 
 auto=add
```

#### Archivo Secrets

En este se define el PSK del grupo y el password para la TR, se ubicara dentro de la carpeta `/etc/ipsec.d/`

```sh
200.57.155.43 %any : PSK "NgdjJeX&k#xkah1s" 
@tryha: XAUTH "PASSWORD"
```

### IPSEC servicio

Para finalizar, verificar que el servicio ipsec esta en correcto funcionamiento con el comando siguiente:
```sh 
systemctl status ipsec.service
```
Si el servicio esta ejecutando de manera adecuada, debemos añadir la conexión al servicio con el siguiente comando:
```sh
ipsec auto --add [Nombre de la Conexión]
```
Una vez añadida realizaremos la activación con el siguiente comando:
```sh
ipsec auto --up [Nombre de la Conexión]
```
Para finalizar la conexión usaremos el siguiente comando:
```sh
ipsec auto --down [Nombre de la Conexión]
```

#### Configuración Adicionales

Se puede utilizar el archivo de configuración (modificando el valor `nm-configured` a yes) en el Network Manager si se tiene instalado el plugin correspondiente, se realiza la importación desde la herramienta **nm-connection-editor**.

Se puede utilizar la vpn dentro de un container en **Docker** usando el [Dockerfile](Dockerfile) incluido junto con el script [run.sh](run.sh), solo habría que modificar las credenciales incluidas en el archivo, esta conexión se realizará mediante un tunel hacia el pod, por medio de una conexión ssh.