Рейтинг:0

Не удалось подключиться к моему собственному облачному брокеру MQTT

флаг cn

Я следовал инструкциям по настройке Mosquitto на CentOS 7, предоставлено цифровым океаном. Я считаю, что большинство вещей настроено правильно, я смог следовать всем инструкциям с некоторым глубоким погружением, чтобы найти решения для некоторых устаревших инструкций. Но я могу подписаться и публиковать сообщения в теме, когда я вошел на свой сервер.

Однако я хочу получить доступ к своему собственному брокеру MQTT с другого клиента, а не с адреса сервера (да). Я не могу подключиться, что бы я ни пытался - я чувствую, что попытка подключения не достигает моего брокера (оба используют онлайн-просмотрщик, например https://hobbyquaker.github.io/mqtt-admin/ и локально установленный, например Проводник MQTT ).

Мой mosquitto.conf довольно прост, и я упростил его еще больше, чтобы разрешить анонимные подключения, но с TLS для обоих веб-сокетов через порт 8083 и (по умолчанию?) mqqt через порт 8883.

Полный файл mosquitto.conf (обновлен после реакции Халфгаара):

allow_anonymous правда
#password_file /etc/mosquitto/passwd (я отключил это, чтобы упростить попытку подключения)
файл log_dest /var/log/mosquitto.log
log_type все

слушатель 1883 локальный хост

слушатель 8883 0.0.0.0
протокол mqtt # добавлен недавно, но пока ничего не делает
файл сертификата /etc/letsencrypt/live/iot.mydomain.com/cert.pem
ca-файл /etc/letsencrypt/live/iot.mydomain.com/chain.pem
ключевой файл /etc/letsencrypt/live/iot.mydomain.com/privkey.pem

слушатель 8083 0.0.0.0
веб-сокеты протокола
файл сертификата /etc/letsencrypt/live/iot.mydomain.com/cert.pem
ca-файл /etc/letsencrypt/live/iot.mydomain.com/chain.pem
ключевой файл /etc/letsencrypt/live/iot.mydomain.com/privkey.pem

Позже я подумал, что файл Mosquitto.conf по умолчанию содержит гораздо больше настроек, и скопировал свежую копию настроек по умолчанию в свой файл конфигурации, а в конец файла добавил упомянутую выше конфигурацию. Итак, теперь у меня есть конфигурация по умолчанию с вышеуказанными переопределениями. Перезапуск службы комаров прошел успешно.

Потом я подумал, что это как-то связано с брандмауэром. Я проверил, открыты ли порты 1883, 8883 и 8083 через firewall-cmd --zone=public --permanent --list-ports и обнаружил, что часть этого вывода действительно сообщается 8883/TCP 8083/TCP 1883/TCP.

Указанный файл журнала не содержит никакой информации о попытках подключения, поэтому я слеп. Может ли кто-нибудь указать мне направление, чтобы найти больше подсказок для решения этой проблемы?

Обновлять После реакции @Halfgaar: Обновил конфиг с привязкой к публичным адресам (лишь повторяю что сказал, понятия не имею), при запуске netstat -n -l -t -p вывод ниже. Несмотря на то, что я не могу подключиться к брокеру со своего ноутбука (или откуда-либо еще).

# netstat -n -l -t -p | комар
TCP 0 0 0.0.0.0:8883 0.0.0.0:* ПРОСЛУШИВАТЬ 2573/комар      
TCP 0 0 127.0.0.1:1883 0.0.0.0:* ПРОСЛУШИВАТЬ 2573/комар      
tcp6 0 0 :::8083 :::* ПРОСЛУШИВАТЬ 2573/комар      
tcp6 0 0 ::1:1883 :::* ПРОСЛУШИВАТЬ 2573/комар 

Обновлять Я также наткнулся на правило брандмауэра это заставило меня задуматься, смогу ли я подключиться к протоколу mqtt, поэтому я также выполнил брандмауэр-cmd --zone=public --permanent --add-service=mqtt и перезагрузил брандмауэр.

Маленький прогресс Я продвинулся вперед от получения ошибки Отключен от сервера к подключить ETIMEDOUT 1.2.3.4:8883 (где 1.2.3.4 — IP моего сервера). Не уверен, что это означает с точки зрения прогресса, но я где-то в другом месте, где я был раньше...

Обновлять Выход для iptables -L ВВОД -n составляет:

# iptables -L ВВОД -n
Сеть INPUT (политика ACCEPT)
целевая защита выбор источника назначения         
ПРИНЯТЬ все -- 0.0.0.0/0 0.0.0.0/0 ctstate СВЯЗАННО, УСТАНОВЛЕНО
ПРИНЯТЬ все -- 0.0.0.0/0 0.0.0.0/0           
INPUT_direct все -- 0.0.0.0/0 0.0.0.0/0           
INPUT_ZONES_SOURCE все -- 0.0.0.0/0 0.0.0.0/0           
INPUT_ZONES все -- 0.0.0.0/0 0.0.0.0/0           
УДАЛИТЬ все -- 0.0.0.0/0 0.0.0.0/0 ctstate НЕДЕЙСТВИТЕЛЬНО
REJECT all -- 0.0.0.0/0 0.0.0.0/0

Решено Похоже, у меня также был другой (программный) брандмауэр на моем VPS, который я также должен был настроить. Когда я открыл порты и в этом брандмауэре, я смог войти в систему.

флаг ng
Можете ли вы также опубликовать вывод `iptabes -L INPUT -n`? Кстати: закрытый порт даст немедленный отказ. Защищенный брандмауэром порт, как правило, истекает по тайм-ауту.
Ben Fransen avatar
флаг cn
Спасибо за ответ. Я обновил свой пост с выводом.
Рейтинг:0
флаг cn

Я хотел бы поблагодарить @Halfgaar за помощь и попытку помочь мне решить эту проблему. Тем временем я также связался со службой поддержки моего хостинг-провайдера VPS. Проблема была связана с брандмауэром, но не с брандмауэром, который мы изучали. Там также установлен программный брандмауэр, и мне пришлось открыть порты и там (конечно). Я не знал, что на моем VPS также был активен другой брандмауэр. Теперь я могу войти в свой брокер!

Рейтинг:0
флаг ng

Вы не привязываетесь к общедоступным сетевым интерфейсам. Если вы делаете netstat -n -l -t -p вы можете видеть, на каком адресе прослушиваются процессы.

Делать:

слушатель 1883 0.0.0.0

слушатель 8883 0.0.0.0
файл сертификата /etc/letsencrypt/live/iot.mydomain.com/cert.pem
ca-файл /etc/letsencrypt/live/iot.mydomain.com/chain.pem
ключевой файл /etc/letsencrypt/live/iot.mydomain.com/privkey.pem

слушатель 8083 0.0.0.0
веб-сокеты протокола
файл сертификата /etc/letsencrypt/live/iot.mydomain.com/cert.pem
ca-файл /etc/letsencrypt/live/iot.mydomain.com/chain.pem
ключевой файл /etc/letsencrypt/live/iot.mydomain.com/privkey.pem
Ben Fransen avatar
флаг cn
Спасибо за ответ. Я пытался следовать, но я все еще не могу подключиться.Какие-либо предложения? Я обновил свой вопрос выводом вашего запроса netstat.
Ben Fransen avatar
флаг cn
Дополнительная информация> Я возился, чтобы увидеть различия с привязкой к 0.0.0.0 и без нее, но вывод netstat, похоже, не беспокоит - и даже без привязки к 0.0.0.0 я вижу порт протокола websockets, указанный в netstat , с привязкой его не видно.
флаг ng
@BenFransen есть записи в журнале Mosquitto? Кроме того, я отредактировал свой ответ; первым слушателем должен был быть порт 1883.
Ben Fransen avatar
флаг cn
нет никаких журналов для неудачных попыток подключения или около того. Единственные записи в журнале связаны с тем, что я подписываюсь и публикую через SSH непосредственно на сервере (а не снаружи сервера).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.