• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь установка mosquitto на VPS сервер.

mercer07

New member
День Добрый.
Требуется помощь по настройке брокера на виртуальном сервере.
Тип ос Ubuntu 16.04LTS.
Сам брокер установлен и в Localhost между терминалами сообщения уходят.
Вопрос- как подключится к нему из вне?
Что и как нужно сделать.
Спасибо.
 

Вложения

  • 1.6 KB Просмотры: 11
Последнее редактирование:

Алексей.

Active member
mercer07, Судя по логу, москита принимает соединения с любого интерфейса, не ограничен только локалхостом.
Если порты 1883 на ип в4 в6 не закрыты фаерволом то какие проблемы такими же как Вы говорите "терминалами" отправить сообщения из вне?
Когда выполняете из вне mosquitto_pub или mosquitto_sub что происходит?
 

mercer07

New member
mercer07, Судя по логу, москита принимает соединения с любого интерфейса, не ограничен только локалхостом.
Если порты 1883 на ип в4 в6 не закрыты фаерволом то какие проблемы такими же как Вы говорите "терминалами" отправить сообщения из вне?
Когда выполняете из вне mosquitto_pub или mosquitto_sub что происходит?
День Добрый.
Проблема в том, что я как раз и не могу подключится к нему, кроме как через терминал.
При попытке подключится из вне получаю ошибки, то недоступность брокера либо неправильный логин или пароль ( allow_anonymous false
password_file /etc/mosquitto/passwd) пока не редактировал и не устанавливал ограничений подключений к брокеру.

При установке mosquitto обычно по умолчанию устанавливается порт и адрес подключения к нему что то вроде 127.0.0.1 в народе называемое localhost и порт 1883, интересует где скрываются данные настройки?
Просто я думаю что проблема как раз в этом, что нужно указать адрес моего хоста в этих настройках, или я ошибаюсь?
 

Алексей.

Active member
то недоступность брокера либо неправильный логин или пароль ( allow_anonymous false
password_file /etc/mosquitto/passwd) пока не редактировал и не устанавливал ограничений подключений к брокеру.
allow_anonymous false - как раз ограничивает анонимусов, если пользователи не заведены и анонимусам вход запрещен, маските нет смысла работать, потому что, пользователей нет и анонимусам нельзя, получаете "то недоступность брокера", можете результаты увидеть в /var/log/mosquitto/mosquitto.log

редактировать /etc/mosquitto/passwd не стоит, для этого есть специальная утилита
root@169285:~# mosquitto_passwd -c /etc/mosquitto/passwd user1
Password:
Reenter password:

по умолчанию устанавливается порт и адрес подключения к нему что то вроде 127.0.0.1 в народе называемое localhost и порт 1883,
не так, по умолчанию порт открыт на всех интерфейсах (я пробовал на mosquitto version 1.4.8), Вы можете ограничить, указав в конфиге
listener 1883 localhost

после изменения настроек (или после добавления пользователей) не забывайте перезапускать маскиту
systemctl restart mosquitto

маны по маските вполне адекватные, попробуйте почитать
 
Последнее редактирование:

mercer07

New member
allow_anonymous false - как раз ограничивает анонимусов, если пользователи не заведены и анонимусам вход запрещен, маските нет смысла работать, потому что, пользователей нет и анонимусам нельзя, получаете "то недоступность брокера", можете результаты увидеть в /var/log/mosquitto/mosquitto.log

редактировать /etc/mosquitto/passwd не стоит, для этого есть специальная утилита
root@169285:~# mosquitto_passwd -c /etc/mosquitto/passwd user1
Password:
Reenter password:
Пользователя я при установке так установил.
Файрвол тоже и редактировал и отключал- не помогает.
маны по маските вполне адекватные, попробуйте почитать
Насчёт инструкций, с вами согласен, но к сожалению нет инфы как в моём конкретном случае все это настраивается.
При подключении из вне код ошибки в файле.
 

Вложения

Алексей.

Active member
Вы уверены что порт 1883 открыт снаружи, при попытки установления соединения с Вашим сервером простым телнетом получаю ошибку
telnet: Unable to connect to remote host: No route to host

Я установил брокера на выделенном сервере, никаких настроек не делал совсем, на локальном ПК установил пакет mosquitto-clients
на локальном ПК в одном терминале запустил подписчика
mosquitto_sub -h uspd.su -t my/topic
а в другом терминале выполнил публикацию
mosquitto_pub -h uspd.su -t my/topic -m "test"
в первом терминале увидел результат
alex@vb-u16:~$ mosquitto_sub -h uspd.su -t my/topic
test
^C
 

mercer07

New member
Вы уверены что порт 1883 открыт снаружи, при попытки установления соединения с Вашим сервером простым телнетом получаю ошибку
telnet: Unable to connect to remote host: No route to host

Я установил брокера на выделенном сервере, никаких настроек не делал совсем, на локальном ПК установил пакет mosquitto-clients
на локальном ПК в одном терминале запустил подписчика
mosquitto_sub -h uspd.su -t my/topic
а в другом терминале выполнил публикацию
mosquitto_pub -h uspd.su -t my/topic -m "test"
в первом терминале увидел результат
alex@vb-u16:~$ mosquitto_sub -h uspd.su -t my/topic
test
^C
День Добрый.
Я единственное использовал не телнет подключение,а через SSH терминал ,подписываюсь на топик в терминале (андроид приложение) либо на компе pytty и отправляю топик с первого терминала.
В настройках сервера, не могу сказать включено подключение по телнет, навсякий случай активировал входящий(iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT)

И вопросик: пытаюсь активировать NAT пакеты в ответ получаю
root@mqtt-iot:~# iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE
iptables v1.6.0: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
root@mqtt-iot:~# or your kernel needs to be upgraded

И по установке, изначально установил так
sudo wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list
sudo apt-get install mosquitto
sudo apt-get install mosquitto mosquitto-clients

Спасибо.
 

Алексей.

Active member
Я единственное использовал не телнет подключение,а через SSH терминал ,подписываюсь на топик в терминале (андроид приложение) либо на компе pytty и отправляю топик с первого терминала.
Вам ssh нужен когда вы выполняете что либо на сервере, например настраиваете его, или там на сервере как Вы говорите, публикуете топик для проверки. После настроек не ssh уже и не требуется.
На локальном ПК(или андроиде) пробуете выполнить подписку или публикацию и получаете ошибку потому как соединения нет.

В настройках сервера, не могу сказать включено подключение по телнет, навсякий случай активировал входящий(iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT)
Настройка телнет соединения на сервере вообще Вам не потребуется, зачем на сервере открывать не защищенный телнет если есть ssh.
telnet - есть такое ПО :) которое позволяет устанавливать tcp соединения, отправлять и принимать данные, я его использовал только для проверки соединения с вашим сервером с портом 1883, если Вы пользуетесь putty, то при выборе соединения можно выбрать Connection Type - Telnet, ввести адрес и порт и нажать кнопку Open, если увидите Network error: Connection refused, значит соединения нет.

И вопросик: пытаюсь активировать NAT пакеты в ответ получаю
root@mqtt-iot:~# iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE
iptables v1.6.0: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
root@mqtt-iot:~# or your kernel needs to be upgraded
Вы выбрали наверно у "джино" виртуализацию OpenVZ, в которой одно линукс ядро копируется во все контейнеры (это особенность данной виртуализации, хостер тут ни причем), и часть модулей ядра за ненадобностью не установлена, ничего удивительного в ответе что таблица nat ядром не поддерживается и вряд ли хостер для Вас будет добавлять недостающие модули в ядро. А зачем Вы в nat то полезли? Хостер скорее всего режет соединения до вашего сервера, посмотрите внимательно их "Вопросы и ответы".

И по установке, изначально установил так
sudo wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list
sudo apt-get install mosquitto
sudo apt-get install mosquitto mosquitto-clients
Странно??? Для чего подключать маскитовский реп, маскита есть в официальных репах убунты.
 
Последнее редактирование:

mercer07

New member
Вам ssh нужен когда вы выполняете что либо на сервере, например настраиваете его, или там на сервере как Вы говорите, публикуете топик для проверки. После настроек не ssh уже и не требуется.
На локальном ПК(или андроиде) пробуете выполнить подписку или публикацию и получаете ошибку потому как соединения нет.

Совершенно верно, я тем не менее склоняюсь всеже к тому что где-то в настройках нужно изменить адрес у москиты, так и выходит что она слушает локалхост на порту1883, из за этого при подключении из вне и получается ошибка.А вот если бы был указан адрес домена, за место локала то он и слушал бы его.
Жду железяку оранж, попробую на ней поэкспериментировать.


Настройка телнет соединения на сервере вообще Вам не потребуется, зачем на сервере открывать не защищенный телнет если есть ssh.
telnet - есть такое ПО :) которое позволяет устанавливать tcp соединения, отправлять и принимать данные, я его использовал только для проверки соединения с вашим сервером с портом 1883, если Вы пользуетесь putty, то при выборе соединения можно выбрать Connection Type - Telnet, ввести адрес и порт и нажать кнопку Open, если увидите Network error: Connection refused, значит соединения нет.
По поводу телнет, по 23 порту вывожу от датчиков показания, отладки и как резерв.


Вы выбрали наверно у "джино" виртуализацию OpenVZ, в которой одно линукс ядро копируется во все контейнеры (это особенность данной виртуализации, хостер тут ни причем), и часть модулей ядра за ненадобностью не установлена, ничего удивительного в ответе что таблица nat ядром не поддерживается и вряд ли хостер для Вас будет добавлять недостающие модули в ядро. А зачем Вы в nat то полезли? Хостер скорее всего режет соединения до вашего сервера, посмотрите внимательно их "Вопросы и ответы".
Я много чего у них уже добавил,у них много чего не хватает для полноценной работы.
Обычный VPS, домен mqtt-iot.ru настроен на переадресации на этот сервер

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

Алексей.

Active member
mercer07,
Если Вам ещё интересен этот вопрос, спросил я у хостера про ограничения на открытые порты на виртуализации OpenVZ,
если подключен выделенный IP, у Вас есть доступ ко всем портам,
если не подключен, то локально можно настроить любой порт, пробросить для доступа из вне можно три порта.
 

mercer07

New member
mercer07,
Если Вам ещё интересен этот вопрос, спросил я у хостера про ограничения на открытые порты на виртуализации OpenVZ,
если подключен выделенный IP, у Вас есть доступ ко всем портам,
если не подключен, то локально можно настроить любой порт, пробросить для доступа из вне можно три порта.
Добрый день.
Спасибо огромное вам за консультации.
(Тоже вопрос в поддержку написал пока не ответили.)
Буду настраивать порты.
Ещё раз Спасибо вам за помощь.
 
Сверху Снизу