Moin,
ich habe eine Freebsd Jail mit einem installiertem FHEM 6.4
Die Verbindung zum mosquitto MQTT Server funktioniert über IPv6 nicht.
Die Applikation sendet aus FHEM keine Daten via Perl aus der FHEM Instanz an mosquitto raus.
Der mosquitto Server ist mittels Console und mosquitto_sub erreichbar und funktioniert.
Wo der Fehler aktuell liegt weiss ich nicht
Benötigte Perl Module sind installiert.
Endpoints:
https://fhem2.089.at/fhem (Mit User Zertifikat geschützt)
mqtt://mqttext.089.at:1883 (mit User/Pazzword geschützt)
1) Verbindung OK über IPv6(console): mosquitto_sub -L mqtt://meinsecretuser:mein28StelligesPazzWordistGeheim@mqttext.089.at:1883/#
Verbindung sichtbar in den Logfiles
2) FHEM selbst ist erreichbar und funktioniert - root@fhem:/opt/fhem # /opt/fhem/fhem.pl -d fhem.cfg
auch hier viele Log Einträge
3) Fehlerbild im Logfile beim Aufruf des Connects zu MQTT :
Origin: https://fhem2.089.at
Sec-WebSocket-Version: 13
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: en-US,en;q=0.9,de-DE;q=0.8,de;q=0.7
2025.12.26 02:04:28 5: HttpUtils url=http://mqttext.089.at:1883/ NonBlocking via http
2025.12.26 02:04:28 4: HttpUtils: gethostbyname mqttext.089.at failed
Bereits gesetzt: attr global useInet6 1
Bereits installiert mittels cpan -i <module>: Die Perl-Pakete IO::Socket::IP oder IO::Socket::INET6 müssen auf deinem Betriebssystem installiert sein
Service / Server natürlich auch neugestartet
Auszug aus FHEM:
defmod MQTT24_Broker MQTT2_CLIENT mqttext.089.at:1883
attr MQTT24_Broker clientId fhem2
attr MQTT24_Broker room Pluffi
attr MQTT24_Broker username meinsecretuser
setstate MQTT24_Broker disconnected
setstate MQTT24_Broker 2025-12-26 02:42:06 state disconnected
KI sagt:
Die von dir genutzte Funktion gethostbyname ist veraltet (deprecated). Sie stammt aus einer Zeit, als es nur IPv4 gab.
Der Fehler: gethostbyname kann konstruktionsbedingt nur IPv4-Adressen (A-Records) verarbeiten. Wenn dein Ziel mqttext.089.at jedoch über eine IPv6-Adresse (AAAA-Record) angesprochen werden soll oder dein System IPv6 bevorzugt, gibt die Funktion NULL zurück – die Auflösung schlägt fehl.
Die Ursache: Moderne Netzwerke nutzen getaddrinfo, das sowohl IPv4 als auch IPv6 versteht. Dein Perl-Modul (HttpUtils) nutzt im Hintergrund aber noch die alte Methode.
Neben Der Perl Version v5.42.0 sind weitere Module installiert:
Algorithm::Diff
Archive::Zip
CPAN::Requirements::Dynamic
Capture::Tiny
Compress::Raw::Bzip2
Compress::Raw::Zlib
DBD::MariaDB
DBI
Devel::CheckLib
Devel::Hide
ExtUtils::Config
ExtUtils::HasCompiler
ExtUtils::Helpers
ExtUtils::InstallPaths
ExtUtils::ParseXS
FFI::CheckLib
File::Fetch
File::HomeDir
File::Temp
File::Which
File::chdir
Filter::Util::Call
Git
HTTP::CookieJar
HTTP::Message
IO::Compress
LWP
List::Util
MIME::Charset
Math::BigInt
Mock::Config
Module::CoreList
Path::Tiny
Pod::Simple
Proc::ProcessTable
Socket6
Spiffy
Term::ReadKey
Term::ReadLine
Term::Size::Any
Term::Size::Perl
Term::Table
Test::Base
Test::Deep
Test::FailWarnings
Test::Fatal
Test::Harness
Test::LeakTrace
Test::MockRandom
Test::Needs
Test::Requires
Test::RequiresInternet
Test::Simple
Test::Warnings
Test::YAML
Text::Balanced
Text::Diff
Text::Glob
Time::Piece
URI
Unicode::LineBreak
Unicode::UTF8
YAML
experimental
Hast Du in der commandref schon die Beschreibung zum globalen Attribut "dnsserver" gelesen?
Vielleicht hilft das schon weiter.
Zitat von: betateilchen am 26 Dezember 2025, 10:09:46Hast Du in der commandref schon die Beschreibung zum globalen Attribut "dnsserver" gelesen?
Vielleicht hilft das schon weiter.
Hilft leider auch nicht