ITBlog

IT Blog w tematach różnych...

  • O blogu…
  • Edukacja
    • Moodle – stare
    • Moodle2
    • Testy
    • Wykłady IT
  • Firma

SoE czyli Serial over Ethernet

Napisane przez Igor Brzeżek on 16 czerwca 2026
Napisane w: Programowanie.

Contents
  1. Serial over Ethernet (SoE) – zdalny dostęp do portów szeregowych przez sieć TCP/IP
  2. Do czego służy Serial over Ethernet?
  3. Architektura systemu
  4. SoE Server – udostępnianie portu szeregowego w sieci
  5. Opcje wiersza poleceń
  6. Przykłady użycia SoE Server
  7. SoE Client – terminalowy klient portu szeregowego
  8. Opcje wiersza poleceń
  9. Przykłady użycia SoE Client
  10. SoE Bridge – most między siecią a lokalnym portem
  11. Opcje wiersza poleceń
  12. Przykłady użycia SoE Bridge
  13. Serial Emulator – symulator urządzenia Cisco do testów
  14. Opcje wiersza poleceń
  15. Przykłady użycia Serial Emulator
  16. Szybki start – przepływ działania krok po kroku
  17. Bezpieczeństwo – SSL/TLS i autoryzacja
  18. Protokół komunikacyjny SoE
  19. Pliki konfiguracyjne
  20. Wymagania i instalacja
  21. Wersja Python
  22. Uruchomienie
  23. Podsumowanie

Serial over Ethernet (SoE) – zdalny dostęp do portów szeregowych przez sieć TCP/IP

Serial over Ethernet (SoE) to zestaw trzech programów napisanych w Pythonie, który umożliwia przezroczyste przenoszenie komunikacji portów szeregowych (COM/TTY) przez sieci TCP/IP. Dzięki SoE możesz podłączyć się do urządzenia z interfejsem RS-232 znajdującego się w innym pomieszczeniu, budynku, a nawet na innym kontynencie – tak, jakby było podłączone bezpośrednio do twojego komputera.

System składa się z trzech części: SoE Server obsługującego fizyczny port szeregowy i udostępniającego go w sieci, SoE Client będącego wbudowanym emulatorem terminala oraz SoE Bridge służącego do przenoszenia ruchu między siecią a lokalnym portem szeregowym lub pipe’em. Dodatkowo dostępny jest Serial Emulator – program symulujący urządzenie Cisco do celów testowych.

GitHub: github.com/IgorBrzezek/soe

Do czego służy Serial over Ethernet?

Tradycyjne porty szeregowe RS-232 pozwalają na połączenie na odległość zaledwie kilkudziesięciu metrów. SoE rozwiązuje ten problem, hermetyzując dane szeregowe w pakiety TCP/IP i przesyłając je przez standardową infrastrukturę sieciową. Znajduje to zastosowanie w wielu scenariuszach:

  • Dostęp do urządzeń przemysłowych – sterowniki PLC, panele HMI, maszyny CNC wyposażone w port RS-232 mogą być obsługiwane zdalnie.
  • Zarządzanie sprzętem sieciowym – łączysz się do konsol routerów i przełączników Cisco, MikroTik czy Juniper przez sieć LAN/WAN.
  • Praca z maszynami wirtualnymi – SoE Bridge z obsługą Named Pipe pozwala na bezpośrednie połączenie z konsolą szeregową VM bez fizycznego portu.
  • Centralizacja dostępu – jeden SoE Server może obsługiwać wielu klientów jednocześnie, co ułatwia zarządzanie dostępem do urządzeń w serwerowni.
  • Bezpieczny zdalny dostęp – dzięki wbudowanemu szyfrowaniu SSL/TLS i autoryzacji hasłem.

Architektura systemu

System SoE składa się z trzech głównych komponentów współpracujących ze sobą przez sieć TCP/IP:

  • SoE Server – działa na maszynie podłączonej fizycznie do urządzenia szeregowego. Nasłuchuje połączeń przychodzących na określonym porcie TCP i mostkuje ruch między siecią a portem COM/TTY lub Named Pipe.
  • SoE Client – lekki klient terminalowy, który łączy się do SoE Server i udostępnia wbudowany emulator terminala ANSI. Idealny do bezpośredniej interakcji z urządzeniem.
  • SoE Bridge – mostkowanie w drugą stronę: łączy się jako klient do SoE Server i przekazuje ruch do lokalnego portu szeregowego lub Named Pipe na swojej maszynie. Dzięki temu zewnętrzne programy terminalowe (PuTTY, MobaXterm) mogą korzystać z połączenia.

SoE Server – udostępnianie portu szeregowego w sieci

SoE Server (wersja 0.0.53) to program działający jako serwer TCP, który nasłuchuje połączeń przychodzących i mostkuje je do lokalnego portu szeregowego lub Named Pipe w systemie Windows. Obsługuje wielu klientów jednocześnie, ma zaawansowany interfejs TUI z podziałem ekranu oraz pełne wsparcie dla szyfrowania SSL/TLS.

Opcje wiersza poleceń

Opcja Opis Domyślnie
-p, --port Port TCP do nasłuchiwania wymagany
-a, --address Adres interfejsu do bindowania 0.0.0.0
--comport Nazwa portu szeregowego (COM1, /dev/ttyUSB0) –
--namedpipe Nazwa Named Pipe (tylko Windows) –
--baud Prędkość transmisji (9600, 115200 itd.) –
--line Parametry linii: bity/parzystość/stop/flow (np. 8N1N) –
--pwd Hasło autoryzacji klientów –
--secauto Automatyczne generowanie certyfikatu SSL wył.
--sec CERT,KEY Własny certyfikat SSL i klucz –
--log PLIK[,new] Log systemowy (dodaj ,new do rotacji) –
--logdata PLIK Log surowych danych binarnych –
--showtransfer Podgląd ruchu: ascii|hex,in|out|all –
-b, --batch Tryb cichy, brak wyświetlania na konsoli wył.
--notui Wyłączenie interfejsu TUI (zwykły stdout) wył.
--cfgfile PLIK Wczytaj konfigurację z pliku –

Przykłady użycia SoE Server

# Podstawowe uruchomienie z portem COM1
python serial_server_0.0.53_LinWin.py --port 10001 --comport COM1 --baud 9600

# Serwer z szyfrowaniem SSL i hasłem
python serial_server_0.0.53_LinWin.py --port 8888 --comport /dev/ttyUSB0 --baud 115200 --secauto --pwd tajnehaslo

# Named Pipe dla maszyn wirtualnych (Windows)
python serial_server_0.0.53_LinWin.py --port 10001 --namedpipe MojaRura

# Praca z plikiem konfiguracyjnym
python serial_server_0.0.53_LinWin.py --cfgfile ./mojserwer.conf

SoE Client – terminalowy klient portu szeregowego

SoE Client (wersja 0.0.56) to program, który łączy się do SoE Server i udostępnia wbudowany emulator terminala ANSI. Obsługuje klawisze strzałek, klawisze funkcyjne F1-F12, zachowanie scrollingu oraz tryb pełnoekranowego TUI z paskiem statusu. Idealny do bezpośredniej interakcji z konsolą urządzenia.

Opcje wiersza poleceń

Opcja Opis Domyślnie
-H, --host Adres IP lub nazwa hosta serwera wymagany
-p, --port Port TCP serwera wymagany
--cfgfile Ścieżka do pliku konfiguracyjnego –
--keepalive Interwał KeepAlive w sekundach 60
--pwd Hasło autoryzacji –
--secauto Automatyczne SSL/TLS wył.
--sec CERT,KEY SSL z własnymi certyfikatami –
--color Kolorowy pasek statusu wł.
--notui Wyłącz interfejs TUI (pasek statusu) wył.
--nohead Ukryj górny pasek tytułowy wył.
--echo Lokalne powtarzanie znaków (local echo) wył.
--count Licznik przesłanych bajtów wył.
--ask Tryb zapytania – pobierz info o serwerze i zakończ –

Przykłady użycia SoE Client

# Podstawowe połączenie
python serial_client_0.0.56_LinWin.py -H 192.168.1.10 -p 10001

# Połączenie szyfrowane z hasłem
python serial_client_0.0.56_LinWin.py -H 192.168.1.10 -p 10001 --secauto --pwd tajnehaslo

# Użycie pliku konfiguracyjnego
python serial_client_0.0.56_LinWin.py --cfgfile soeclient.conf

# Tryb zapytania o parametry serwera
python serial_client_0.0.56_LinWin.py -H 192.168.1.10 -p 10001 --ask

# Minimalny tryb bez TUI
python serial_client_0.0.56_LinWin.py -H 10.0.0.5 -p 2000 --notui --echo

SoE Bridge – most między siecią a lokalnym portem

SoE Bridge (wersja 0.0.70) to program działający w trybie klienta TCP względem SoE Server, ale zamiast wbudowanego terminala udostępnia lokalny port szeregowy lub Named Pipe. Dzięki niemu zewnętrzne aplikacje terminalowe (PuTTY, MobaXterm, HyperTerminal) mogą korzystać z połączenia, łącząc się do lokalnego portu utworzonego przez Bridge.

Opcje wiersza poleceń

Opcja Opis Domyślnie
-H, --host Adres IP serwera SoE wymagany
-p, --port Port TCP serwera wymagany
--comport Lokalny port szeregowy –
--namedpipe Lokalny Named Pipe (Windows) –
--baud, --line Parametry portu szeregowego –
--pwd Hasło autoryzacji –
--secauto Automatyczne SSL/TLS wył.
--sec CERT,KEY SSL z własnymi certyfikatami –
--ask Sprawdź stan serwera i zakończ –
--log, --logdata Ścieżki plików logu –
--showtransfer Podgląd przesyłanych danych –
-b, --batch Tryb cichy wył.

Przykłady użycia SoE Bridge

# Mostkowanie do lokalnego portu COM
python serial_bridge_0.0.70_LinWin.py -H 192.168.1.10 -p 10001 --comport COM17

# Połączenie z maszyną wirtualną przez Named Pipe
python serial_bridge_0.0.70_LinWin.py -H 192.168.1.50 -p 5000 --namedpipe VMSerial --showtransfer hex,all

# Bezpieczne połączenie przez internet
python serial_bridge_0.0.70_LinWin.py --host mojserwer.pl --port 8888 --comport /dev/ttyS0 --baud 115200 --secauto --pwd tajnehaslo

# Sprawdzenie statusu serwera
python serial_bridge_0.0.70_LinWin.py -H 192.168.1.50 -p 5000 --ask

Serial Emulator – symulator urządzenia Cisco do testów

Serial Emulator (wersja 0.0.7) to program, który symuluje fizyczne urządzenie sieciowe z interfejsem konsoli Cisco IOS. Odtwarza tryby User, Privileged i Config, rozpoznaje polecenia takie jak show version, show running-config, configure terminal, write memory itd. Jest niezastąpiony do testowania konfiguracji SoE bez posiadania fizycznego sprzętu.

Opcje wiersza poleceń

Opcja Opis Domyślnie
--comport PORT Fizyczny port szeregowy –
--namedpipe NAZWA Named Pipe (Windows) –
--baud Prędkość transmisji 9600
--line Ustawienia linii 8N1N
--hostname NAZWA Symulowana nazwa hosta device-sim
--device-model Model urządzenia (show version) IOS XE
--enable-password Hasło do trybu enable cisco
--tui / --notui Interfejs TUI włącz/wyłącz wł.
--mono Tryb monochromatyczny wył.
--cmdfile PLIK Własny plik mapowania komend emu_commands.txt

Przykłady użycia Serial Emulator

# Symulacja na Named Pipe z interfejsem TUI
python serial_emu.py --namedpipe device-sim --tui

# Fizyczny port szeregowy z własną nazwą hosta
python serial_emu.py --comport COM3 --baud 115200 --hostname CoreRouter

# Tryb monochromatyczny
python serial_emu.py --namedpipe testpipe --mono

Szybki start – przepływ działania krok po kroku

Aby uruchomić system SoE i połączyć się do urządzenia szeregowego przez sieć, wykonaj następujące kroki:

  1. Po stronie urządzenia – na maszynie podłączonej do urządzenia szeregowego uruchom SoE Server:
    python serial_server_0.0.53_LinWin.py --port 10001 --comport COM1 --secauto --pwd tajnehaslo
  2. Po stronie klienta – na zdalnej maszynie uruchom SoE Client:
    python serial_client_0.0.56_LinWin.py -H 192.168.1.10 -p 10001 --secauto --pwd tajnehaslo
  3. Gotowe – widzisz konsolę urządzenia tak, jakbyś był podłączony lokalnie. Możesz wysyłać komendy i odbierać odpowiedzi.

Bezpieczeństwo – SSL/TLS i autoryzacja

SoE oferuje trzy poziomy bezpieczeństwa połączenia:

  • RAW (domyślny) – czysty TCP bez szyfrowania. Tylko do użytku w zaufanej sieci lokalnej.
  • Protected – autoryzacja hasłem (--pwd). Hasło jest wymagane do nawiązania połączenia.
  • SSL/TLS – pełne szyfrowanie z certyfikatami. Możesz użyć --secauto do automatycznego wygenerowania certyfikatu samopodpisanego lub --sec cert.pem,key.pem z własnymi certyfikatami.

Aby wygenerować własny certyfikat dla środowiska produkcyjnego:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes

Następnie użyj go w SoE Server:

python serial_server_0.0.53_LinWin.py --port 10001 --pwd tajnehaslo --sec /etc/ssl/certs/cert.pem,/etc/ssl/private/key.pem

Protokół komunikacyjny SoE

SoE używa własnego protokołu opartego na separatorze __#...#__. Protokół obsługuje wymianę wersji, autoryzację, synchronizację parametrów portu szeregowego oraz mechanizm KeepAlive:

Komenda Kierunek Opis
__#CL_VER_X.X#__ Klient -> Serwer Identyfikacja wersji klienta
__#BR_VER_X.X#__ Bridge -> Serwer Identyfikacja wersji bridge
__#SRV_VER_X.X#__ Serwer -> Klient Odpowiedź z wersją serwera
__#PWD_HASLO#__ Klient -> Serwer Autoryzacja hasłem
__#BADPWD#__ Serwer -> Klient Odrzucenie hasła
__#KEEPALIVE#__ Obie strony Heartbeat / KeepAlive
__#DISCONNECT#__ Obie strony Eleganckie rozłączenie

Pliki konfiguracyjne

Każdy z programów może korzystać z zewnętrznego pliku konfiguracyjnego w formacie INI. Priorytet ładowania: argumenty CLI (najwyższy) -> plik --cfgfile -> katalog domyślny. Przykładowa konfiguracja serwera (soeserver.conf):

[DEFAULT]
port = 10001
address = 0.0.0.0
comport = COM1
baud = 9600
line = 8N1N
pwd = zaq12wsx
secauto = False
debug = True
color = True

Wymagania i instalacja

Wersja Python

  • Python 3.6 lub nowszy
  • Biblioteka pyserial (pip install pyserial)
  • Biblioteka cryptography (pip install cryptography) – opcjonalnie, dla SSL
  • Biblioteka pywin32 (pip install pywin32) – opcjonalnie, dla Named Pipe na Windows
  • System operacyjny: Windows lub Linux

Uruchomienie

pip install pyserial cryptography
python serial_server_0.0.53_LinWin.py --port 10001 --comport COM1 --baud 9600

Podsumowanie

Serial over Ethernet to kompletne i dopracowane rozwiązanie do zdalnego dostępu do urządzeń szeregowych przez sieć. Trzy części systemu – Server, Client i Bridge – pokrywają wszystkie potrzeby: od bezpośredniego podłączenia terminalem, przez mostkowanie do zewnętrznych programów, po zaawansowaną konfigurację z szyfrowaniem i autoryzacją. Dodatkowy Serial Emulator pozwala na testowanie całego systemu bez fizycznego sprzętu, co jest nieocenione podczas nauki i debugowania.

Dzięki cross-platformowej implementacji w Pythonie SoE działa zarówno na Windows, jak i na Linuxie, a dzięki modułowej architekturze można go łatwo dostosować do własnych potrzeb. Źródła dostępne są na GitHubie na licencji otwartej.

Źródła: github.com/IgorBrzezek/soe

Nawigacja

← microMon – prosty monitoring zasobów
Generator DTMF →
  • Szukaj

  • Kategorie

    • IT ogólnie (147)
      • Bezpieczeństwo (19)
        • Model AAA (7)
        • Szyfrowanie (1)
      • CCTV (3)
      • Hardware (2)
      • Podstawy informatyki (1)
      • Sieci (35)
        • Cisco (4)
          • Obsługa haseł (2)
        • MikroTik (8)
        • Pomiary w sieciach LAN (6)
          • iptraf-ng (3)
        • Protokół ARP (5)
        • Symulator sieci GNS3 (3)
        • WLAN / WiFi (5)
      • Software (78)
        • Bazy danych (13)
        • Programowanie (21)
        • Systemy operacyjne (21)
          • Linux Debian (18)
        • Windows (8)
      • WiFi (2)
      • Wirtualizacja (26)
  • Ostatnie wpisy

    • WinScreen czyli terminal z wirtualnymi oknami
    • Style Mover czyli przenoszenie stylów HTML
    • Generator obrazów AI za pomocą API
    • Generator modulacji AM i FM
    • Generator plików tekstowych i binarnych
  • Strona odwiedzona

    od 11.01.2013

  • Doskonała platforma e-learningowa Uzyskaj certyfikat IT

Proudly powered by WordPress Theme: Parament by Automattic.
7ads6x98y