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 (158)
      • AI (1)
      • Bezpieczeństwo (20)
        • Model AAA (7)
        • Szyfrowanie (1)
      • CCTV (3)
      • Hardware (2)
      • Podstawy informatyki (1)
      • Sieci (47)
        • Cisco (4)
          • Obsługa haseł (2)
        • MikroTik (8)
        • Monitorowanie sieci (3)
        • Pomiary w sieciach LAN (6)
          • iptraf-ng (3)
        • Protokół ARP (5)
        • Symulator sieci GNS3 (5)
        • Tunelowanie ruchu (6)
          • Tunele GRE (2)
          • Tunele SSH (4)
        • WLAN / WiFi (7)
      • Software (78)
        • Bazy danych (13)
        • Programowanie (21)
        • Systemy operacyjne (21)
          • Linux Debian (18)
        • Windows (8)
      • Wirtualizacja (26)
  • Ostatnie wpisy

    • Opencode – darmowe kredyty
    • Tunel SSH – zwrotny (remote forwading)
    • GNS3 – Interfejsy sieciowe
    • GNS3 – Konfiguracja urządzenia IOU (L2/L3)
    • Tunel GRE + EoIP na Cisco
  • Strona odwiedzona

    od 11.01.2013

  • Doskonała platforma e-learningowa Uzyskaj certyfikat IT

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

Powered by
Necessary cookies enable essential site features like secure log-ins and consent preference adjustments. They do not store personal data.
None
Functional cookies support features like content sharing on social media, collecting feedback, and enabling third-party tools.
None
Analytical cookies track visitor interactions, providing insights on metrics like visitor count, bounce rate, and traffic sources.
None
Advertisement cookies deliver personalized ads based on your previous visits and analyze the effectiveness of ad campaigns.
None
Unclassified cookies are cookies that we are in the process of classifying, together with the providers of individual cookies.
None
Powered by