Bazując na standardzie Ethernet. Praktyczne aspekty projektowania sieci przemysłowych
Marcin Zawisza drukuj
Wykorzystanie niedeterministycznej sieci, jaką jest Ethernet, do przesyłania danych dla układów bezpieczeństwa czy też przeznaczonych do precyzyjnego sterowania ruchem jeszcze kilka lat temu było nie do pomyślenia. Tymczasem malejące koszty rozwiązań technicznych usprawniających działanie tej sieci i zwiększających jej przepustowość sprawiły, że Ethernet wkroczył do przemysłu, wypierając tradycyjne sieci polowe.
Sieci komunikacyjne są dzisiaj standardowym elementem, nawet w przypadku prostych maszyn i instalacji przemysłowych. Ich historia sięga lat 80., kiedy to producenci urządzeń automatyki szukali rozwiązań upraszczających okablowanie i umożliwiających przesyłanie coraz większej ilości sygnałów i danych, tworząc to, co przyjęło się nazywać sieciami polowymi (ang. fieldbus). Rosnąca popularność Ethernetu, jego prostota, coraz niższe koszty wdrażania a także łatwa integracja z systemami nadrzędnymi (dzięki wspólnemu medium i protokołom) sprawiły, że coraz częściej staje się on podstawą komunikacji również w systemach przemysłowych. Wymagają one niezawodnej komunikacji w czasie rzeczywistym, co pociąga za sobą konieczność zwrócenia szczególnej uwagi na proces projektowania i doboru elementów infrastruktury.
Od czujników do raportów, czyli sieci przemysłowe kiedyś
Zanim pojawił się Przemysłowy Ethernet (ang. Industrial Ethernet) w obrębie zakładu produkcyjnego funkcjonowało wiele różnych rodzajów sieci, tworząc zhierarchizowaną strukturę. Była ona ściśle powiązana z samym procesem produkcji, dzielącym się na cztery podstawowe poziomy (fot. 1). Dla każdego z nich powstało wiele różnych standardów komunikacji, tworzonych przez producentów urządzeń automatyki. Opracowywanie tych standardów miało na celu sprostanie zróżnicowanym wymaganiom, dotyczącym ilości danych, prędkości ich przesyłania, ich krytyczności czy też liczbie uczestników komunikacji na poszczególnych poziomach.
Najniższy poziom w tak ujętej strukturze procesu produkcji to poziom czujników i urządzeń, który obejmuje – jak sama nazwa wskazuje – czujniki i urządzenia wykonawcze, takie jak pompy, silniki czy np. roboty przemysłowe. Cechą charakterystyczną tego poziomu jest duża liczba urządzeń przy stosunkowo niewielkiej ilości przesyłanych między nimi danych. Typowym przykładem sieci stosowanej na tym poziomie jest AS-i (ang. Actuator Sensor Interface). Została ona zaprojektowana do pobierania danych oraz sterowania dużą liczbą urządzeń binarnych i jest silnie zhierarchizowana, z dokładnie jednym urządzeniem zarządzającym i wieloma podległymi.
Poziom sterowania grupuje z kolei urządzenia kontrolne, takie jak sterowniki PLC czy PAC. Charakteryzuje się on mniejszą liczbą urządzeń, za to większą ilością wymienianych danych. Do tego typu zastosowań zostały stworzone sieci umożliwiające cykliczną wymianę danych, opartą na wysoce deterministycznym protokole (np. ControlNet).
Cechą wspólną sieci dwóch niższych poziomów jest wymagana wysoka niezawodność transmisji ze względu na krytyczny charakter przesyłanych danych. Odmiennie wygląda sytuacja na poziomach monitorowania MES (ang. Manufacturing Execution System) i zarządzania (ang. Enterprise Resource Planning). Tutaj mamy do czynienia z dużo większą ilością danych przesyłanych do niewielkiej liczby urządzeń. Informacje służące do monitorowania produkcji nie są tak krytyczne pod względem czasu transmisji, jak np. stan przycisku awaryjnego zatrzymania. Wszystko to sprawia, że na tych poziomach powszechnie stosowano i stosuje się Ethernet, który w wersji „cywilnej” nie daje żadnej gwarancji dostarczenia informacji, ale w zamian oferuje wysoką przepustowość i elastyczną strukturę.
Może się wydawać, że tak przyjęty podział (oparty na liczbie urządzeń, ilości danych oraz ich krytyczności) wydaje się optymalny, jednak trudności związane z utrzymywaniem wielu różnych rodzajów sieci i problemy z ich integracją, a także zalety sieci opartych na Ethernecie sprawiły, że został on zachwiany.
Dlaczego właśnie Ethernet?
Mówiąc o Ethernecie podkreśla się przede wszystkich jego zalety, jednak aby dobrze zaprojektować tego typu sieć trzeba poznać jej specyfikę i ograniczenia. O ile bowiem w przypadku klasycznych sieci polowych można precyzyjnie określić reguły dotyczące ich budowy i konfiguracji, o tyle w przypadku Ethernetu wszystko zależy od oczekiwań i trudno o prosty przepis. Jego charakterystyczne cechy widać najlepiej przy porównaniu z klasycznymi sieciami polowymi (tabela).
Te ostatnie tworzone są w celu połączenia kilku, a co najwyżej kilkudziesięciu urządzeń, o czym w wielu przypadkach najlepiej świadczy przewidziany w ich specyfikacjach zakres adresacji. Większe liczby urządzeń wymagają z reguły użycia kilku odrębnych interfejsów, co jednak separuje urządzenia i do wzajemnej komunikacji wymagane jest stosowanie bramy (tę funkcję może pełnić np. sterownik PLC). W przypadku Ethernetu trudno mówić o ograniczeniach liczby urządzeń, wszystko jest kwestią zastosowanego okablowania, topologii i urządzeń zarządzających. I tak topologia gwiazdy, w której wszystkie urządzenia połączone są z punktem centralnym sprawia, że znikają problemy z kolizjami przy dostępie do medium, co umożliwia budowanie sieci z tysiącami urządzeń. Z kolei często stosowane adresy z puli prywatnej (np. 192.168.0.0 z 16-bitową maską) umożliwiają obsługę ponad 65 000 urządzeń. Trudno sobie wyobrazić, by takie liczby stanowiły ograniczenie w typowych aplikacjach.
Liczebność urządzeń to jedno. Kolejnym ograniczeniem sieci polowych są maksymalne odległości, przy czym należy odróżnić ograniczenia specyfikacji od ograniczeń praktycznych (trudno sobie np. wyobrazić kilkunastokilometrową sieć Profibus). Elastyczność sieci Ethernet sprawia, że jego rozbudowa jest prosta i umożliwia łatwe łączenie odległych punktów (np. bezprzewodowo), a także odległych sieci za pomocą Internetu, co gwarantuje nieograniczone odległości między węzłami. Również prędkość przesyłanych danych stanowi o przewadze Ethernetu, co wynika z faktu, że technologie służące do jego budowy ciągle rozwijają się – w przeciwieństwie do tych, na bazie których powstała większość sieci polowych. W konsekwencji prędkość transmisji w sieci Ethernet nieustannie wzrasta od wczesnych wersji pracujących z prędkością 1 Mb/s przez standard Ethernet 10 Mb/s (bazujący na kablu koncentrycznym) aż po 100 Mb/s (popularny współcześnie Fast Ethernet) a istnieją już specyfikacje opisujące obsługę prędkości nawet do 100 Gb/s.
Wszystkie zalety Ethernetu okupione są mnogością wykorzystywanych protokołów i koniecznością stosowania aktywnej infrastruktury. O ile bowiem typowe sieci polowe bazują na jednym protokole, o tyle w przypadku Ethernetu mamy do czynienia ze stosem protokołów, w którym te wyżej opierają swoje działanie na tych niższych. Może to sprawiać trudność w diagnostyce i po części wymusza stosowanie urządzeń sterujących ruchem w sieci, czyli infrastruktury aktywnej w odróżnieniu od typowych sieci polowych, których infrastruktura ma charakter pasywny (składa się głównie z przewodów). Wadą aktywnej infrastruktury jest jej koszt, a często także konieczność konfiguracji.
Patrząc na wszystkie zalety sieci Ethernet, można sobie zadać pytanie, jak to możliwe, że stała się popularna w przemyśle tak późno (standard Ethernet rozwija się wszak już od lat 70.)? Kluczem do odpowiedzi jest determinizm (a raczej jego brak). Standard Ethernet od początku swojego istnienia bazował na niedeterministycznych mechanizmach zarządzania dostępem do medium. W przypadku sieci opartych na kablu koncentrycznym właściwie trudno nawet mówić o zarządzaniu, była to raczej rywalizacja o dostęp, której reguły wyznaczał mechanizm CSMA/CD (ang. Carrier Sense Multiple Access/with Collision Detection). Jego cechą charakterystyczną były nieprzewidywalne opóźnienia powodowane elementem losowym zawartym w algorytmach dostępu do medium. Segmenty sieci, w których stosowano ten mechanizm nazywane były domenami kolizyjnymi. Takie podejście było konieczne – zapewniało elastyczność, ale wykluczało zastosowanie do zadań krytycznych czasowo (a taki charakter ma przecież większość w przemyśle).
Co się zatem zmieniło? Tutaj kluczem jest wspomniana już infrastruktura aktywna. Umożliwiła ona ograniczenie problemu dostępu do medium i usprawniła zarządzanie ruchem sieciowym. Najprostszym jej elementem był koncentrator sieciowy (ang. hub), który umożliwiał tworzenie topologii typu gwiazda w miejsce wspólnej magistrali. Pracował on w warstwie pierwszej ISO/OSI (fot. 2) i co prawda nie eliminował kolizji (ponieważ sygnał był przesyłany z każdego z portów na pozostałe), ale zwiększał odporność sieci na uszkodzenie przewodu i pełnił rolę wzmacniacza. Sama modyfikacja topologii to jednak za mało. Prawdziwą rewolucję przyniosły dopiero przełączniki sieciowe (ang. switch). Działając w warstwie drugiej ISO/OSI (fot. 2), wraz z kablem typu skrętka i zastosowaniem pełnej transmisji dupleksowej, wyeliminował praktycznie problem domen kolizyjnych. Nic więc dziwnego, że wraz ze spadkiem cen praktycznie wyeliminowały one koncentratory sieciowe. Kolejnym krokiem była implementacja w bardziej zaawansowanych przełącznikach wybranych funkcji trasowników (ang. router), pracujących w warstwie trzeciej, czego rezultatem jest urządzenie zwane przełącznikiem warstwy trzeciej (ang. switch layer 3, w skrócie switch L3). Łączy ono funkcje trasowania z szybkim, realizowanym sprzętowo przełączaniem, integrując segmenty sieci w sposób wydajniejszy niż zwykły przełącznik i wprowadzając jednocześnie dużo mniejsze opóźnienia niż router.
Zaawansowane przełączniki sieciowe to nie tylko trasowanie. Udostępniają one również szereg innych mechanizmów służących wydajniejszemu organizowaniu ruchu sieciowego. Jednym z ciekawszych są wirtualne sieci lokalne VLAN (ang. Virtual Local Area Network), które pozwalają wyodrębnić w ramach jednej sieci fizycznej wiele sieci logicznych (w najprostszym przypadku są to urządzenia podłączone do jednego przełącznika). Dysponując tylko jednym przełącznikiem, można utworzyć kilka sieci i skonfigurować routing między nimi z wykorzystaniem mechanizmów filtracji, np. listy ACL (ang. Access Control List) dostępne w urządzeniach firmy CISCO.
Dziel i rządź, czyli budowa sieci lokalnej
Zobaczmy zatem, jak można wykorzystać w praktyce opisane elementy infrastruktury i udostępniane przez nie funkcje. Rozważmy w tym celu niewielką sieć przykładową (fot. 3). Jest to uproszczenie sytuacji występującej m.in. podczas integracji wielu systemów (jednego lub wielu producentów) w jednej linii produkcyjnej lub instalacji procesowej. W naszym przypadku mamy do czynienia z dwoma systemami, nazwanymi tutaj grupami A i B, zawierającymi po trzy urządzenia komunikujące się za pomocą prostego, niezarządzalnego przełącznika sieciowego. Każda grupa, z punktu widzenia komunikacji, stanowi zamkniętą całość, ale z punktu widzenia sterowania i diagnostyki dobrze byłoby mieć dostęp do obydwu. Nie można wykluczyć sytuacji, kiedy potrzebna będzie wymiana pewnych danych między grupami. Przykładowo jeśli grupa A i grupa B stanowią część jednej linii produkcyjnej, to konieczna może być wymiana informacji o statusie, prędkości itp. Z drugiej jednak strony nieograniczona wymiana danych między wszystkimi urządzeniami z obydwu grup będzie niepotrzebnie obciążać sieć, choćby zbędną transmisją typu rozgłoszeniowego (ang. broadcasting).
Podsumowując, należałoby połączyć obydwie grupy tak, aby mieć do nich dostęp i umożliwić wybranym urządzeniom z obydwu grup ewentualną komunikację, przy jednoczesnej eliminacji zbędnego ruchu sieciowego. Ten ostatni wymóg eliminuje połączenie z użyciem „zwykłego” switcha w ramach jednej puli adresowej. Optymalnym rozwiązaniem wydaje się utworzenie osobnej podsieci dla każdej grupy i połączenie ich za pomocą urządzenia pracującego w warstwie trzeciej. Poza dwoma podsieciami (dla grup A i B) warto na tym etapie uwzględnić także trzecią – dedykowaną do sterowania i monitoringu całości z poziomu systemu nadrzędnego.
Po ustaleniu sposobu podziału urządzeń na podsieci należy przyporządkować do nich pule adresowe. Muszą one gwarantować wystarczającą liczbę adresów i nie kolidować z pulą adresową sieci zakładowej. I tak, jeśli ta ostatnia wykorzystuje pulę prywatną 10.0.0.0/8 (co odpowiada adresom postaci 10.xxx.xxx.xxx), można dla podsieci z przykładu przyjąć adresy z puli 192.168.0.0/16. W naszym przypadku wystarczy po 254 adresy w każdej z podsieci, można więc przyjąć, że podsieć systemu nadrzędnego będzie wykorzystywała pulę 192.168.1.0/24, grupa A – pulę 192.168.2.0/24, a grupa B – pulę 192.168.3.0/24.
Kolejnym krokiem jest spięcie wszystkich wydzielonych podsieci. Idealnym do tego celu urządzeniem, szybkim i z dużymi możliwościami konfiguracji, jest przełącznik warstwy trzeciej. Będzie on punktem centralnym, łączącym wszystkie trzy podsieci. W celu separacji podsieci można zastosować wspomniane wcześniej sieci wirtualne VLAN. W naszym przypadku zakładamy, że urządzenia w ramach każdej z grup są połączone za pomocą klasycznego switcha (są to niezależne systemy), ale zamiast niego można wykorzystać bezpośrednio porty switcha L3, przyporządkowując każdej grupie pulę portów należących do jednej z sieci VLAN. Podsumowując, w naszym przypadku będziemy potrzebować trzech sieci VLAN, a każda z nich wymaga zastosowania co najmniej jednego portu. Przyjmijmy, że tworzymy sieć VLAN 1 dla podsieci systemu nadrzędnego, VLAN 2 dla grupy A oraz VLAN 3 dla grupy B.
Następnym zadaniem jest ograniczenie komunikacji między sieciami VLAN. Dostęp z sieci VLAN 1 do dwóch pozostałych powinien być nieograniczony, natomiast z VLAN 2 i VLAN 3 – jedynie do VLAN 1. W ten sposób zapewniona będzie dwustronna komunikacja między grupą A (VLAN 2) i urządzeniami nadrzędnymi (VLAN 1) oraz między grupą B (VLAN 3) i urządzeniami nadrzędnymi (VLAN 1). Nie będzie natomiast komunikacji między urządzeniami z grup A i B (VLAN 2 i VLAN 3). Realizacja tak opisanej struktury z użyciem przełącznika warstwy trzeciej została przedstawiona poniżej.
Konfiguracja switcha l3
Konfiguracja switcha jest przedstawiona na przykładzie urządzeń firmy CISCO (np. przełączników serii IE2000). Odbywa się ona za pomocą linii poleceń CISCO CLI (ang. Command Line Interface). Interfejs ten operuje w kilku trybach. Po uruchomieniu znajduje się w trybie użytkownika (ang. User Exec Mode). Aby rozpocząć konfigurację, należy przejść każdorazowo do trybu uprzywilejowanego (ang. Privileged Exec Mode) poleceniem:
Switch>enable.
Z trybu uprzywilejowanego można rozpocząć konfigurację poleceniem:
Switch#configure terminal
i zakończyć ją poleceniem:
Switch(config)#end.
Jak widać, aktywny tryb można rozpoznać po znaku gotowości. W trybie użytkownika jest to znak „>”, a w trybie uprzywilejowanym znak „#”. Poszczególne tryby konfiguracji (a jest ich wiele) oznaczane są opisem w nawiasie, np. „config” oznacza konfigurację globalną, a „config-if” konfigurację konkretnego interfejsu. Po zakończeniu pracy można zachować zmiany, kopiując konfigurację aktywną do konfiguracji startowej poleceniem:
Switch#copy running-config startup-config
Przedstawiona dalej konfiguracja nie jest optymalna, z punktu widzenia liczby poleceń, ale została podzielona na bloki dla lepszego odzwierciedlenia poszczególnych etapów. Szczegółowy opis zastosowanych poleceń można znaleźć w dokumentacji urządzenia.
1. Wybór szablonu SDM
W urządzeniach CISCO do optymalizacji parametrów pracy stosowane są tzw. szablony SDM (ang. Switch Database Management). Aby możliwy był routing, należy upewnić się, że jest aktywny odpowiedni szablon i w razie potrzeby go aktywować. Można to wykonać za pomocą poleceń:
Switch>enable
Switch#configure terminal
Switch(config)#sdm prefer lanbase-routing
Switch(config)#end
Switch#reload
2. Utworzenie sieci VLAN
Domyślnie wszystkie porty należą do sieci VLAN 1. Aby to zmienić, należy wpierw utworzyć dwie pozostałe sieci VLAN. Na tym etapie można również nadać im nazwy, co umożliwi skojarzenie ich z grupami z naszego przykładu:
Switch>enable
Switch#configure terminal
Switch(config)#vlan 2
Switch(config-vlan)#name grupa_A
Switch(config-vlan)#vlan 3
Switch(config-vlan)#name grupa_B
Switch(config-vlan)#end
3. Dodanie portów do sieci vlan
Mając skonfigurowane sieci VLAN, można dodać do nich porty, najpierw konfigurując tryb ich pracy. W naszym przypadku dla wszystkich używanych portów jest to tryb „access”. I tak, aby przyporządkować do sieci VLAN 1 port Fa1/1, do VLAN 2 port Fa1/2, a do VLAN 3 port Fa1/3 należy wykonać sekwencję poleceń:
Switch>enable
Switch#configure terminal
Switch(config)#interface Fa1/2
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 2
Switch(config-if)#interface Fa1/3
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 3
Switch(config-if)#end
4. Konfiguracja routingu
Aby umożliwić routing między podsieciami, należy go włączyć i przyporządkować każdej z nich adres bramy i maskę. Zgodnie z przykładem dla VLAN 1 będzie to adres: 192.168.1.1, dla VLAN 2 adres: 192.168.2.1, a dla VLAN 3 adres: 192.168.3.1. 24-bitowe maski mają zaś postać 255.255.255.0 dla każdej z podsieci. Konfiguracja taka wykonywana jest poleceniami:
Switch>enable
Switch#configure terminal
Switch(config)#ip routing
Switch(config)#vlan 1
Switch(config-vlan)#ip address 192.168.1.1 255.255.255.0
Switch(config-vlan)#vlan 2
Switch(config-vlan)#ip address 192.168.2.1 255.255.255.0
Switch(config-vlan)#vlan 3
Switch(config-vlan)#ip address 192.168.3.1 255.255.255.0
Switch(config-vlan)#end
5. Filtracja ruchu z użyciem list ACL
Do kontroli i ograniczenia ruchu można wykorzystać wbudowany w urządzenia CISCO mechanizm zwany listami ACL (ang. Access Control List). Aby utworzyć listę, należy wykonać polecenia:
Switch>enable
Switch#configure terminal
Switch(config)#access-list 100 permit ip 192.168.0.0 0.0.255.255 192.168.1.0 0.0.0.255
Aby uruchomić filtrację pakietów wejściowych do sieci VLAN 2 i VLAN 3, należy wykonać polecenia:
Switch(config)#vlan 2
Switch(config-vlan)#ip access-group 100 in
Switch(config-vlan)#vlan 3
Switch(config-vlan)#ip access-group 100 in
Switch(config-vlan)#end
Izolacja czy integracja, czyli z „pola” w świat
Jak wspomniano na początku, w klasycznym ujęciu procesu produkcji (fot. 1) poszczególnym poziomom przedsiębiorstwa odpowiadają dedykowane im sieci przemysłowe. Czujniki i urządzenia wykonawcze mogą być połączone ze sterownikiem PLC (np. za pomocą sieci AS-i), a sterowniki, napędy i moduły rozproszone np. za pomocą sieci Profibus. Z kolei inna, niezależna sieć odpowiedzialna jest za monitoring i zarządzanie. Dostęp do niższych poziomów (i odpowiadających im sieci) z poziomu zakładowej sieci Ethernet jest bardzo trudny lub wręcz niemożliwy.
Odmiennie wygląda to w przypadku systemów sterowania komunikujących się za pomocą sieci Ethernet. Od strony technicznej integracja z siecią zakładową jest wyjątkowo prosta, wystarczy podłączyć kolejny przewód do switcha lub routera, pod warunkiem, że sieć sterownicza została poprawnie zaprojektowana i wykonana. Mowa tu o zastosowaniu odpowiedniej topologii, adresacji i urządzeniach zarządzających ruchem. Kolejnym naturalnym krokiem po integracji z siecią zakładową jest umożliwienie dostępu zdalnego z wykorzystaniem Internetu. Zastosowanie w tym celu adresów z puli publicznej najczęściej nie jest możliwe (zbyt kosztowne i niebezpieczne). Dużo lepszym rozwiązaniem jest wykorzystanie kolejnego ciekawego mechanizmu udostępnianego przez współczesne sieci komputerowe – tunelowania.
Tunel sieciowy, tak jak tradycyjny, pozwala na połączenie dwóch punktów z ominięciem przeszkód, które bez niego to połączenie utrudniały lub nawet uniemożliwiały. Te sieciowe przeszkody to m.in. zapory ogniowe (ang. firewall), różne protokoły sieciowe oraz sposoby adresacji. Użytkownicy tuneli sieciowych, podobnie jak tych tradycyjnych, zwykle nie mają nawet świadomości o tych przeszkodach, gdyż odpowiednie mechanizmy ukrywają przed nimi szczegóły techniczne, dając wrażenie bezpośredniego połączenia między dwoma końcami tunelu. Specyficznym rodzajem tunelu jest wirtualna sieć prywatna VPN (ang. Virtual Private Network). Unikalność tego rozwiązania polega na tym, że umożliwia przesyłanie pakietów warstwy sieciowej (trzeciej warstwy modelu ISO/OSI) jako danych w pakietach tej samej warstwy (można to rozumieć jako zagnieżdżanie pakietów IP). Takie zagnieżdżenie umożliwia adresację urządzeń w ramach sieci wirtualnej w sposób niezależny od adresacji i topologii sieci wykorzystanej do tunelowania. Innym wariantem połączenia VPN jest przesyłanie za pomocą pakietów warstwy sieciowej ramek warstwy łącza danych (drugiej warstwy modelu OSI). To z kolei pozwala przesłać za pomocą VPN cały ruch sieciowy, co ma wady (znaczne obciążenie łącza), ale i zalety (możliwość wykorzystania protokołów warstwy drugiej, np. DHCP). Dodatkową cechą charakterystyczną dla VPN jako sieci wirtualnej jest zapewnienie bezpieczeństwa i spójności danych. Służą temu różnorodne mechanizmy uwierzytelniania, szyfrowania oraz zapewnienia integralności danych.
Powstało bardzo dużo implementacji VPN, różniących się stosowanym protokołem, sposobem zapewnienia bezpieczeństwa oraz stosowaną warstwą modelu OSI. Jednym z najstarszych jest PPTP (ang. Point to Point Tunneling Protocol), opracowany przez firmę Microsoft i zaimplementowany domyślnie we wszystkich jej systemach operacyjnych, począwszy od Windows 98. Jest to rozszerzenie protokołu PPP (ang. Point to Point Protocol) działającego w warstwie łącza danych i służącego do bezpośredniej komunikacji dwóch węzłów sieci. Pakiety PPP są przenoszone przy użyciu protokołu tunelowania GRE (ang. Generic Routing Encapsulation) opracowanego przez firmę CISCO. Utrzymanie i kontrolowanie tunelu przez aplikacje klienckie odbywa się drugim kanałem, przy wykorzystaniu protokołu TCP (port 1723). Uwierzytelnianie odbywa się za pomocą jednego z protokołów opartych na PPP, takich jak: EAP (ang. Extensible Authentication Protocol), MSCHAP (ang. Microsoft Challenge Handshake Authentication Protocol), CHAP (ang. Challenge Handshake Authentication Protocol), SPAP (ang. Shiva Password Authentication Protocol) czy PAP (ang. Password Authentication Protocol). Kolejną implementacją jest L2TP (ang. Layer 2 Tunneling Protocol) stanowiący rozwinięcie protokołów L2F (ang. Layer 2 Forwarding) firmy CISCO oraz PPTP firmy Microsoft. Uwierzytelnianie odbywa się tutaj za pomocą protokołu Ipsec (ang. Internet Protocol Security). Najnowszym rozwiązaniem firmy Microsoft, zaprojektowanym dla systemu Windows Vista, w którym bezpieczeństwo zostało zapewnione za pomocą protokołu SSL (ang. Secure Sockets Layer) w warstwie transportowej modelu OSI jest SSTP (ang. Secure Socket Tunneling Protocol). Umożliwia on przekazywanie ruchu przez zapory, które blokowały zarówno PPTP, jak i L2TP (SSTP używa HTTPS do utworzenia połączenia).
Wszystkie te implementacje obarczone są pewnymi wadami. Najsłabiej wypada PPTP, głównie za sprawą niskiego poziomu bezpieczeństwa. Dużo bezpieczniejsze rozwiązanie to L2TP, ale ono z kolei może powodować problemy przy pokonywaniu zapór sieciowych z ustawionymi restrykcyjnymi regułami. SSTP wprawdzie eliminuje wady poprzedników, ale to „własnościowe” rozwiązanie firmy Microsoft i jako takie ma słabe wsparcie dla systemów innych niż Windows. Większości tych problemów nie ma natomiast OpenVPN – pakiet oprogramowania, które implementuje VPN, używając biblioteki OpenSSL do zapewnienia bezpieczeństwa. Został on stworzony w 2001 r. przez James Yonana i jest rozwijany jako otwarte oprogramowanie na licencji GNU GPL.
Aby zilustrować zastosowanie tunelowania w praktyce, rozbudujmy nasz przykład, wykorzystując OpenVPN do komunikacji z grupami A i B z dowolnego miejsca na ziemi (fot. 4). W tym celu do naszej sieci wirtualnej VLAN 1 należy podłączyć urządzenie będące serwerem OpenVPN, a na komputerze, z którego zamierzamy się łączyć – zainstalować oprogramowanie pełniące rolę klienta. Poniżej opisano konfigurację tego oprogramowania.
Konfiguracja oprogramowania OpenVPN
Oprogramowanie OpenVPN jest rozprowadzane na licencji GNU GPL, a jego najnowszą wersję można pobrać bezpłatnie ze strony www.openvpn.net (należy wybrać zakładkę Community i przejść do sekcji Download, po czym wybrać wersję i system operacyjny).
1. Instalacja
Instalacja w systemie Windows jest w pełni zautomatyzowana, należy jednak pamiętać, aby przeprowadzić ją z uprawnieniami administratora. Jednym z etapów instalacji jest wybór komponentów. Oprócz domyślnie wybranych składników (czyli samego OpenVPN, bibliotek pomocniczych i prostego interfejsu graficznego OpenVPN GUI), należy zaznaczyć OpenSSL Utilities oraz OpenVPN RSA Certificate Management Scripts – umożliwią one utworzenie własnego centrum certyfikacji i generowanie kluczy oraz certyfikatów dla serwerów (routerów VPN) i klientów (komputerów, z których będziemy się z nimi łączyć). Oprogramowanie zostanie domyślnie zainstalowane w katalogu C:\Program Files\OpenVPN. Po instalacji oprogramowania zostanie również zainstalowane urządzenie TAP-Windows Adapter V9 (wersja może się różnić), które stanowić będzie wirtualny interfejs dla połączenia VPN.
2. Utworzenie centrum certyfikacji
Połączenie OpenVPN może być zabezpieczone za pomocą współdzielonego klucza lub mechanizmów certyfikacji. Pierwsza metoda jest zdecydowanie prostsza (wymaga jedynie wygenerowania klucza i umieszczenia go na serwerze oraz w katalogu bin bieżącej instalacji), ale mało bezpieczna i uniemożliwia jednoczesne połączenie z serwerem więcej niż jednego klienta. Zdecydowanie lepszym pomysłem jest użycie drugiej metody, do czego jednak potrzebne jest centrum certyfikacji. Centrum certyfikacji CA (ang. Certificate Authority), jak sama nazwa wskazuje, wystawia certyfikaty zarówno dla klienta, jak i serwera. Certyfikaty te służą do uwierzytelniania kluczy stosowanych podczas połączenia – podstawą jego funkcjonowania jest zaufanie obydwu stron. W naszym przypadku potrzebujemy certyfikatów tylko na własne potrzeby, więc zamiast korzystać z istniejącej zaufanej instytucji (co często jest płatne) można utworzyć własne centrum certyfikacji.
Pierwszym etapem jest przygotowanie pliku vars.bat z domyślnymi ustawieniami certyfikatów, co zaoszczędzi podawania każdorazowo tych samych danych przy ich generowaniu. W tym celu należy uruchomić konsolę (np. naciskając klawisz Windows+R i wpisując w okienku, które się pojawi cmd.exe), a następnie wpisać polecenie:
>cd C:\Program Files\OpenVPN\easy-rsa,
które spowoduje przejście do katalogu ze skryptami, po czym wywołać jeden z nich poleceniem: >init-config.bat. Skrypt ten kopiuje plik vars.bat.sample i zmienia jego nazwę na vars.bat. Teraz należy dokonać edycji tego ostatniego, np. poleceniem: >notepad vars.bat.
Na końcu pliku można znaleźć linie z domyślnymi parametrami certyfikatów, które należy uzupełnić własnymi danymi, np.:
set KEY_COUNTRY=PL
set KEY_PROVINCE=Mazowieckie
set KEY_CITY=Warszawa
set KEY_ORG=OpenVPN
set KEY_EMAIL=kowalski@openvpn.pl
set KEY_CN=changeme
set KEY_NAME=changeme
set KEY_OU=OpenVPN
Tak przygotowany plik należy zapisać i zamknąć, a następnie uruchomić poleceniem:
>vars.bat.
Kolejnym krokiem jest przygotowanie katalogu keys, w którym będą przechowywane m.in. certyfikaty i klucze. W tym celu należy uruchomić kolejny skrypt poleceniem:
>clean-all.bat.
W efekcie, w katalogu easy-rsa zostanie utworzony katalog keys, a w nim pliki index.txt i serial (utworzone odpowiednio z plików index.txt.start
i serial.start).
Pozostaje jedynie wygenerować pierwszy certyfikat dla centrum certyfikacji poleceniem:
>build-ca.bat.
Uruchomiony zostanie interaktywny skrypt, przy czym dzięki konfiguracji pliku vars.bat można pozostawić domyślne odpowiedzi, poza polami Common Name oraz Name, gdzie należy podać nazwę podmiotu (w tym wypadku CA). Po wykonaniu skryptu odpowiedni certyfikat (ca.crt) i klucz prywatny (ca.key) pojawi się w katalogu keys. Certyfikat należy skopiować do katalogu config, zawierającego konfigurację klienta OpenVPN.
3. Generacja certyfikatu dla serwera
Każde urządzenie z uruchomionym serwerem OpenVPN wymaga własnego klucza i certyfikatu. Do ich generacji służy skrypt build-key-server.bat w katalogu easy-rsa. Można go wywołać serią poleceń:
>cd C:\Program Files\OpenVPN\easy-rsa
>vars.bat
>build-key-server.bat nazwa_serwera,
gdzie nazwa_serwera będzie nazwą pliku z certyfikatem i kluczem (warto tutaj podać nazwę urządzenia, w którym instalujemy router). Po zakończeniu skryptu odpowiedni certyfikat (nazwa_serwera.crt) i klucz prywatny (nazwa_serwera.key) pojawi się w katalogu keys.
4. Generacja certyfikatu dla klienta
Każdy klient OpenVPN wymaga własnego klucza i certyfikatu. Do ich generacji służy skrypt build-key.bat w katalogu easy-rsa. Można go wywołać serią poleceń:
>cd C:\Program Files\OpenVPN\easy-rsa
>vars.bat
>build-key.bat nazwa_klienta,
gdzie nazwa_klienta będzie nazwą pliku z certyfikatem i kluczem.
Mając skonfigurowane oprogramowanie klienta OpenVPN oraz wygenerowane potrzebne certyfikaty i klucze można skonfigurować serwer. Na rynku jest sporo kompaktowych urządzeń w wykonaniu przemysłowym (zasilanych napięciem 24 V DC i montowanych na szynę DIN), które łączą funkcję routera z serwerem VPN. Jednym z nich jest EBW-E100 niemieckiej firmy INSYS icom (fot. 5a). Jego konfiguracja została przedstawiona poniżej.
Konfiguracja routera VPN
Konfigurację serwera VPN EBW E-100 można przeprowadzić za pomocą linii poleceń CLI lub za pomocą interfejsu Web (fot. 5b). Ten drugi sposób jest dużo wygodniejszy i przedstawiamy go poniżej.
1. Konfiguracja podstawowa
Interfejs dostępny jest pod domyślnym adresem routera (port LAN1). Domyślny login to „insys”, a hasło „icom”. Po zalogowaniu można ustawić własny login (User name) i hasło (Password) w zakładce Basic Settings/Web interface. Można tam również ograniczyć dostęp do interfejsu Web i zmienić domyślne porty, na których jest dostępny. Należy pamiętać o zatwierdzeniu zmian przyciskiem OK na dole strony – w przeciwnym wypadku nie zostaną one zapisane.
Po skonfigurowaniu interfejsu Web można przejść do zakładki Basic Settings/IP address (LAN), gdzie ustawiany jest adres IP routera w sieci lokalnej (IP address) i maska tej sieci (Netmask). Router w naszym przypadku będzie pracował w sieci VLAN 1 o adresie 192.168.1.0/24, dlatego jego adres to np. 192.168.1.2, a maska 255.255.255.0.
Aby umożliwić routowanie pakietów do sieci VLAN 2 i VLAN 3, należy dodać trasy statyczne dla tych podsieci w zakładce Basic Settings/Routing. W naszym przypadku będą one miały postać (adres sieci/maska/brama): 192.168.2.0 / 255.255.255.0 / 192.168.1.1 oraz 192.168.3.0 / 255.255.255.0 / 192.168.1.1.
2. Konfiguracja sieci zewnętrznej
Można teraz przejść do konfiguracji adresu routera w sieci zewnętrznej dostępnej w zakładce LAN (ext)/LAN (ext). W przeciwieństwie do sieci lokalnej adres w sieci zewnętrznej można ustawić na kilka sposobów, z czego dla potrzeb połączenia OpenVPN istotne są dwa: klient DHCP (DHCP client) oraz adres statyczny (static IP address). Jeżeli sieć zewnętrzna (np. sieć zakładowa), do której będzie podłączony nasz router ma dynamicznie przydzielane adresy, należy skonfigurować router jako klienta DHCP. Jeżeli natomiast adresy są przydzielane przez administratora, to należy taki adres od niego uzyskać i wpisać jako adres statyczny. W tym przypadku należy również uzupełnić pole z maską sieci (Netmask). W zakładce LAN (ext)/Routing można dodatkowo ustawić domyślną bramę w sieci zewnętrznej (Set default route to gateway).
Ostatnią rzeczą, która pozostaje do zrobienia jest skonfigurowanie i uruchomienie serwera OpenVPN. Odbywa się to w zakładce LAN (ext)/OpenVPN server. Należy tutaj aktywować serwer (Activate OpenVPN server) i ustawić parametry połączenia (jeśli nie można zastosować domyślnych). Na dole strony można załadować pliki klucza oraz certyfikatów serwera i CA (Upload key or certificates), a w jej górnej części pobrać przykładowy plik konfiguracyjny dla klienta (Create sample configuration file for remote terminal).
Podsumowanie
Sieci przemysłowe bazujące na standardzie Ethernet eliminują stopniowo starsze rozwiązania i do nich należy przyszłość komunikacji w systemach przemysłowych. Ich zalety zdecydowanie górują nad wadami, wśród których jedną z największych jest duża wrażliwość na błędy w procesie projektowania. Jest to o tyle istotne, że w przeciwieństwie do typowych sieci „biurowych”, tworzonych i obsługiwanych przez specjalistów z działów IT, sieci przemysłowe są często tworzone „przy okazji” przez osoby z branży automatyki, które nie zajmują się tym na co dzień.
Każdy projekt sieci tego typu warto zacząć od analizy wymagań przed nią stawianych, jak to zostało zaprezentowane w przykładach. Dotyczą one dosyć prostego przypadku, ale zastosowane rozwiązania (np. zarządzalny przełącznik trasujący) charakteryzują się dużą elastycznością i dzięki temu mogą być łatwo dopasowane także do tych bardziej złożonych struktur. Warto o tym pamiętać, tym bardziej, że koszt osprzętu sieciowego, tak często traktowanego po macoszemu, stanowi niewielki ułamek całkowitego kosztu systemu sterowania. Tymczasem, jak już wspomniano, podstawą sprawnie funkcjonującej sieci przemysłowej bazującej na standardzie Ethernet jest jej przemyślana topologia oraz dobrze dobrane elementy infrastruktury.
źródło: Automatyka 11/2015
Komentarze
blog comments powered by Disqus