Puncte:0

Nu mă pot conecta la brokerul MQTT cloud găzduit de mine

drapel cn

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.

drapel ng
Puteți posta și rezultatul lui `iptabes -L INPUT -n`? BTW: un port închis va da o respingere imediată. Un port cu perete de foc, de obicei, va expira.
Ben Fransen avatar
drapel cn
Multumesc pentru raspuns. Mi-am actualizat postarea cu rezultatul.
Puncte:0
drapel cn

Aș dori să mulțumesc lui @Halfgaar pentru asistență și pentru că a încercat să mă ajute să o rezolv. Între timp, am contactat și asistența de la furnizorul meu de găzduire VPS. Problema era legată de firewall, deși nu de firewall-ul pe care îl explorăm. Există și un firewall software și a trebuit să deschid și porturile acolo (desigur). Nu știam că aveam și un alt firewall activ pe VPS-ul meu. Mă pot autentifica acum la brokerul meu!

Puncte:0
drapel ng

Nu vă legați de interfețele de rețea publică. Dacă faci netstat -n -l -t -p puteți vedea pe ce procese de adresă ascultă.

Do:

ascultător 1883 0.0.0.0

ascultător 8883 0.0.0.0
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
Ben Fransen avatar
drapel cn
Multumesc pentru raspuns. Am încercat să urmăresc, dar tot nu mă pot conecta.Orice sugestii? Mi-am actualizat întrebarea cu rezultatul din interogarea dvs. netstat.
Ben Fransen avatar
drapel cn
Informații suplimentare> M-am zbătut pentru a vedea diferențele cu și fără legarea la 0.0.0.0, dar ieșirea netstat nu pare să deranjeze - și chiar și fără a lega la 0.0.0.0 văd portul de protocol websockets listat cu netstat , cu legarea nu este vizibilă.
drapel ng
@BenFransen există intrări în jurnalul Mosquitto? De asemenea, mi-am editat răspunsul; primul ascultător ar fi trebuit să fie portul 1883.
Ben Fransen avatar
drapel cn
nu există jurnalele pentru încercările eșuate de conectare sau așa ceva. Singurele intrări din jurnal sunt din momentul în care mă abonez și public prin SSH direct pe server (nu din afara serverului).

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.