Добрый день.
Исследую возможность подключения к WB7 Web UI через ipv6. Адрес ipv6 получаю через интерфейс teredo.
Добился работы nginx через ipv6
Интерфейс грузится, но есть ошибка “Не удалось подключиться к … :18883…” и содержимое далее не выводится.
Выяснил, что порт 18883 использует websockets протокол службы mosquitto.
Настраиваю mosquitto.conf, чтобы слушал на интерфейсах ipv6, файл listeners.conf
listener 1883
listener 18883
protocol websockets
(по руководству mosquitto.conf, если не указать 0.0.0.0 после номера порта, то слушает на интерфйсах ipv4 и ipv6)
Действительно, порт 1883 начинает прослушиваться на интерфейсе ipv6, но порт 18883, на который ругается Web UI - нет.
netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1193/nginx: master
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 1155/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1061/sshd
tcp 0 0 0.0.0.0:502 0.0.0.0:* LISTEN 1356/wb-mqtt-mbgate
tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN 11862/mosquitto
tcp 0 0 0.0.0.0:18883 0.0.0.0:* LISTEN 11862/mosquitto
tcp 0 0 0.0.0.0:4840 0.0.0.0:* LISTEN 1080/wb-mqtt-opcua
tcp6 0 0 :::80 :::* LISTEN 1193/nginx: master
tcp6 0 0 :::53 :::* LISTEN 1155/dnsmasq
tcp6 0 0 :::22 :::* LISTEN 1061/sshd
tcp6 0 0 :::1883 :::* LISTEN 11862/mosquitto
tcp6 0 0 :::6720 :::* LISTEN 1/init
tcp6 0 0 :::4840 :::* LISTEN 1080/wb-mqtt-opcua
Отладка strace подтверждает, что для порта 1883 делается bind() с флагом AF_INET6, а для порта 18883 - только с AF_INET.
Для вебсокетов служба mosquitto использует libwebsockets
ldd /usr/sbin/mosquitto | grep web
libwebsockets.so.8 => /usr/lib/arm-linux-gnueabihf/libwebsockets.so.8 (0xb6c6e000)
Похоже, всё упирается в эту библиотеку. Можно ли выяснить, не отключена ли поддержка IPV6 в этой библиотеке для WB7? Или может mosquitto собран с отключённой опцией IPV6 в части websockets?