Conexión con PLC's¶
Este manual es funcional para instalaciones de IsardVDI en una versión 14.47.1 o posterior.
Montaje físico¶
Para este escenario dispondremos de estos dispositivos:
- PLC
- PC gateway
- Máquina virtual.
Montaje lógico¶
Antes de proceder a la creación de una VPN Remota, es importante saber que no se podrán tener varias Extra Networks (redes extra) repetidas o solapadas en una misma instalación (en un mismo servidor de IsardVDI).
-
Creamos una VPN Remota:
-
Seleccionamos Add new y nos pedirá un nombre para la VPN y una red opcional. En este caso la llamaremos prueba-plc y la red que usaremos será la 192.168.203.0/24 (o la de tu preferencia).
-
Una vez creada, modificamos los permisos seleccionando el icono que queda señalado en la imagen para poder asignar los grupos o usuarios que tendrán acceso a la VPN remota.
-
Y descargamos el archivo .conf de la VPN.
Configuración de los dispositivos externos¶
PLC¶
Configuramos una IP estática:
- IP: 192.168.203.2
- Máscara de red: 255.255.255.0
- Gateway: 192.168.203.1
Gateway¶
Configuramos una IP estática:
- IP: 192.168.203.1
- Máscara de red: 255.255.255.0
- Gateway: 192.168.203.1
Descargamos el archivo de configuración de la VPN remota que hemos creado y lo utilizaremos para conectarnos por WireGuard. (Guía de uso de WG ignorar la VPN personal de usuario: o
)
-
Linux:
sudo apt install wireguard sudo mv /ruta/de/descàrrega/isard-vpn.conf /etc/wireguard wg-quick up isard-vpn
-
Windows:
Para que la red LAN de los PLC's pueda establecer conexión con la red VPN remota localizada en IsardVDI, tenemos que hacer lo siguiente:
- La máquina debe de tener salida a internet.
- Añadimos los siguientes comandos sustituyendo la "interficie plc" y la "interfaz-vpn" ('isard-vpn' en esta demo), con la que tengáis en vuestro caso.
# Permitimos comunicación de vuelta desde el plc, ya que no tiene las rutas sudo iptables -t nat -A POSTROUTING -o interficie plc -j MASQUERADE sudo iptables -t nat -A POSTROUTING -o isard-vpn -j MASQUERADE sudo iptables -A FORWARD -i isard-vpn -o interficie plc -j ACCEPT sudo iptables -A FORWARD -i interficie plc -o isard-vpn -j ACCEPT # Instalamos el paquete que hará que la configuración se guarde de forma permanente. sudo apt install iptables-persistent # Si es la primera vez que lo descarga, aparecerá un mensaje para confirmar que queremos guardar las reglas existentes de forma permanente.
Escenario con escritorio individual¶
Esquema¶
En este escenario, se conectará un único escritorio virtual directamente a la red de los PLC's.
Guia¶
CONFIGURACIÓN MÁQUINA VIRTUAL
Habilitamos la interfaz WireguardVPN en la edición de la máquina virtual.
Una vez dentro de la máquina virtual, permitimos el tráfico hacia internet, descomentado los siguientes parámetros en el fichero /etc/sysctl.conf, y aplicamos los cambios:
# Puede usar el editor de su preferencia
sudo nano /etc/sysctl.conf
# Descomentamos estas opciones:
#net.ipv4.ip_forward=1
#net.ipv6.conf.all.forwarding=1
# Aplicamos cambios
sudo sysctl -p
Comprobamos como se llama la interfaz de WireguardVPN que se encuentra en enp2s0 (por defecto) con el comando:
nmcli connection
Para que pueda saber la ruta que ha de seguir de forma permanente cuando pregunte por la red de los PLC's, la 192.168.203.0/24, añadimos el siguiente comando en el cual ha de sustituir "Conexion\ cableada\ 2" por el nombre de la interfaz de WireGuardVPN que hemos comprobado con el comando anterior (las contra barras se utilizan para marcar los espacios en el nombre de la interfaz).
nmcli connection modify {Conexión\ cableada\ 2} +ipv4.routes "192.168.203.0/24 10.2.0.1"
Importante. Se ha de reiniciar el sistema.
Para la prueba de funcionamiento, haremos un ping desde el PLC hacia el escritorio y viceversa.
ping 192.168.203.2 # Desde el escritorio virtual
Escenario con grupo de escritorios.¶
Esquema¶
En este escenario, comunicaremos a varios escritorios virtuales a través de otro que hará de gateway. Este último se configura igual que el a excepción de que, en este caso, debemos de añadirle una red LAN que conectará con los demás escritorios.
Requisitos antes de continuar¶
-
Necesitamos disponer de una interfaz para poder conectar todas las máquinas del grupo que queremos que tengan acceso entre ellas (incluido el escritorio que hará de gateway).
-
Tendrá que ser de tipo OpenVSwitch, ya que son las que permiten el mayor número de usuarios conectados (hasta 4000). En este caso, añadimos un máximo de 50 conexiones para realizar la prueba.
-
Le damos permiso a los usuarios que la vayan a usar.
Guia¶
Configuración Gateway Ubuntu¶
Como podemos ver en este ejemplo, seguiremos los pasos del , pero simularemos que tenemos un grupo que se conectará por la interfaz recién creada (prueba-plc).
Añadimos la interfaz que hemos creado y así debería verse el escritorio gateway.
Una vez dentro de la máquina virtual, permitimos el tráfico hacia internet, descomentado los siguientes parámetros en el fichero /etc/sysctl.conf, y aplicamos los cambios:
# Puede usar el editor de su preferencia
sudo nano /etc/sysctl.conf
# Descomentamos estas opciones:
#net.ipv4.ip_forward=1
#net.ipv6.conf.all.forwarding=1
# Aplicamos cambios
sudo sysctl -p
Para que esta máquina, que hará de gateway, se pueda comunicar con el grupo de escritorios configuraremos una IP de la misma red LAN en la nueva interfaz añadida (enp3s0 => prueba-plc).
Configuramos una IP estática:
- IP: 192.168.10.1
- Máscara de red: 255.255.255.0
- Gateway: 192.168.10.1
Comprobamos como se llama la interfaz del WireguardVPN que se encuentra en enp2s0 con el comando:
nmcli connection
Para que pueda saber la ruta que ha de seguir de forma permanente cuando pregunte por la red de los PLC's, la 192.168.203.0/24, añadimos el siguiente comando en el cual se ha de sustituir "Conexion\ cableada\ 2" por el nombre de la interfaz del wireguard que hemos comprobado con el comando anterior (las contra barras se utilizan para marcar que hay espacios en el nombre de la interfaz).
nmcli connection modify {Conexión\ cableada\ 2} +ipv4.routes "192.168.203.0/24 10.2.0.1"
Importante. Se ha de reiniciar el sistema.
Para la prueba de funcionamiento, haremos un ping desde del PLC hacia el escritorio y viceversa.
ping 192.168.203.2 # Desde el escritorio virtual
Añadimos reglas para permitir el tràfico entre la interfaz del WireguardVPN y la LAN (prueba-plc) con los siguientes comandos:
sudo iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE
sudo iptables -A FORWARD -i enp3s0 -o enp2s0 -j ACCEPT
sudo iptables -A FORWARD -i enp2s0 -o enp3s0 -j ACCEPT
# Instalamos el paquete que hará que la configuración se guarde de forma permanente.
sudo apt install iptables-persistent
# Si es la primera vez que lo descarga, aparecerá un mensaje para confirmar que queremos guardar las reglas existentes de forma permanente.
Configuración Gateway Alpine (otra alternativa)¶
Añadimos la interfaz que hemos creado y así debería verse el escritorio virtual.
Configuramos la interfaz del WireGuard con rutas estáticas hacia la red de los PLC's. /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet dhcp
up ip route add 10.0.0.0/16 via 10.2.0.1 dev eth1
up ip route add 192.168.203.0/24 via 10.2.0.1 dev eth1
auto eth2
iface eth2 inet static
address 192.168.10.1
netmask 255.255.255.0
Reiniciamos la red.
alpine:~# /etc/init.d/networking restart
Añadimos el MASQUERADE.
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o eth2 -j ACCEPT
sudo iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT
Y para que se haga permanente el comando anterior realizaremos lo siguiente:
-
Creamos un archivo con las reglas guardadas.
iptables-save > /etc/iptables/rules.v4
-
Creamos un script para que cargue las reglas guardadas.
nano /etc/local.d/iptables.start
#!/bin/sh iptables-restore < /etc/iptables/rules.v4
- Y le cambiamos las propiedades haciendo el archivo ejecutable y lo habilitamos.
sudo chmod +x /etc/local.d/iptables.start sudo rc-update add local default
Configuración grupo de escritorios.¶
Tendremos solo 2 interfaces en cada máquina virtual del grupo, la privada y la pública para salir a internet.
Para comunicarnos con el escritorio que hará de gateway a través a la nueva interfaz añadida configuraremos una IP de la misma red (enp2s0). La red LAN que escogimos fue la 192.168.10.0/24, y la IP 192.168.10.1 para el escritorio que hace de Gateway, por tanto, a este escritorio le asignaremos, por ejemplo, la 192.168.10.5.
Configuramos una IP estática:
- IP: 192.168.10.5
- Máscara de red: 255.255.255.0
- Gateway: 192.168.10.1
Comprobamos como se llama la interfaz común llamada "prueba-plc" que se aloja en el puerto enp2s0 con el comando:
nmcli connection
El resultado de este se ve tal que así (el nombre de las interfaces varía):
(En nuestro caso se llama Conexión cableada 2. Las contra barras se utilizan para marcar espacios en el nombre de la interficie).
Para que el grupo de escritorios virtuales puedan llegar a red LAN de los PLC's, de forma permanente, tendremos que asignarle diferentes rutas. Guiaremos todas las rutas a través de la IP de la interficie del gateway de la red interna que, en este escenario, es la IP 192.168.10.1.
- Comunicamos el alumno con la red VPN (10.2.0.0/16) que usa el escritorio gateway, a través de la IP gateway de la red interna que conecta el gateway con los alumnos (192.168.10.1) => 10.2.0.0/16.
nmcli connection modify Conexión\ cableada\ 2 +ipv4.routes "10.2.0.0/16 192.168.10.1"
- Después conectamos con la red VPN (10.0.0.0/16) que hay entre el gateway físico y el router de IsardVDI (WireGuardVPN) => 10.0.0.0/16
nmcli connection modify Conexión\ cableada\ 2 +ipv4.routes "10.0.0.0/16 192.168.10.1"
- Y por último, la ruta hacia la red de los PLC's => 192.168.203.0/24
nmcli connection modify Conexión\ cableada\ 2 +ipv4.routes "192.168.203.0/24 192.168.10.1"
O lo podemos añadir manualmente en el archivo de configuración de la interfaz que nos interesa, situado en la carpeta /etc/NetworkManager/system-connetions: