Я следовал инструкциям по настройке 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, который я также должен был настроить. Когда я открыл порты и в этом брандмауэре, я смог войти в систему.