Strona główna ASTOR

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?

  • 1. Podstawowa konfiguracja routera dla sieci przemysłowej – dostęp do Internetu, publiczny IP, LAN, WiFi, resetowanie routera, DDNS| Kurs zdalnego dostępu do maszyn i stanowisk produkcyjnych odc.1
  • 2. Zdalny dostęp w celu programowania sterownika, na przykładzie Teltonika RUT955 + Horner XL4e + OpenVPN | Kurs zdalnego dostępu do maszyn i stanowisk produkcyjnych odc.2
  • 3. Zdalny dostęp w celu programowania sterownika bez publicznego IP, na przykładzie Teltonika RUT955 + Horner XL4e + ZeroTier | Kurs zdalnego dostępu do maszyn i stanowisk produkcyjnych odc.3
  • 4. Tworzenie przemysłowej sieci OpenVPN stworzonej z trzech zdalnych punktów. Jak przypisać statyczny adres IP w sieci OpenVPN | Kurs zdalnego dostępu do maszyn i stanowisk produkcyjnych odc.4
  • 5. Konwersja Modbus RTU i Modbus TCP w routerach przemysłowych | Kurs zdalnego dostępu do maszyn i stanowisk produkcyjnych odc.5
  • 6. Alarmowanie SMS w routerach przemysłowych| Kurs zdalnego dostępu do maszyn i stanowisk produkcyjnych odc.6
  • 7. Konwersja Modbus TCP/MQTT w routerach przemysłowych | Kurs zdalnego dostępu do maszyn i stanowisk produkcyjnych odc.7
  • 8. „Troubleshooting” – sposoby szukania błędów w konfiguracji routerów przemysłowych | Kurs zdalnego dostępu do maszyn i stanowisk produkcyjnych odc.8
  • 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.).

    Zdalny dostęp do sterownika PLC, Źródło: Mission Critical by ASTOR

    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.

    Publiczne IP w przemysłowym routerze Teltonika RUT955, Źródło: Mission Critical by ASTOR

    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.

    Instalacja OpenVPN i silnika EasyRSA, Źródło: Mission Critical by ASTOR

    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.

    Uruchomienie Wiersza poleceń z prawami administratora, Źródło: Mission Critical by ASTOR

    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):

    Ścieżki wygenerowanych kluczy i certyfikatów, Źródło: Mission Critical by ASTOR
    Przykład generowania kluczy i certyfikatów TLS, Źródło: Mission Critical by ASTOR

    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.

    Tworzenie nowej instancji Servera OpenVPN, Źródło: Mission Critical by ASTOR

    Konfigurację rozpocznij od wybrania TLS z listy rozwijanej Authentication – wybór innej metody autoryzacji zmieni rozkład okna konfiguracji.

    Zmiana metody autoryzacji, Źródło: Mission Critical by ASTOR

    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 Servera OpenVPN, Źródło: Mission Critical by ASTOR

    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.

    Połączenie ze sterownikiem PLC, Źródło: Mission Critical by ASTOR

    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 sterownika PLC, Źródło: Mission Critical by ASTOR

    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.

    Zapis konfiguracji Client OpenVPN, Źródło: Mission Critical by ASTOR

    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…

    Wgrywanie konfiguracji Client OpenVPN, Źródło: Mission Critical by ASTOR

    Wybierz plik .ovpn, który wcześniej został zapisany i importuj go przyciskiem Otwórz. Poprawne wgranie pliku spowoduje wystąpienie poniższego komunikatu.

    Komunikat poprawnego importowania pliku konfiguracyjnego, Źródło: Mission Critical by ASTOR

    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.

    Procedura połączenia z Serverem OpenVPN, Źródło: Mission Critical by ASTOR

    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.

    Komunikat poprawności połączenia VPN, Źródło: Mission Critical by ASTOR

    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.)

    Status połączenia ze sterownikiem PLC w CsCape, Źródło: Mission Critical by ASTOR

    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.

    Czy ten artykuł był dla Ciebie przydatny?

    Średnia ocena artykułu: 5 / 5. Ilość ocen: 10

    Ten artykuł nie był jeszcze oceniony.

    Zadaj pytanie

    Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

    4 odpowiedzi na “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”

    1. 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 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.).

    Dodaj komentarz

    Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *