Zdalny dostęp do sterownika, na przykładzie PLC Horner XL4e z routerem Teltonika RUT955 po OpenVPN
Kurs zdalnego dostępu do maszyn i stanowisk produkcyjnych odc.2
Kontakt w sprawie artykułu: Łukasz Żabski - 2021-06-17
Z tego artykułu dowiesz się:
- jak uzyskać zdalny dostęp do sterownika PLC (oraz innych urządzeń),
- jak poprawnie skonfigurować sterownik PLC, aby umożliwić zdalne połączenie,
- jakie są najczęściej popełniane błędy i jak się ich ustrzec.
Kurs zdalnego dostępu do maszyn i stanowisk produkcyjnych dla automatyków od podstaw
Wstęp: Jakie usługi kart SIM oferują operatorzy, czym się one różnią i jakie dają możliwości dla routerów i sieci przemysłowych?W poprzednim odcinku dowiedziałeś/aś się, jak wykonać pierwsze kroki przy uruchamianiu przemysłowego routera GSM. W oparciu o te ustawienia i wiedzę ze wstępu teoretycznego, w drugim odcinku dowiesz się jak uzyskać zdalny dostęp do sterownika PLC.
Zdalne programowanie sterownika PLC to jeden z wielu przykładów zastosowania zdalnego dostępu. Zaprezentowana konfiguracja umożliwi również zdalne połączenie z większością innych urządzeń IP (panel HMI, system SCADA, przemiennik częstotliwości, kamera, maszyna, itp.).
Przedstawiona przykładowa konfiguracja będzie oparta o sterownik PLC Horner serii XL4e oraz router przemysłowy RUT955. Szacowany czas konfiguracji: ~30-60 min
Słownik pojęć
- WebUI (Web User Interface) – przeglądarkowy interfejs użytkownika; podstawowa metoda konfiguracji routera Teltonika RUT955,
- TLS (Transport Layer Security) – protokół kryptograficzny do zapewnienia bezpieczeństwa w sieciach komputerowych,
- PKI (Public Key Infrastructure) – zbiór ról, polityk, procedur, potrzebnych do zarządzania, przechowywania i używania cyfrowych certyfikatów oraz zarządzania szyfrowaniem za pomocą publicznego klucza,
- EasyRSA – narzędzie do zarządzania PKI.
Publiczne IP
Po przeczytaniu wstępu teoretycznego powinieneś/powinnaś wiedzieć, na czym polega publiczny adres IP w kartach SIM. Z pierwszego odcinka dowiedziałeś/aś się, jak uzyskać publiczne IP poprzez SETUP WIZARD.
W tym odcinku wykorzystasz tę wiedzę. Upewnij się, że karta SIM, którą posiadasz ma uruchomioną usługę publicznego IP u operatora GSM oraz łączysz się zgodnie z zaleceniami danej usługi (APN, metoda autoryzacji, login/hasło autoryzacji).
Potwierdź, czy operator uruchomił usługę: wykonaj ping na przydzielony adres IP z komputera z niezależnym (od RUT955) źródłem Internetu. Brak odpowiedzi w większości przypadków będzie oznaczał, że adres IP nie jest publiczny. Dodatkowo po restarcie urządzenia, adres powinien pozostać bez zmian – adres publiczny, statyczny.
Instalacja OpenVPN i generowanie kluczy TLS
Pobierz instalator OpenVPN – kliknij tutaj. Uruchom pobrany plik. Przed instalacją naciśnij przycisk Customize.
W oknie Custom installation znajdź paczkę OpenSSL Utilities -> EasyRSA 3 Certificate Management Scripts. Upewnij się, że paczka zostanie zainstalowana w procesie instalacji OpenVPN.
Przygotowanie EasyRSA
Po instalacji OpenVPN możesz przejść do przygotowania silnika generowania kluczy – EasyRSA.
Przygotowanie silnika i generowanie kluczy odbywa się z poziomu wiersza poleceń Windows. Uruchom wiersz poleceń, wpisując cmd w oknie wyszukiwania Windows (skrót klawiszowy Windows+S). Uruchom aplikację jako administrator.
Pełny przykładowy przebieg procedury generowania certyfikatów i kluczy możesz zobaczyć w wideo poniżej.
Przejdź do folderu, gdzie zainstalowany jest EasyRSA. Wykonaj komendę (jeśli OpenVPN został zainstalowany w innym folderze, dopasuj ścieżkę):
cd „C:\Program Files\OpenVPN\easy-rsa”
Uruchom EasyRSA:
EasyRSA-Start.bat
Przed generowaniem plików za pomocą EasyRSA zainicjalizuj infrastrukturę PKI:
./easyrsa init-pki
Wyczyść pliki, które mogły być wygenerowane w przeszłości:
./easyrsa clean-all
Generowanie kluczy i certyfikatów
Generowanie rozpocznij od tzw. certificate authority (CA) – podstawowy plik certyfikujący, który pozwoli weryfikować pozostałe certyfikaty i klucze:
./easyrsa build-ca nopass
Wygeneruj certyfikat i klucz przypisany do Servera:
./easyrsa build-server-full server nopass
Wygeneruj certyfikaty i klucze przypisane do kolejnych Clientów. W miejsce Client1 wpisz unikatową nazwę Common Name (CN) dla danej sieci OpenVPN. Urządzenia w sieci są rozpoznawane na podstawie CN i przypisanego do niego klucza. Wielkość liter ma znaczenie:
./easyrsa build-client-full Client1 nopass
Na koniec wygeneruj parametry szyfrowania Diffie-Hellman:
./easyrsa gen-dh
Wygenerowane pliki pojawią się w następujących lokalizacjach na komputerze (dla domyślnej ścieżki instalacji OpenVPN):
Konfiguracja routera przemysłowego RUT955 jako Server OpenVPN
Uruchom WebUI urządzenia. Przejdź do zakładki Services > VPN > OpenVPN. Z listy rozwijanej Role wybierz Server. Nadaj nazwę według własnych preferencji. Stwórz nową instancję OpenVPN, klikając przycisk Add.
Konfigurację rozpocznij od wybrania TLS z listy rozwijanej Authentication – wybór innej metody autoryzacji zmieni rozkład okna konfiguracji.
Poniżej znajdziesz listę parametrów Servera wraz z krótkim opisem. W nawiasie, pogrubioną czcionką wypisane są ustawienia dla prezentacyjnego połączenia ze sterownikiem PLC Horner XL4e:
- TUN/TAP (TUN) – połączenie tunelowe (TUN), połączenie mostkowe (TAP)
- Protocol (UDP) – UDP zapewni większą prędkość transmisji, wymaga mniej zasobów, brak potwierdzenia przesłania pakietów. TCP pozwoli na mniejszą prędkość transmisji, wymaga dużej ilości zasobów, ale zapewnia poprawność przesłania każdego pakietu.
Ważne: Nie zaleca się tworzenia tunelu TCP, gdy protokół przesyłany przez tunel również jest protokołem TCP! Może to spowodować wystąpienie tzw. TCP Meltdown (przeczytaj więcej) - Port (1194) – port wykorzystywany do połączenia VPN
- LZO (NONE) – algorytm bezstratnej kompresji danych. Z kompresją danych połączenie VPN spowoduje mniejsze obciążenie sieci. Ze względu na udokumentowane, skuteczne ataki na połączenia z kompresją danych, ta opcja nie jest zalecana! Opcja „NO” i „NONE” nie są jednoznaczne! Wybierz opcję NONE
- Client to client (OFF) – zezwolenie na komunikację między Clientami OpenVPN
- Encryption (AES-256-CBC 256 (default) ) – algorytm szyfrowania danych. Zależnie od wybranego algorytmu i długości klucza możesz manipulować stosunkiem poziomu bezpieczeństwa do prędkości transmisji.
- Authentication (TLS) – metoda autoryzacji.
- Keep alive (10 120) – parametr utrzymywania połączenia. Pierwsza wartość określa interwał wysyłania zapytania „Ping”. Druga wartość określa czas oczekiwania Klienta na odpowiedź. Po przekroczeniu określonego czasu Klient przystąpi do ponownego nawiązania połączenia. Wartości 10 120 są ustawieniem domyślnym i stosunkowo uniwersalnym. Parametr dostosuj do własnych potrzeb.
- Virtual network IP address (10.0.0.0) – IP wirtualnej sieci VPN.
- Virtual network netmask (255.255.255.0) – maska wirtualnej podsieci VPN.
- Push option (route 192.168.1.0 255.255.255.0) – opcje przekazywane każdemu połączonemu klientowi OpenVPN, np. „route 192.168.1.0 255.255.255.0” zezwoli na przekierowanie do sieci lokalnej 192.168.1.0 przez server OpenVPN (tj. zdalny dostęp do sieci przez tunel VPN).
- Allow duplicate certificates (OFF) – dopuszczenie zduplikowanych certyfikatów do sieci
- Pozostałe opcje dotyczą haszowania, szyfrowania, formatowania, itp. – pozostaw je na domyślnych wartościach.
- Prześlij wcześniej wygenerowane pliki zgodnie z regułą:
- Certificate authority: ca.crt
- Server certificate: server.crt
- Server Key: server.key
- Diffie Hellman parameters: dh.perm
- CRL file (optional): brak
Zapisz konfigurację przyciskiem SAVE & APPLY.
Konfiguracja sterownika PLC Horner XL4e
Przejdź do menu systemowego za pomocą przycisku funkcyjnego SYS. Przejdź do zakładki Set Networks > LAN Settings. Ustaw adres IP zgodny z podsiecią i maską routera RUT955. Dla Twojego przykładu będą to:
IP: 192.168.1.10
NetM: 255.255.255.0
GatWy: 192.168.1.1 (adres IP RUT955)
Wyjdź z ustawień przyciskiem ESC.
Uruchom CsCape (uruchom odpowiedni projekt, jeśli na sterowniku jest już wgrany program). Wybierz metodę połączenia LAN, wpisz adres IP sterownika i zatwierdź przyciskiem Finish.
Przejdź do zakładki Controller > Hardware Configuration. Zidentyfikuj model sterownika przyciskiem Auto Config. Przejdź do okna konfiguracji Config przyciskiem w wierszu LAN1.
Wpisz adres IP, maskę podsieci i Gateway zgodnie z topologią sieci. Zaznacz funkcję Modbus Slave. Zapisz zmiany przyciskiem OK. Wgraj program do sterownika za pomocą funkcji Program > Download.
Konfiguracja komputera Windows jako Client OpenVPN
Konfigurację OpenVPN na komputerze należy zacząć od przygotowania pliku z parametrami ustawień. Otwórz notatnik i wklej poniższy tekst:
client
dev tun
proto udp
remote 5.185.26.248 1194
keepalive 10 30
persist-key
persist-tun
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\issued\\Client1.crt"
key "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\private\\Client1.key"
cipher AES-256-CBC
data-ciphers AES-256-CBC
verb 7
Parametry połączenia muszą pokrywać się z ustawieniami Servera OpenVPN – lista wygląda analogicznie do ustawień w RUT955. W miejsce x.x.x.x wpisz swój publiczny adres IP przydzielony routerowi.
Zapisz plik w łatwej do znalezienie lokalizacji. Zmień rozszerzenie pliku na .ovpn.
Uruchom program OpenVPN GUI.
W prawym dolnym rogu paska zadań – w pasku narzędzi, pojawi się ikona OpenVPN. Naciskając prawym przyciskiem myszy na ikonę OpenVPN przejdź do ustawień i wybierz Import > Importuj plik…
Wybierz plik .ovpn, który wcześniej został zapisany i importuj go przyciskiem Otwórz. Poprawne wgranie pliku spowoduje wystąpienie poniższego komunikatu.
Zdalne połączenie ze sterownikiem PLC i sprawdzenie połączenia
Konfiguracja wszystkich elementów jest gotowa. Możesz przejść do przetestowania swojej aplikacji zdalnego dostępu ?. Naciskając prawym przyciskiem myszy na ikonę OpenVPN, wybierz opcję Połącz.
Pojawi się okno konsoli OpenVPN, w którym zobaczysz kolejne wykonywane polecenia i komendy (jeśli napotkasz na problemy to również pojawią się dodatkowe informacje w oknie konsoli). Po 5-10 sekundach, połączenie z Serverem zostanie nawiązane i otrzymasz komunikat o przydzielonym adresie IP w sieci VPN.
W pierwszej kolejności wykonaj najłatwiejszy test za pomocą komendy Ping w Wierszu polecenia. Odpowiedzi powinny przychodzić z opóźnieniem 50-150 ms.
Możesz uruchomić CsCape i sprawdzić, czy połączenie ze sterownikiem zostało poprawnie nawiązane (analogicznie driver komunikacyjny, system SCADA, narzędzie konfiguracji paneli HMI, itp.)
5 najczęściej popełnianych błędów – i jak się ich ustrzec?
1. Brak publicznego IP
Publiczne IP to warunek konieczny dla zestawienia połączenia w tej konfiguracji. Upewnij się, że odpowiednia usługa jest uruchomiona u operatora (jeśli adres nie jest osiągalny za pomocą komendy Ping, to skontaktuj się ze swoim operatorem komórkowym).
2. Niepoprawna adresacja w sieci IP
Upewnij się, że urządzenia są w odpowiednich podsieciach, zgodnie z adresacją routera i maską podsieci. Pamiętaj, aby w sterowniku PLC (lub innym urządzeniu, do którego chcesz mieć zdalny dostęp) Default Gateway był ustawiony na adres IP routera.
3. Niepoprawnie wczytane pliki do Servera OpenVPN
Każdy z wygenerowanych plików certyfikatów/kluczy ma swoje dedykowane przeznaczenie, np. użycie certyfikatu Clienta w miejscu Servera będzie skutkowało brakiem możliwości połączenia. Wgranie klucza w miejscu certyfikatu również uniemożliwi połączenie.
4. Edycja konfiguracji Clienta OpenVPN w nieodpowiednim miejscu
Podczas importowania pliku w OpenVPN GUI tworzona jest kopia, na której pracuje aplikacja. Aby zmienić jakiekolwiek z ustawień, nie rób tego w pliku źródłowym, tylko naciskając prawym przyciskiem myszy na aplikację OpenVPN i wybierając Edytuj konfigurację.
5. Dobra praktyka – diagnostyka
Warto kontrolować aktualny stan Servera OpenVPN w zakładce Status > Network > OpenVPN.
Status Clienta OpnVPN możesz zobaczyć naciskając prawym przyciskiem myszy na OpenVPN GUI i wybierając Pokaż status. Historyczne dane możesz zobaczyć wybierając Pokaż dziennik.
W następnym odcinku dowiesz się, jak wykonać analogiczny zdalny dostęp z wykorzystaniem serwisu ZeroTier – bez konieczności publicznego adresu IP.
[…] Zdalny dostęp w celu programowania sterownika, na przykładzie Teltonika RUT955 + Horner XL4e + Ope… […]
Przy próbie połączenia w dzienniku pojawia się komunikat:
Options warning: Bad backslash (’\’) usage in xxxxxxxxxxxxxxxxx.ovpn:5: remember that backslashes are treated as shell-escapes and if you need to pass backslash characters as part of a Windows filename, you should use double backslashes such as „c:\\openvpn\\static.key”
Proszę o pomoc
Z poważaniem
Use –help for more information.
Dzień dobry,
Serdecznie dziękujemy za komentarz i zwrócenie uwagi. Wygląda na to, że w instrukcji wkradł się błąd podczas jednej z aktualizacji. W pliku konfiguracyjnym .ovpn na komputerze należy używać podwójnego backslash „\\” przy wskazywaniu ścieżki pliku (czyli przykładowo poprawnie powinno być: ca „C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt” , itd.). Jak najszybciej postaramy się poprawić instrukcje w artykule.
Pozdrawiam
Dzień dobry,
w jaki sposób można dodać kolejnego klienta OpenVPN na innym komputerze.
Dzień dobry,
W trakcie generowania kluczy należy wygenerować dodatkowy klucz dla klienta (np. odpowiednio o nazwie „Client2”).
Następnie na drugim komputerze skonfigurować analogicznie aplikację OpenVPN (na komputerze muszą być wgrane pliki ca, Client2.cert, Client2.key.).