Salta el contingut

Connexió amb PLC's

Aquest manual és funcional per a instal·lacions d'IsardVDI en una versió 14.47.1 o posterior.


Muntatge físic

Per a aquest escenari disposarem d'aquests dispositius:

  • PLC
  • PC gateway
  • Màquina virtual.

Muntatge lògic

Abans de procedir a la creació d'una VPN Remota, és important saber que no es podran tenir diverses Extra Networks (xarxes extra) repetides o superposades en una mateixa instal·lació (en un mateix servidor d'IsardVDI).

  • Creem una VPN Remota:

  • Seleccionem Add new i ens demanarà un nom per a la VPN i una xarxa opcional. En aquest cas l'anomenarem prova-plc i la xarxa que utilitzarem serà la 192.168.203.0/24 (o la de la teva preferència).

  • Una vegada creada, modifiquem els permisos seleccionant la icona que queda assenyalada en la imatge per a poder assignar els grups o usuaris que tindran accés a la VPN remota.

  • I descarreguem l'arxiu .conf de la VPN.


Configuració dels dispositius externs

PLC

Configurem una IP estàtica:

  • IP: 192.168.203.2
  • Màscara de xarxa: 255.255.255.0
  • Gateway: 192.168.203.1

Gateway

Per configurar la màquina gateway entre l’escriptori virtual i el PLC, tenim les següents alternatives:

Configurem una IP estàtica:

  • IP: 192.168.203.1
  • Màscara de xarxa: 255.255.255.0
  • Gateway: 192.168.203.1

Descarreguem l'arxiu de configuració de la VPN remota que hem creat i la utilitzarem per a connectar-nos per WireGuard. (Guia d'ús de WG, ignorar la VPN personal d'usuari: Amb amfitrió Linux o Amb amfitrió Windows)

  • Linux:
sudo apt install wireguard
sudo mv /ruta/de/descarrega/isard-vpn.conf /etc/wireguard
wg-quick up isard-vpn
  • Windows:

    Enllaç de descàrrega WireGuard

Perquè la xarxa LAN dels PLC's pugui establir connexió amb la xarxa VPN remota localitzada a IsardVDI, hem de fer el següent:

  • La màquina ha de tenir sortida a internet.

  • Afegim les següents ordres substituint la "interficie plc" i la "interfície vpn" ('isard-vpn' en aquesta demo) amb la qual tingueu en el vostre cas.

# Permetem comunicació de tornada des del plc, ja que no té les rutes
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

# Instal·lem el paquet que farà que la configuració es guardi de manera permanent.
sudo apt install iptables-persistent

# Si és la primera vegada que ho descarrega, apareixerà un missatge per a confirmar que volem guardar les regles existents de manera permanent.

Aquesta configuració només és vàlida per a versions de la Mikrotik de la v7 o posterior.

Per comprovar la versió, podem executar l'ordre:

system/ resource/ print
Actualitzar Mikrotik a una nova versió

Per actualitzar la Mikrotik a una altra versió, cal accedir a la seva pàgina oficial.

Ens descarreguem l'arxiu .npk de la versió Stable, assegurant-nos que correspongui amb l’arquitectura del nostre dispositiu Mikrotik.

Per consultar l'arquitectura, podem executar l'ordre:

system/ resource/ print

Per transferir aquest arxiu al Mikrotik mitjançant un portàtil (tant si utilitzem Linux com Windows), hem d’obrir una terminal o una PowerShell amb permisos d’administrador i executar la comanda següent:

scp /Ruta/de/l'arxiu/routeros-7.18.2-mmips.npk USUARI_MIKROTIK@IP_MIKROTIK:routeros-7.18.2-mmips.npk

Un cop transferit l’arxiu, reiniciem el Mikrotik perquè arrenqui amb el sistema actualitzat.

reboot

Ens descarreguem l’arxiu de configuració de la VPN remota que hem creat, per tal de consultar-ne els paràmetres de connexió i aplicar-los mitjançant diverses comandes al Mikrotik.

L’arxiu de configuració té l’estructura següent:

[Interface]
Address = 10.X.X.X
PrivateKey = Idkjf...=
MTU = 1600
PostUp = :

[Peer]
PublicKey = 9hFhQ...=
Endpoint = domini.instal·lació:PortInstal·lació
AllowedIPs = 10.2.0.0/16
PersistentKeepalive = 25

Configurem la VPN WireGuard al Mikrotik substituint tots els paràmetres de l’arxiu de configuració pels seus valors corresponents.

/interface wireguard
add listen-port=13231 mtu={MTU} name=wireguard1 private-key="{PrivateKey}"

/interface wireguard peers
add allowed-address= 10.2.0.0/16
endpoint-address={domini.instal·lació}
endpoint-port={PortInstal·lació} 
interface=wireguard1
persistent-keepalive={PersistentKeepalive} 
public-key="{PublicKey}"

/ip address add address={Address}
interface=wireguard1

/ip route add disabled=no distance=1 dst-address=10.2.0.0/16
gateway=wireguard1 routing-table=main suppress-hw-offload=no

Exemple de comandes emplenades amb els valors de l’arxiu VPN:

/interface wireguard
add listen-port=13231 mtu=1600 name=wireguard1 private-key="Idkjf...="

/interface wireguard peers
add allowed-address= 10.2.0.0/16
endpoint-address=isardvdi.com
endpoint-port=443 
interface=wireguard1
persistent-keepalive=25 
public-key="9hFhQ...="

/ip address add address=10.X.X.X
interface=wireguard1

/ip route add disabled=no distance=1 dst-address=10.2.0.0/16
gateway=wireguard1 routing-table=main suppress-hw-offload=no

Escenari amb escriptori individual

Esquema

En aquest escenari, es connectarà un únic escriptori virtual directament a la xarxa dels PLC's.

Guia

CONFIGURACIÓ MÀQUINA VIRTUAL

Habilitem la interfície WireguardVPN en l'edició de la màquina virtual.

Una vegada dins de la màquina virtual, permetem el trànsit cap a internet, descomentant els següents paràmetres en el fitxer /etc/sysctl.conf i, apliquem els canvis:

# Pot usar l'editor de la seva preferència
sudo nano /etc/sysctl.conf

# Descomentem aquestes opcions:
#net.ipv4.ip_forward=1
#net.ipv6.conf.all.forwarding=1

# Apliquem canvis
sudo sysctl -p

Comprovem com es diu la interfície de WireguardVPN que es troba en enp2s0 (per defecte) amb l'ordre:

nmcli connection

Perquè pugui saber la ruta que ha de seguir de manera permanent quan pregunti per la xarxa dels PLC's, la 192.168.203.0/24, afegim la següent ordre en la qual ha de substituir "Connexió\ cablejada\ 2" pel nom de la interfície de WireGuardVPN que hem comprovat amb l'ordre anterior (les contrabarres s'utilitzen per a marcar els espais en el nom de la interfície).

nmcli connection modify {Connexió\ cablejada\ 2} +ipv4.routes "192.168.203.0/24 10.2.0.1"

Important. S'ha de reiniciar el sistema.

Per a la prova de funcionament, farem un ping des del PLC cap a l'escriptori i viceversa.

ping 192.168.203.2 # Des de l'escriptori virtual


Escenari amb grup d'escriptoris

Esquema

En aquest escenari, comunicarem a diversos escriptoris virtuals a través d'un altre que farà de gateway. Aquest últim es configura igual que l'Escenari amb escriptori individual a excepció que, en aquest cas, hem d'afegir-li una xarxa LAN que connectarà amb els altres escriptoris.

Requisits abans de continuar

  • Necessitem disposar d'una interfície per poder connectar totes les màquines del grup que volem que tinguin accés entre elles (inclòs l'escriptori que farà de gateway).

  • Haurà de ser de tipus OpenVSwitch, ja que són les que permeten el nombre més gran d'usuaris connectats (fins a 4000). En aquest cas, afegim un màxim de 50 connexions per a dur a terme la prova.

  • Li donem permís als usuaris que la vagin a usar.

Guia

Per configurar l'escriptori virtual que farà de Gateway per a altres escriptoris virtuals podem fer-ho amb alguna d'aquestes alternatives:

Com podem veure en aquest exemple, seguirem els passos de l'Escenari amb escriptori individual, però simularem que tenim un grup que es connectarà per la interfície recentment creada (prova-plc).

Afegim la interfície que hem creat i així hauria de veure's l'escriptori Gateway.

Una vegada dins de la màquina virtual, permetem el trànsit cap a internet, descomentant els següents paràmetres en el fitxer /etc/sysctl.conf, i apliquem els canvis:

# Pot usar l'editor de la seva preferència
sudo nano /etc/sysctl.conf

# Descomentem aquestes opcions:
#net.ipv4.ip_forward=1
#net.ipv6.conf.all.forwarding=1

# Apliquem canvis
sudo sysctl -p

Perquè aquesta màquina, que farà de gateway, es pugui comunicar amb el grup d'escriptoris configurarem una IP de la mateixa xarxa LAN en la nova interfície afegida (enp3s0 => prova-plc).

Configurem una IP estàtica:

  • IP: 192.168.10.1
  • Màscara de xarxa: 255.255.255.0
  • Gateway: 192.168.10.1

Comprovem com es diu la interfície del WireguardVPN que es troba en enp2s0 amb l'ordre:

nmcli connection

Perquè pugui saber la ruta que ha de seguir de manera permanent quan pregunti per la xarxa dels PLC's, la 192.168.203.0/24, afegim el següent comando en el qual s'ha de substituir "Connexió\ cablejada\ 2" pel nom de la interfície del WireGuardVPN que hem comprovat amb l'ordre anterior (les contrabarres s'utilitzen per a marcar que hi ha espais en el nom de la interfície).

nmcli connection modify {Connexió\ cablejada\ 2} +ipv4.routes "192.168.203.0/24 10.2.0.1"

Important. S'ha de reiniciar el sistema.

Per a la prova de funcionament, farem un ping des del PLC cap a l'escriptori i viceversa.

ping 192.168.203.2 # Des de l'escriptori virtual

Afegim regles per a permetre el tràfic entre la interfície de WireguardVPN i la LAN (prova-plc) amb les següents comandes:

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

# Instal·lem el paquet que farà que la configuració es guardi de manera permanent.
sudo apt install iptables-persistent

# Si és la primera vegada que ho descarrega, apareixerà un missatge per a confirmar que volem guardar les regles existents de manera permanent.

Afegim la interfície que hem creat i així hauria de veure's l'escriptori virtual.

Configurem la interfície del WireGuard amb rutes estàtiques cap a la xarxa dels PLC's. /etc/network/interfícies

auto el
iface el 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

Reiniciem la xarxa.

alpine:~# /etc/init.d/networking restart

Afegim 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

I perquè es faci permanent l'ordre anterior realitzarem el següent:

  • Creem un arxiu amb les regles desades.
iptables-save > /etc/iptables/rules.v4
  • Creem un script perquè carregui les regles guardades.

nano /etc/local.d/iptables.start
#!/bin/sh
iptables-restore < /etc/iptables/rules.v4

  • I li canviem les propietats fent l'arxiu executable i l'habilitem.
sudo chmod +x /etc/local.d/iptables.start
sudo rc-update add local default

Configuració grup d'escriptoris

Tindrem només 2 interfícies en cada màquina virtual del grup, la privada i la pública per a sortir a internet.

Per a comunicar-nos amb l'escriptori que farà de gateway a través a la nova interfície afegida configurarem una IP de la mateixa xarxa (enp2s0). La xarxa LAN que vam triar va ser la 192.168.10.0/24, i la IP 192.168.10.1 per a l'escriptori que fa de Gateway, per tant, a aquest escriptori li assignarem, per exemple, la 192.168.10.5.

Configurem una IP estàtica:

  • IP: 192.168.10.5
  • Màscara de xarxa: 255.255.255.0
  • Gateway: 192.168.10.1

Comprovem com es diu la interfície comuna anomenada "prova-plc" que s'allotja en el port enp2s0 amb l'ordre:

nmcli connection

El resultat d'aquest es veu tal que així (el nom de les interfícies varia):

(En el nostre cas es diu Connexió cablejada 2. Les contrabarres s'utilitzen per a marcar espais en el nom de la interfície).

Perquè el grup d'escriptoris virtuals puguin arribar a xarxa LAN dels PLC's, de manera permanent, haurem d'assignar-li diferents rutes. Guiarem totes les rutes a través de la IP de la interfície del Gateway de la xarxa interna que, en aquest escenari, és la IP 192.168.10.1.

  • Comuniquem l'alumne amb la xarxa VPN (10.2.0.0/16) que fa servir l'escriptori gateway, a través de la IP gateway de la xarxa interna que connecta el gateway amb els alumnes (192.168.10.1) => 10.2.0.0/16.

    nmcli connection modify Connexió\ cablejada\ 2 +ipv4.routes "10.2.0.0/16 192.168.10.1"
    

  • Després connectem amb la xarxa VPN (10.0.0.0/16) que hi ha entre el gateway físic i l'encaminador d'IsardVDI (WireGuardVPN) => 10.0.0.0/16

    nmcli connection modify Connexió\ cablejada\ 2 +ipv4.routes "10.0.0.0/16 192.168.10.1"
    

  • I finalment, la ruta cap a la xarxa dels PLC's => 192.168.203.0/24

    nmcli connection modify Connexió\ cablejada\ 2 +ipv4.routes "192.168.203.0/24 192.168.10.1"
    

O ho podem afegir manualment en l'arxiu de configuració de la interfície que ens interessa, situat en la carpeta /etc/NetworkManager/system-connetions:


Darrera actualització: April 17, 2025