MQTT to Modbus TCP

Добрый день. У меня есть необходимость опрашивать контроллер по IPv6 адресу. Как его настроить в сетевых настройках я знаю, но вот вопрос как его настроить в самой программе, в строчку с IP можно ввести сразу IPv6?

Добрый день. У вас контроллер имеет более одного адреса?
Или вы хотите чтобы mbgate отвечал только IPv6?

IPv6 один. Вопрос в том что будет ли контроллер отвечать на запросы по IPv6, если в веб интерфейсе в настройках MQTT to modbus в строке IP будет стоять звездочка? Или как настроить это.
А еще вопрос, с MQTT можно работать по IPv6?
Проблема в том что в нашей сети у меня получиться получить доступ к контроллеру только по IPv6.

mosquitto By default, a listener will attempt to listen on all supported IP protocol versions
То есть да, слушает и отвечает.

Не получилось подключиться к MQTT по ipv6. Изначально он слушает только IPv4, так как в конфиге listener настроен на 1883 0.0.0.0 и 18883 0.0.0.0 . Если нолики удалить, то начинает слушать и ipv6. Но главная проблема в том что не веб интерфейс контроллера, и мой веб интерфейс не работает. Проверял ping порта командой “telnet fe80::2618:c6ff:fe77:ce6d 18883”, все работает (без вебсокета), то есть если с другого брокера будет работать, а с включенным протоколом вебсокетом должно работать в браузере. но выдает ошибку browserMqtt.js:5178 WebSocket connection to ‘ws://[fe80::2618:c6ff:fe77:ce6d]:18883/’ failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT.

Сервер который установленный на контроллере тоже по умолчанию не слушает IPv6, этот вопрос решается с помощью внесения в конфиг дополнительных параметров, и сам интерфейс загружается, но по MQTT выдает ту же ошибку что и выше выложил.
Настойки которые добавляю в конфиг
сервера - server {
listen 80 default; Слушаем IPv4 порт 80
listen [::]:80 default; - Слушаем IPv6 порт 80
location / {
root /var/www;
}
}
Я думаю что это можно было б добавить в настройки по умолчанию.

Попробуйте указать в настройках интерфейса тоже порт 80 вместо 18883.

Без изменений. Мне кажется что где-то не хватает какой-то настройки
Через обычный ip все работает.

Так, воспроизведу.
Но в nginx думаю надо добавить прокси для ipv6 тут:

location /mqtt {
    proxy_pass http://localhost:18883;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection upgrade;

То есть именно эта часть конфига при запросе /mqtt проксит его, запрос на 18883

Вообщем частично разобрался. Удали все настройки которые я вносил из конфига сервера.
Нашел конфиг в котором прописаны настройки по умолчанию, и нашел там строчку которая отвечает за слушатель ipv6. Когда я раскомментировал строчку IPv6, у меня все заработало через 80 порт, но ipv4 совсем перестал работать, даже веб интерфейс не открывается. Когда я раскомментировал и строчку IPv4 - то веб интерфейс по IPv4 так и не заработал, а от IPv6 - сам интерфейс открылся, но MQTT не работает.
Решение уже близко)

По началу не мог подключить свой веб интерфейс через IPv6 и порт 80. Но покопался, и нашел причину. У моего клиента по умолчанию патч стоял “/”, а так как я работаю через прокси, то естественно должен быть /mqtt Вот настройки которые я установил
const options = {
hostname: ‘[fe80:0000:0000:0000:0000:ce6d]’,
protocol: “mqtt”,
path: “/mqtt”,
port: 80
};

1 лайк