Mosquitto: запуск только в локальном режиме

У меня есть виртуальная машина, которая должна быть хостом, который может получать и отправлять данные. Первое изображение - это ошибка, которую я получаю на своей основной машине (с которой я пытаюсь отправить данные). Вторая картинка — это журнал комаров на моей виртуальной машине. Также я использую конфигурацию по умолчанию, которая, насколько я знаю, не может вызвать эти проблемы, по крайней мере, из того, что я видел в других примерах. Я очень мало понимаю, как все это работает, поэтому любая помощь приветствуется.

Что я пробовал на хост-машине:

  1. Отключение защитника Windows
  2. Добавление правил брандмауэра для «mosquitto.exe»
  3. Установка mosquitto на машину с linux

Mosquitto: запуск только в локальном режиме

Mosquitto: запуск только в локальном режиме

Mosquitto: запуск только в локальном режиме

Пожалуйста, не размещайте изображения текста!! Просто запости сюда текст ошибки. Во-вторых, это сайт для решения проблем с кодированием, и я не вижу здесь вообще никакого кода… измените его, иначе кто-то придет и закроет ваш пост.

JD Allen 13.12.2020 18:43
Как создать страницу входа в систему с помощью HTML с использованием CSS
Как создать страницу входа в систему с помощью HTML с использованием CSS
Создание страницы входа в систему является важной частью создания веб-сайта или приложения, требующего аутентификации пользователя. Простую страницу...
17
1
66 092
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Начиная с выпуска Mosquitto версии 2.0.0 (у вас установлена ​​версия 2.0.2), конфигурация по умолчанию будет привязана только к localhost в качестве перехода к более безопасному положению по умолчанию.

Если вы хотите иметь доступ к брокеру с других компьютеров, вам нужно будет явно отредактировать файлы конфигурации, чтобы либо добавить новый listener, который привязывается к внешнему IP-адресу (или 0.0.0.0), либо добавить запись bind для прослушивателя по умолчанию. .

По умолчанию он также разрешает только анонимные подключения (без имени пользователя и пароля) с локального хоста, чтобы разрешить анонимное удаленное добавление:

allow_anonymous true
listener 1883

Более подробную информацию можно найти в примечаниях к выпуску 2.0 здесь

Привет! Спасибо, что так быстро ответили и исправили мой пост. Я не могу проголосовать за ваш пост, но если бы я мог, я бы это сделал. ;) Я решил не заморачиваться с файлом конфигурации и просто скачать более старую версию mosquitto. Если бы у меня было больше времени, я бы покопался в конфигурационном файле и фактически исправил его таким образом.

FlasH 13.12.2020 19:19

Это просто случай добавления bind_interface device или bind_address ip_address в файл конфигурации.

hardillb 13.12.2020 19:37

@hardillb - это недавнее обновление полностью испортило мне день - я установил его через доморощенный на Mac OSX, вы знаете, какой файл конфигурации?

Adam Jenkins 20.12.2020 17:17

Это было серьезное изменение номера версии, поэтому ожидалось, что что-то сломается. У меня нет Mac, поэтому я могу только догадываться, что он может быть ниже /usr/local/etc (как описано в выводе журнала, который вы отправили на свой вопрос)

hardillb 20.12.2020 17:44

слушатель 1883 также должен быть добавлен

Randy Welt 31.12.2022 18:19

@RandyWelt, что ясно из второго абзаца

hardillb 31.12.2022 18:31

Я обнаружил, что мне нужно добавить не только bind_address ip_address, но и установить allow_anonymous true, прежде чем устройства смогут успешно подключаться к MQTT. Конечно, я понимаю, что лучшим вариантом было бы установить пользователя и пароль на каждом устройстве. Но это следующий шаг после того, как все действительно заработает в минимальной конфигурации.

Вы должны бежать с

mosquitto -c mosquitto.conf

mosquitto.conf, который существует в той же папке, что и исполняемый файл (C:\Program Files\mosquitto и т. д.), должен включать следующую строку.

listener 1883 ip_address_of_the_machine(192.168.1.1 etc.)

Спасибо! Везде говорится об определении прослушивателя в mosquitto.conf, но это первое, с чем я столкнулся, когда нужно указать файл в качестве аргумента.

vincebel 23.12.2021 17:13

вы можете запустить его с включенным конфигурационным файлом «без аутентификации» следующим образом:

mosquitto -c /mosquitto-no-auth.conf 

У меня была такая же проблема при запуске внутри контейнера докеров (созданного с помощью docker-compose). В файле docker-compose.yml это делается с помощью:

command: mosquitto -c /mosquitto-no-auth.conf 

По умолчанию брокер Mosquitto будет принимать подключения только от клиентов на локальном компьютере (сервере, на котором размещен брокер). Поэтому для вашего экземпляра Mosquitto необходимо использовать пользовательскую конфигурацию, чтобы принимать подключения от удаленных клиентов.

  1. На компьютере с Windows запустите текстовый редактор от имени администратора и вставьте следующий текст:
listener 1883
allow_anonymous true
  1. Это создает прослушиватель на порту 1883 и разрешает анонимные подключения. По умолчанию количество соединений бесконечно. Сохраните файл в «C:\Program Files\Mosquitto», используя имя файла с расширением «.conf», например «your_conf_file.conf».

  2. Откройте окно терминала и перейдите в каталог mosquitto. Выполните следующую команду:

mosquitto -v -c your_conf_file.conf

где

-c : указать файл конфигурации брокера.

-v : подробный режим — включить все типы ведения журнала. Это отменяет любые параметры ведения журнала, указанные в файле конфигурации.

По какой-то причине, когда я запускаю это, я получаю сообщение об ошибке mosquitto -c /etc/mosquitto/conf.d/mosquitto.conf дает значение Duplicate pid_file в конфигурации, и ему не нравятся строки 6 и 13. Эти две строки были включены в файле конфигурации по умолчанию. Просто pid_file и include_dir. Понятия не имею, что я еще делаю не так.

Gallaugher 20.11.2021 03:00

Для тех, кто использует mosquitto с доморощенным на Mac.


Добавление этих двух строк в /opt/homebrew/Cellar/mosquitto/2.0.15/etc/mosquitto/mosquitto.conf исправило мою проблему.

allow_anonymous true 
listener 1883

Другие вопросы по теме