| Incluir página | ||||
|---|---|---|---|---|
|
Antes de comenzar debe verificar los siguientes puntos:
- Tengo conexión a Internet
- No estoy conectado a la Wifi UPVNET ni eduroam en la UPV
- He configurado la autenticación de doble factor
- Sé el usuario que debo utilizar para conectarme a la VPN
- Sé la contraseña que debo usar para conectarme a la VPN
Podemos disponer de hasta cuatro túneles, aunque lo habitual es que solo se tenga acceso a dos de ellos: ALUMNO y ALUMNO-BIB o UPVNET y UPVNET-BIB
Debemos seleccionar cual de ellos queremos configurar teniendo en cuenta el acceso que proporcionan y sustituir el dato ID o Nombre de Usuario según corresponda según su colectivo:
| Si usted es | ||||
|---|---|---|---|---|
| Quiero | Dato | PDI o PTGAS | Alumno | Otros casos especiales |
Acceder por el túnel solo a la UPV. El resto de tráfico a Internet irá por mi conexión. Opción recomendada. | ID | UPVNET | ALUMNO | el texto indicado en su caso |
Acceder a Internet también por el túnel para ver las bases de datos y revistas de Biblioteca. | ID | UPVNET-BIB | ALUMNO-BIB | No es posible |
| En cualquier caso | Nombre de Usuario | xxxxx@upvnet.upv.es | xxxxx@alumno.upv.es | xxxxx@upvnet.upv.es |
Forticlient no proporciona soporte en Linux para túneles IKEv2 por lo que no podemos utilizar el cliente oficial y las interfaces gráficas habituales de network-manager no cumplen con todos los requisitos necesarios para configurar los túneles, por lo que realizaremos la configuración y posterior gestión de la conexión y desconexión de los túneles mediante el terminal.
Ejecute estos comandos como root en un terminal para instalar el software necesario.
Si está utilizando un usuario sin privilegios puede ejecutar los comandos utilizando sudo (el usuario tiene que estar habilitado para utilizar sudo para ello debe pertenecer al grupo sudo y disponer de la configuración en /etc/sudoers):
sudo apt update
sudo apt upgrade
sudo apt-get install strongswan strongswan-swanctl libstrongswan-standard-plugins libcharon-extra-plugins libstrongswan-extra-plugins systemd-resolved
Realizamos una copia de seguridad del fichero original de configuración del servicio swanctl:
cp -a /etc/swanctl/swanctl.conf /etc/swanctl/swanctl.conf.old
Borramos el contenido previo de /etc/swanctl/swanctl.conf y lo cambiamos por la siguiente configuración (pese a que hay pocos cambios de configuración para cada túnel para facilitar la configuración y reducir los posibles errores de configuración se proporcionan cuatro opciones de configuración, una por cada identificador):
ID ALUMNO (Acceder por el túnel solo a la UPV. El resto de tráfico a Internet irá por mi conexión):
| Bloque de código | ||
|---|---|---|
| ||
connections {
ALUMNO {
version = 2
remote_addrs = vpn.upv.es
proposals = aes256-sha256-modp2048
vips = 0.0.0.0
dpd_delay = 60s
encap = yes
fragmentation = yes
local {
auth = eap-mschapv2
id = ALUMNO
eap_id = xxxx@alumno.upv.es
}
remote {
auth = psk
id = ALUMNO
}
children {
net {
local_ts = dynamic
remote_ts = 158.42.0.0/16,10.10.0.0/8,172.16.0.0/12,192.168.0.0/16
updown = /etc/strongswan.d/scripts/updown-routes-dns.sh
esp_proposals = aes256-sha256-modp2048
dpd_action = restart
start_action = start
}
}
}
}
secrets {
ike-psk {
secret = "buscar_contraseña_compartida"
}
eap-user {
id = xxxx@alumno.upv.es
secret = "contraseña_del_usuario"
}
} |
ID ALUMNO-BIB (Acceder a Internet también por el túnel para ver las bases de datos y revistas de Biblioteca):
| Bloque de código | ||
|---|---|---|
| ||
connections {
ALUMNO-BIB {
version = 2
remote_addrs = vpn.upv.es
proposals = aes256-sha256-modp2048
vips = 0.0.0.0
dpd_delay = 60s
encap = yes
fragmentation = yes
local {
auth = eap-mschapv2
id = ALUMNO-BIB
eap_id = xxxx@alumno.upv.es
}
remote {
auth = psk
id = ALUMNO-BIB
}
children {
net {
local_ts = 0.0.0.0/0
remote_ts = 0.0.0.0/0
updown = /etc/strongswan.d/scripts/updown-routes-dns.sh
esp_proposals = aes256-sha256-modp2048
dpd_action = restart
start_action = start
}
}
}
}
secrets {
ike-psk {
secret = "buscar_contraseña_compartida"
}
eap-user {
id = xxxx@alumno.upv.es
secret = "contraseña_del_usuario"
}
}
|
ID UPVNET (Acceder por el túnel solo a la UPV. El resto de tráfico a Internet irá por mi conexión):
| Bloque de código | ||
|---|---|---|
| ||
connections {
UPVNET {
version = 2
remote_addrs = vpn.upv.es
proposals = aes256-sha256-modp2048
vips = 0.0.0.0
dpd_delay = 60s
encap = yes
fragmentation = yes
local {
auth = eap-mschapv2
id = UPVNET
eap_id = xxxx@upvnet.upv.es
}
remote {
auth = psk
id = UPVNET
}
children {
net {
local_ts = dynamic
remote_ts = 158.42.0.0/16,10.10.0.0/8,172.16.0.0/12,192.168.0.0/16
updown = /etc/strongswan.d/scripts/updown-routes-dns.sh
esp_proposals = aes256-sha256-modp2048
dpd_action = restart
start_action = start
}
}
}
}
secrets {
ike-psk {
secret = "buscar_contraseña_compartida"
}
eap-user {
id = xxxx@upvnet.upv.es
secret = "contraseña_del_usuario"
}
}
|
ID UPVNET-BIB (Acceder a Internet también por el túnel para ver las bases de datos y revistas de Biblioteca):
| Bloque de código | ||
|---|---|---|
| ||
connections {
UPVNET-BIB {
version = 2
remote_addrs = vpn.upv.es
proposals = aes256-sha256-modp2048
vips = 0.0.0.0
dpd_delay = 60s
encap = yes
fragmentation = yes
local {
auth = eap-mschapv2
id = UPVNET-BIB
eap_id = xxxx@upvnet.upv.es
}
remote {
auth = psk
id = UPVNET-BIB
}
children {
net {
local_ts = 0.0.0.0/0
remote_ts = 0.0.0.0/0
updown = /etc/strongswan.d/scripts/updown-routes-dns.sh
esp_proposals = aes256-sha256-modp2048
dpd_action = restart
start_action = start
}
}
}
}
secrets {
ike-psk {
secret = "buscar_contraseña_compartida"
}
eap-user {
id = xxxx@upvnet.upv.es
secret = "contraseña_del_usuario"
}
}
|
Debemos cambiar xxxx por nuestro nombre de usuario en dos entradas, poner nuestra contraseña de usuario y poner la clave pre-compartida que se indica en el portal de autogestión de la intranet: https://intranet.upv.es/pls/soalu/sic_piolin.LanzarForm?p_id_form=722D4AF14F7C7D0B0F5952E389FB82B5
El fichero /etc/strongswan.d/scripts/updown-routes-dns.sh se utiliza para configurar los DNS y el sufijo DNS de la UPV, se trata de un fichero opcional, en caso de no querer utilizarlo se comenta o se elimina la línea updown y se utilizarán los DNS del proveedor de su conexión. Para configurarlo, como usuario root, primero creamos la carpeta, editamos el fichero y copiamos el siguiente contenido:
mkdir -p /etc/strongswan.d/scripts
touch /etc/strongswan.d/scripts/updown-routes-dns.sh
chmod +x /etc/strongswan.d/scripts/updown-routes-dns.sh
nano /etc/strongswan.d/scripts/updown-routes-dns.sh
| Bloque de código | ||
|---|---|---|
| ||
#!/bin/bash
IFACE="$PLUTO_INTERFACE"
case "$PLUTO_VERB" in
up-client)
resolvectl dns $IFACE 158.42.1.118 158.42.1.128
resolvectl domain $IFACE "~upv.es"
;;
down-client)
resolvectl revert $IFACE
nmcli general reload
;;
esac |
Ya disponemos de la configuración necesaria, vamos a proceder a cargar dicha configuración (recordad, siempre como root o con sudo):
swanctl --load-all
Podremos ver algo similar a esto, no hay problema si no sale exactamente lo mismo pero si debe indicar que se ha cargado una conexión:
root@UbuntuPVNTest:/etc/swanctl# swanctl --load-all
loaded ike secret 'ike-psk'
loaded eap secret 'eap-user'
no authorities found, 0 unloaded
no pools found, 0 unloaded
loaded connection 'ALUMNO'
successfully loaded 1 connections, 0 unloaded
Podemos comprobarlo listando las conexiones configuradas en el sistema:
swanctl --list-conns
root@UbuntuPVNTest:/etc/swanctl# swanctl --list-sas
ALUMNO: #120, CONNECTING, IKEv2, 8ed555d12eeb427a_i* 7ab40febe95a28ae_r
local 'ALUMNO' @ X.X.X.X[4500]
remote 'ALUMNO' @ X.X.X.X[4500]
AES_CBC-256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
active: IKE_AUTH IKE_CERT_POST IKE_CONFIG IKE_AUTH_LIFETIME IKE_MOBIKE IKE_ESTABLISH CHILD_CREATE
Para establecer la conexión utilizamos la siguiente orden (recordad tener a mano el dispositivo para validar la autenticación mediante 2FA, en este momento es cuando se va a solicitar):
swanctl --initiate --child net
root@UbuntuPVNTest:/etc/swanctl# swanctl --initiate --child net
[IKE] initiating IKE_SA ALUMNO[123] to X.X.X.X
[ENC] generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(REDIR_SUP) ]
[ENC] parsed IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) ]
[CFG] selected proposal: IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
[IKE] remote host is behind NAT
[IKE] establishing CHILD_SA net{16}
[ENC] generating IKE_AUTH request 1 [ IDi N(INIT_CONTACT) IDr CPRQ(ADDR DNS) SA TSi TSr N(MOBIKE_SUP) N(NO_ADD_ADDR) N(EAP_ONLY) N(MSG_ID_SYN_SUP) ]
[ENC] parsed IKE_AUTH response 1 [ IDr AUTH EAP/REQ/ID ]
[IKE] authentication of 'ALUMNO' with pre-shared key successful
[IKE] server requested EAP_IDENTITY (id 0xDB), sending 'xxxx@upvnet.upv.es'[.....]
[IKE] IKE_SA ALUMNO[123] established between X.X.X.X[ALUMNO]...X.X.X.X[ALUMNO]
[IKE] scheduling rekeying in 13867s
[IKE] maximum IKE_SA lifetime 15307s
[CFG] selected proposal: ESP:AES_CBC_256/HMAC_SHA2_256_128/NO_EXT_SEQ
[IKE] CHILD_SA net{16} established with SPIs c8fb653c_i a4c841e6_o and TS X.X.X.X/32 === 10.0.0.0/8 158.42.0.0/16 172.16.0.0/12 192.168.0.0/16
initiate completed successfully
Para finalizar la conexión utilizaremos:
swanctl --terminate --child net --ike ALUMNO
root@UbuntuPVNTest:/etc/swanctl# swanctl --terminate --child net --ike ALUMNO
[...]
[ENC] parsed INFORMATIONAL response 0 [ D ]
[IKE] received DELETE for ESP CHILD_SA with SPI a4c841e6
[IKE] CHILD_SA net{16} closed
terminate completed successfully
Algunos comandos útiles para comprobar la conexión y verificar la configuración:
tracepath -n www.upv.es (debe enrutar por el túnel siempre)
tracepath -n www.valencia.es (debe enrutar por el túnel solo en UPVNET-BIB Y EN ALUMNO-BIB)
resolvectl status
ifconfig
ifconfig -a
ip a
ip r
route -n
ip rule show
ip route show table 220
ip xfrm policy
En caso de querer disponer de más de un túnel podemos tener varios ficheros de configuración y con un enlace simbólico cambiamos le fichero de configuración, por ejemplo:
root@UbuntuPVNTest:/etc/swanctl# ll
total 108
drwxr-xr-x 15 root root 4096 Jun 1 09:59 ./
drwxr-xr-x 150 root root 12288 May 28 06:14 ../
drwxr-xr-x 2 root root 4096 Apr 17 21:38 conf.d/
drwx------ 2 root root 4096 Apr 17 21:38 ecdsa/
drwxr-xr-x 2 root root 4096 Apr 17 21:38 pkcs12/
drwx------ 2 root root 4096 Apr 17 21:38 pkcs8/
drwx------ 2 root root 4096 Apr 17 21:38 private/
drwxr-xr-x 2 root root 4096 Apr 17 21:38 pubkey/
drwx------ 2 root root 4096 Apr 17 21:38 rsa/
lrwxrwxrwx 1 root root 19 Jun 1 09:17 swanctl.conf@ -> swanctl.conf.ALUMNO
-rw-r--r-- 1 root root 925 Jun 1 09:59 swanctl.conf.ALUMNO
-rw-r--r-- 1 root root 898 May 29 13:06 swanctl.conf.ALUMNOBIB
-rw-r--r-- 1 root root 937 May 29 13:07 swanctl.conf.UPVNET
-rw-r--r-- 1 root root 911 May 29 13:07 swanctl.conf.UPVNETBIB
-rw-r--r-- 1 root root 3280 Jun 1 09:16 swanctl.conf.allprofiles
-rw-r--r-- 1 root root 16822 Apr 17 21:38 swanctl.conf.old
drwxr-xr-x 2 root root 4096 Apr 17 21:38 x509/
drwxr-xr-x 2 root root 4096 Apr 17 21:38 x509aa/
drwxr-xr-x 2 root root 4096 Apr 17 21:38 x509ac/
drwxr-xr-x 2 root root 4096 Apr 17 21:38 x509ca/
drwxr-xr-x 2 root root 4096 Apr 17 21:38 x509crl/
drwxr-xr-x 2 root root 4096 Apr 17 21:38 x509ocsp/
root@UbuntuPVNTest:/etc/swanctl# rm swanctl.conf
root@UbuntuPVNTest:/etc/swanctl# ln -s swanctl.conf.ALUMNOBIB swanctl.conf
root@UbuntuPVNTest:/etc/swanctl# ll
total 108
drwxr-xr-x 15 root root 4096 Jun 1 12:05 ./
drwxr-xr-x 150 root root 12288 May 28 06:14 ../
drwxr-xr-x 2 root root 4096 Apr 17 21:38 conf.d/
drwx------ 2 root root 4096 Apr 17 21:38 ecdsa/
drwxr-xr-x 2 root root 4096 Apr 17 21:38 pkcs12/
drwx------ 2 root root 4096 Apr 17 21:38 pkcs8/
drwx------ 2 root root 4096 Apr 17 21:38 private/
drwxr-xr-x 2 root root 4096 Apr 17 21:38 pubkey/
drwx------ 2 root root 4096 Apr 17 21:38 rsa/
lrwxrwxrwx 1 root root 22 Jun 1 12:05 swanctl.conf@ -> swanctl.conf.ALUMNOBIB
-rw-r--r-- 1 root root 925 Jun 1 09:59 swanctl.conf.ALUMNO
-rw-r--r-- 1 root root 898 May 29 13:06 swanctl.conf.ALUMNOBIB
-rw-r--r-- 1 root root 937 May 29 13:07 swanctl.conf.UPVNET
-rw-r--r-- 1 root root 911 May 29 13:07 swanctl.conf.UPVNETBIB
-rw-r--r-- 1 root root 3280 Jun 1 09:16 swanctl.conf.allprofiles
-rw-r--r-- 1 root root 16822 Apr 17 21:38 swanctl.conf.old
drwxr-xr-x 2 root root 4096 Apr 17 21:38 x509/
drwxr-xr-x 2 root root 4096 Apr 17 21:38 x509aa/
drwxr-xr-x 2 root root 4096 Apr 17 21:38 x509ac/
drwxr-xr-x 2 root root 4096 Apr 17 21:38 x509ca/
drwxr-xr-x 2 root root 4096 Apr 17 21:38 x509crl/
drwxr-xr-x 2 root root 4096 Apr 17 21:38 x509ocsp/
root@UbuntuPVNTest:/etc/swanctl# swanctl --load-all
agent plugin requires CAP_SETUID/CAP_SETGID capability
plugin 'agent': failed to load - agent_plugin_create returned NULL
loaded ike secret 'ike-psk'
loaded eap secret 'eap-user'
no authorities found, 0 unloaded
no pools found, 0 unloaded
loaded connection 'upv-ALUMNO-BIB'
successfully loaded 1 connections, 1 unloaded