Port MQTT 1883 czy 8883? Sprawdź, który wybrać

Leonard Wojciechowski .

5 lipca 2026

Logi Mosquitto brokera: startuje, otwiera porty 1883 i 1884, obsługuje połączenia mqtt.

Gdy sterownik, czujnik albo aplikacja nie może połączyć się z brokerem, jednym z pierwszych podejrzanych jest port MQTT. Najczęściej chodzi o wybór między portem 1883 bez szyfrowania a 8883 z TLS, ale znaczenie mają też WebSockety, zapora sieciowa, adres nasłuchu i ustawienia klienta. Poniżej porządkuję te kwestie tak, aby można było szybko dobrać właściwą konfigurację i znaleźć przyczynę problemów z komunikacją.

Najważniejsze ustawienia portów MQTT w jednym miejscu

  • 1883 służy zwykle do standardowej komunikacji MQTT bez szyfrowania.
  • 8883 jest typowym portem dla MQTT zabezpieczonego protokołem TLS.
  • WebSockety korzystają z osobnego, konfigurowalnego portu, często 8083, 8084, 8000 lub 443.
  • Sam otwarty port nie wystarczy. Broker musi również nasłuchiwać na właściwym adresie.
  • W instalacjach dostępnych z internetu najlepiej używać TLS, uwierzytelniania i reguł zapory.

Port 1883 czy 8883 - który wybrać

Port 1883 jest domyślnym portem dla klasycznego MQTT działającego przez TCP. Broker przyjmuje na nim połączenia klientów, a urządzenia mogą publikować dane i odbierać komunikaty w ramach tematów MQTT. To dobry wybór do testów w odizolowanej sieci lokalnej, na przykład przy pracy z ESP32, PLC albo komputerem w tej samej sieci LAN.

Problem polega na tym, że komunikacja na 1883 jest przesyłana bez szyfrowania. Hasło, dane pomiarowe i treść wiadomości mogą zostać przechwycone przez osobę mającą dostęp do odpowiedniego fragmentu sieci. Nie oznacza to, że port 1883 jest zawsze błędem, ale wystawianie go bezpośrednio do internetu uważam za bardzo ryzykowny skrót.

Port 8883 jest przeznaczony dla MQTT przez TLS, czyli połączenia szyfrowanego certyfikatem. Klient musi wtedy używać właściwego trybu SSL/TLS, a broker musi mieć skonfigurowany certyfikat, klucz prywatny i odpowiedni listener. Samo wpisanie numeru 8883 w aplikacji nie włączy zabezpieczeń, jeśli serwer nadal obsługuje zwykłe MQTT.

Port Transport Szyfrowanie Typowe zastosowanie
1883 MQTT przez TCP Nie Testy i zamknięta sieć lokalna
8883 MQTT przez TCP i TLS Tak Internet, instalacje produkcyjne, zdalne urządzenia
8083 lub 8000 MQTT przez WebSocket Zależnie od konfiguracji Aplikacje uruchamiane w przeglądarce
8084 lub 443 MQTT przez bezpieczny WebSocket Tak, przez TLS Przeglądarki i systemy za reverse proxy

Numery 1883 i 8883 są standardowo kojarzone odpowiednio z komunikacją MQTT bez TLS i z MQTT zabezpieczonym TLS. Broker może jednak działać na dowolnym wolnym porcie, jeśli tak ustawisz konfigurację. Zmiana numeru nie zastępuje szyfrowania, dlatego traktuję ją wyłącznie jako element organizacji sieci, a nie zabezpieczenie.

Dlaczego WebSocket potrzebuje innego portu

Klasyczny klient MQTT, taki jak program na mikrokontrolerze lub sterownik automatyki, łączy się bezpośrednio przez TCP. Przeglądarka internetowa nie może natomiast otworzyć dowolnego gniazda TCP, dlatego stosuje się MQTT over WebSocket. Jest to MQTT przeniesione przez połączenie WebSocket, które przeglądarka potrafi obsługiwać.

Port WebSocket nie ma jednego obowiązkowego numeru. W zależności od brokera i gotowego obrazu kontenera można spotkać 8000, 8083, 8084, 443 albo inny port określony przez administratora. W dokumentacji konkretnego systemu trzeba sprawdzić nie tylko numer, lecz także ścieżkę połączenia, na przykład `/mqtt`, oraz to, czy używany jest wariant `ws://` czy `wss://`.

Wariant wss:// oznacza WebSocket zabezpieczony TLS. To właściwa opcja, gdy panel sterowania działa w przeglądarce i jest dostępny przez HTTPS. Przeglądarka często blokuje zwykłe `ws://` uruchomione z bezpiecznej strony HTTPS, więc pozornie poprawny port może nie wystarczyć do nawiązania połączenia.

Przykład konfiguracji klienta

W programie korzystającym z klasycznego MQTT podajesz adres brokera, port oraz dane logowania. Dla połączenia szyfrowanego musisz dodatkowo włączyć TLS i wskazać certyfikat urzędu certyfikacji, jeśli biblioteka tego wymaga.

broker: 192.168.1.50
port: 8883
tls: true
username: automat
password: ********

Dla aplikacji przeglądarkowej ustawienia będą inne, ponieważ klient potrzebuje adresu WebSocket i ścieżki. Nie wolno mieszać portu TCP z portem WebSocket. Próba połączenia zwykłego klienta MQTT z listenerem WebSocket zwykle kończy się odrzuceniem połączenia albo komunikatem o nieprawidłowym pakiecie.

Jak poprawnie skonfigurować broker i zaporę

Najczęstszy błąd polega na otwarciu portu w routerze lub zaporze, mimo że broker nasłuchuje wyłącznie na `127.0.0.1`. Taki adres oznacza dostęp tylko z tego samego komputera. Aby urządzenia w sieci lokalnej mogły się połączyć, broker musi nasłuchiwać na adresie interfejsu LAN albo na wszystkich interfejsach, przy czym ta druga opcja wymaga szczególnie ostrożnych reguł dostępu.

W Mosquitto czytelna konfiguracja może wyglądać tak:

listener 1883 192.168.1.50
protocol mqtt

listener 8883 192.168.1.50
protocol mqtt
cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key

Przy wdrożeniu produkcyjnym nie wystawiałbym anonimowego listenera na 1883. Lepiej ograniczyć go do sieci lokalnej lub całkowicie wyłączyć, a urządzenia zdalne kierować na 8883 z uwierzytelnianiem. Trzeba też pamiętać o trzech miejscach, w których port może być blokowany:

  • zaporze systemu Linux, Windows lub urządzenia brzegowego,
  • routerze wykonującym translację adresów NAT,
  • regułach dostawcy chmurowego albo serwera VPS.

Jeżeli broker działa w Dockerze, port kontenera i port hosta nie muszą być takie same. Przykładowe mapowanie `1883:1883` oznacza przekazanie portu 1883 hosta do portu 1883 w kontenerze. Przy mapowaniu `31883:1883` klient z sieci łączy się z 31883, chociaż sam broker wewnątrz kontenera nadal pracuje na 1883.

Jak sprawdzić, czy port MQTT działa

Zanim zacznę zmieniać certyfikaty, biblioteki i ustawienia urządzenia, sprawdzam najpierw, czy na serwerze rzeczywiście działa listener. W systemie Linux można użyć polecenia:

ss -lntp | grep -E '1883|8883|8083|8084'

Wynik powinien pokazać proces nasłuchujący na wybranym porcie. Jeśli widzisz tylko `127.0.0.1:1883`, połączenie z innego komputera nie zadziała. Adres `0.0.0.0:1883` oznacza nasłuch na wszystkich interfejsach IPv4, ale nie mówi jeszcze, czy firewall przepuszcza ruch.

Z innego urządzenia możesz wykonać prosty test dostępności TCP:

nc -vz 192.168.1.50 1883
nc -vz 192.168.1.50 8883

Udane połączenie TCP nie potwierdza jeszcze poprawnej konfiguracji MQTT, ale szybko pokazuje, czy problem leży w routingu lub zaporze. Następny krok to test publikacji i subskrypcji za pomocą narzędzi Mosquitto:

mosquitto_sub -h 192.168.1.50 -p 1883 -t test/odczyt -v
mosquitto_pub -h 192.168.1.50 -p 1883 -t test/odczyt -m "18.6"

Dla TLS dodaj parametry certyfikatu i użyj portu 8883. Jeżeli połączenie zostaje odrzucone, zwróć uwagę na nazwę hosta w certyfikacie, datę ważności certyfikatu oraz zgodność ustawień TLS po stronie klienta i brokera. Błąd certyfikatu nie jest tym samym co zamknięty port, choć w aplikacji oba problemy mogą wyglądać podobnie.

Przeczytaj również: Moduł SFP do switcha - jak dobrać właściwy i uniknąć problemów

Typowe objawy i ich przyczyny

Objaw Najbardziej prawdopodobna przyczyna Co sprawdzić
Connection refused Brak listenera lub zły port Konfigurację brokera i wynik polecenia ss
Timeout Firewall, NAT albo błędny adres IP Trasę, reguły zapory i dostęp z tej samej sieci
Błąd certyfikatu Nieprawidłowy certyfikat lub nazwa hosta CA, CN/SAN, datę ważności i zegar urządzenia
Malformed packet Klient MQTT trafił na WebSocket lub odwrotnie Protokół listenera, port i ścieżkę WebSocket
Połączenie działa lokalnie, ale nie zdalnie Broker jest związany z localhostem albo blokuje go NAT Adres nasłuchu, przekierowanie i firewall

Bezpieczna konfiguracja dla automatyki i IoT

W warsztacie lub małej instalacji domowej komunikacja przez 1883 może być wystarczająca, jeśli broker pozostaje w odseparowanej sieci VLAN i nie jest dostępny z internetu. Gdy dane opuszczają lokalną sieć, wybieram TLS na 8883, indywidualne konta urządzeń i uprawnienia ograniczone do konkretnych tematów.

Warto rozdzielić urządzenia według funkcji. Czujnik temperatury nie potrzebuje prawa do publikowania w całym brokerze, a panel operatorski nie powinien automatycznie otrzymywać uprawnień administratora. Takie ograniczenia zmniejszają skutki przejęcia jednego urządzenia, szczególnie gdy pracuje ono na starszym firmware.

Nie zalecam też przekierowywania 1883 z publicznego adresu routera bez dodatkowej warstwy ochronnej. Bezpieczniejsze rozwiązania to VPN, TLS, reverse proxy dla WebSocketów albo dostęp wyłącznie przez sieć prywatną. Zmiana standardowego portu na przypadkowy numer może ograniczyć liczbę prostych skanów, ale nie zastąpi uwierzytelniania ani szyfrowania.

W instalacjach przemysłowych trzeba dodatkowo uwzględnić segmentację sieci, reguły komunikacji między sterownikami oraz wymagania utrzymania ruchu. Port powinien być otwierany tylko tam, gdzie jest potrzebny, a jego użycie dobrze odnotować w dokumentacji. Ułatwia to później diagnostykę i ogranicza ryzyko przypadkowego udostępnienia brokera.

Port MQTT dobiera się razem z trybem połączenia

Najkrótsza praktyczna odpowiedź brzmi: dla zwykłego MQTT użyj 1883, dla MQTT z TLS wybierz 8883, a dla aplikacji w przeglądarce sprawdź osobny listener WebSocket. Jeśli połączenie nie działa, zacznij od potwierdzenia portu, adresu nasłuchu i zapory, dopiero później analizuj certyfikaty oraz uprawnienia.

Sam numer portu nie określa całej konfiguracji. Liczą się jeszcze protokół, szyfrowanie, sposób uwierzytelniania i miejsce, z którego łączy się urządzenie. Takie podejście oszczędza czas, bo pozwala od razu odróżnić problem sieciowy od błędu ustawień MQTT.

FAQ - Najczęstsze pytania

Port 1883 służy zwykle do nieszyfrowanej komunikacji MQTT, najlepiej w odseparowanej sieci lokalnej lub do testów. Port 8883 jest przeznaczony dla MQTT zabezpieczonego TLS i sprawdza się przy połączeniach internetowych oraz zdalnych urządzeniach. Samo wpisanie numeru 8883 nie wystarczy, ponieważ broker musi mieć skonfigurowany certyfikat, klucz prywatny i listener TLS.
Przeglądarka wymaga MQTT over WebSocket, dlatego należy użyć osobnego listenera WebSocket, często na porcie 8000, 8083, 8084 lub 443. Trzeba sprawdzić również ścieżkę, na przykład /mqtt, oraz wariant połączenia ws:// albo wss://. Dla strony działającej przez HTTPS właściwy będzie zwykle bezpieczny wariant wss://.
Broker może nasłuchiwać wyłącznie na 127.0.0.1, czyli adresie dostępnym tylko lokalnie. Dla urządzeń w sieci LAN powinien nasłuchiwać na adresie interfejsu LAN albo na wszystkich interfejsach, a dodatkowo zapora, router NAT i reguły serwera VPS lub chmury muszą przepuszczać ruch.
Na serwerze użyj polecenia ss -lntp | grep -E '1883|8883|8083|8084', aby sprawdzić aktywne listenery. Z innego urządzenia możesz wykonać test nc -vz z adresem IP i portem, a następnie sprawdzić publikowanie oraz subskrypcję narzędziami mosquitto_pub i mosquitto_sub. Udane połączenie TCP nie potwierdza jeszcze poprawnej konfiguracji MQTT, dlatego przy TLS trzeba dodatkowo zweryfikować certyfikat, nazwę hosta i ustawienia szyfrowania.
Oceń artykuł

Średnia: 0.0 / 5 · 0 ocen

Tagi

mqtt tls websockety mosquitto zapory sieciowe
Autor Leonard Wojciechowski
Leonard Wojciechowski
Nazywam się Leonard Wojciechowski i od 10 lat zajmuję się tematyką techniki warsztatowej, elektryki oraz automatyki. Moje zainteresowanie tymi dziedzinami zaczęło się już w dzieciństwie, kiedy zafascynowany byłem działaniem różnych urządzeń. Od tamtej pory nieustannie poszerzam swoją wiedzę, a moim celem jest dzielenie się nią z innymi. W swoich tekstach staram się wyjaśniać skomplikowane zagadnienia w przystępny sposób, porównując różne źródła i śledząc aktualne trendy w branży. Piszę o różnorodnych aspektach techniki warsztatowej i elektryki, koncentrując się na praktycznych rozwiązaniach, które mogą pomóc czytelnikom w codziennych wyzwaniach. Zawsze dbam o to, aby moje informacje były rzetelne, zrozumiałe i aktualne, co pozwala mi na skuteczne przekazywanie wiedzy. Cieszę się, że mogę być częścią tej społeczności i mam nadzieję, że moje artykuły będą dla Was przydatne.
Komentarze (0)
Dodaj komentarz