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

#mqtt #mosquitto #broker

#сеть #mqtt #iot #mosquitto

Вопрос:

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

Что я пробовал на хост-компьютере:

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

Первая ошибка

Вторая ошибка

Информация Netstat

Комментарии:

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

Ответ №1:

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

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

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

 allow_anonymous true 
 

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

Комментарии:

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

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

3. @hardillb — это недавнее обновление полностью испортило мне день — я установил это через homebrew на mac osX, вы знаете, какой файл конфигурации?

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

Ответ №2:

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

 mosquitto -c mosquitto.conf
 

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

 listener 1883 ip_address_of_the_machine(192.168.1.1 etc.)
 

Комментарии:

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

Ответ №3:

По умолчанию брокер 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: подробный режим — включить все типы ведения журнала. Это переопределяет все параметры ведения журнала, указанные в файле конфигурации.

Комментарии:

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

Ответ №4:

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

Ответ №5:

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

 mosquitto -c /mosquitto-no-auth.conf 
 

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

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