En algunas instalaciones nuestras máquinas estan en el mismo rango de red que la red de informática de la empresa. Así pues, el IoT Gateway solo necesitará una interface de red. Tanto para acceder a Internet como para acceder a los PLC que tengamos en la red.
Suponemos que la empresa tiene una red con acceso a Internet y que nos asigna IP por DHCP.
En el IoT GW instalamos SoftEther para permitir acceso vía VPN a la red como si estubiéramos físicamente en las instalaciones del cliente. De esta forma el portátil del técnico (10.2.0.13) podrá acceder a los equipos de la máquina con un acceso de capa 2.
No podemos esperar que en el router de la empresa nos abran ningún puerto para facilitar esta comunicación. Por este motivo usamos un tercer servidor en Internet al que llamamos SoftEther VPN Server que actuará como relay de la comunicación evitando la necesidad de abrir puertos.
Este proceso hay que repetirlo dos veces. Una para el IoT Gateway y otra para el VPN server que instalaremos en el relay server.
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get autoremove -y
apt-get -y install build-essential wget curl gcc make wget tzdata git libreadline-dev libncurses-dev libssl-dev zlib1g-dev
wget <https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.39-9772-beta/softether-vpnserver-v4.39-9772-beta-2022.04.26-linux-x64-64bit.tar.gz>
tar xzf softether-vpnserver-v4.39-9772-beta-2022.04.26-linux-x64-64bit.tar.gz && rm softether-vpnserver-v4.39-9772-beta-2022.04.26-linux-x64-64bit.tar.gz
cd vpnserver && sudo make
cd ..
sudo mv vpnserver /usr/local && cd /usr/local/vpnserver/
sudo chmod 600 *
sudo chmod 700 vpnserver vpncmd lib chain_certs
sudo cat >> /lib/systemd/system/vpnserver.service << EOF
[Unit]
Description=SoftEther VPN Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
[Install]
WantedBy=multi-user.target
EOF
echo net.ipv4.ip_forward = 1 | ${SUDO} tee -a /etc/sysctl.conf
echo net.ipv6.ip_forward = 1 | ${SUDO} tee -a /etc/sysctl.conf
sysctl -p
systemctl enable vpnserver
systemctl start vpnserver
systemctl stop vpnserver
systemctl restart vpnserver
systemctl status vpnserver