Am urmat instrucțiunile pentru a configura Mosquitto pe CentOS 7, oferit de oceanul digital. Cred că am majoritatea lucrurilor configurate corect, am putut să urmez toate instrucțiunile cu câteva scufundări profunde pentru a găsi soluții pentru unele instrucțiuni depreciate. Dar, pot să mă abonez și să public mesaje la un subiect atunci când sunt conectat la serverul meu.
Cu toate acestea, vreau să accesez propriul meu broker MQTT de la un alt client decât adresa serverului (duh). Nu mă pot conecta, indiferent ce încerc - simt că încercarea de conectare nu ajunge la brokerul meu (ambele folosind un vizualizator online precum https://hobbyquaker.github.io/mqtt-admin/ și unul instalat local ca MQTT explorer ).
Mosquitto.conf-ul meu este destul de simplu și l-am simplificat mai mult pentru a permite conexiuni anonime, dar cu TLS atât pentru socket-uri web prin portul 8083, cât și (implicit?) mqqt peste portul 8883.
Fișier complet mosquitto.conf (actualizat după reacția lui Halfgaar):
permit_anonymous adevărat
#password_file /etc/mosquitto/passwd (am dezactivat acest lucru pentru a simplifica încercarea mea de conectare)
fișier log_dest /var/log/mosquitto.log
log_type all
ascultător 1883 localhost
ascultător 8883 0.0.0.0
protocol mqtt # nou adăugat, dar încă nu pare să facă nimic
certfile /etc/letsencrypt/live/iot.mydomain.com/cert.pem
cafile /etc/letsencrypt/live/iot.mydomain.com/chain.pem
fișierul cheie /etc/letsencrypt/live/iot.mydomain.com/privkey.pem
ascultător 8083 0.0.0.0
websocket-uri de protocol
certfile /etc/letsencrypt/live/iot.mydomain.com/cert.pem
cafile /etc/letsencrypt/live/iot.mydomain.com/chain.pem
fișierul cheie /etc/letsencrypt/live/iot.mydomain.com/privkey.pem
Mai târziu m-am gândit că fișierul implicit Mosquitto.conf conține mult mai multe setări și am copiat o copie nouă a setărilor implicite în fișierul meu de configurare, iar la sfârșitul fișierului am adăugat configurația menționată mai sus. Deci acum am o configurație implicită cu suprascrierile de mai sus. Repornirea serviciului de tantari a fost cu succes.
Apoi m-am gândit că poate avea ceva de-a face cu firewall-ul. Am verificat dacă porturile 1883, 8883 și 8083 erau deschise prin firewall-cmd --zone=public --permanent --list-ports
și a constatat că o parte din acea ieșire a fost într-adevăr raportată 8883/tcp 8083/tcp 1883/tcp
.
Fișierul jurnal specificat nu conține nicio informație pentru conexiuni încercate, așa că sunt orb acolo.
Poate cineva să mă îndrume într-o direcție pentru a găsi mai multe indicii pentru a rezolva această problemă?
Actualizați La reacția lui @Halfgaar:
Am actualizat configurația cu legarea la adrese publice (repet doar ce a spus el, habar n-am), când rulez netstat -n -l -t -p
ieșirea este mai jos. În ciuda faptului că nu mă pot conecta la broker de pe laptopul meu (sau oriunde altundeva).
# netstat -n -l -t -p | țânțar grep
tcp 0 0 0.0.0.0:8883 0.0.0.0:* ASCULTA 2573/mosquitto
tcp 0 0 127.0.0.1:1883 0.0.0.0:* ASCULTA 2573/mosquitto
tcp6 0 0 :::8083 :::* ASCULTA 2573/mosquitto
tcp6 0 0 ::1:1883 :::* ASCULTA 2573/mosquitto
Actualizați și eu am dat peste o regulă pentru firewall asta m-a făcut să mă gândesc dacă aș putea să mă conectez cu un protocol mqtt, prin urmare am și executat firewall-cmd --zone=public --permanent --add-service=mqtt
și a reîncărcat firewall-ul.
Puține progrese Am trecut de la primirea erorii Deconectat de la server
la conectați ETIMEDOUT 1.2.3.4:8883
(unde 1.2.3.4 este IP-ul serverului meu). Nu sunt sigur ce înseamnă asta în ceea ce privește progresul, dar sunt în altă parte, așa cum eram înainte...
Actualizați Ieșirea pentru iptables -L INPUT -n
este după cum urmează:
# iptables -L INPUT -n
INTRARE în lanț (politica ACCEPTĂ)
target prot opt sursă destinație
ACCEPTĂ toate -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,STABLISHED
ACCEPTĂ toate -- 0.0.0.0/0 0.0.0.0/0
INPUT_direct all -- 0.0.0.0/0 0.0.0.0/0
INPUT_ZONES_SOURCE toate -- 0.0.0.0/0 0.0.0.0/0
INPUT_ZONES toate -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Rezolvat
Se părea că aveam și un alt firewall (software) pe VPS-ul meu pe care a trebuit să-l configurez și eu. Când am deschis și porturile din acel firewall, m-am putut autentifica.