HMCCU RPCServer horcht nur auf IPv6 Socket

Begonnen von txdoesker, 10 Dezember 2022, 09:24:33

Vorheriges Thema - Nächstes Thema

txdoesker

Guten Morgen,

ich habe vor kurzem meine FHEM-Umgebung um eine CCU3 erweitert.
Die Hinrichtung zur CCU3 funktioniert, leider bekomme ich keine aktuellen Daten zurück.
Ein Netzwerkmitschnitt zeigte, dass die CCU3 durchaus versucht, sich mir dem RPC-Server auf dem korrekten Port zu verbinden.
Diese Versuche werden jedoch vom Netzwerkstack sofort zurückgewiesen.
Der Grund scheint zu sein, dass der RPC-Server nur auf einem tcp6 socket horcht.
Pid 9760 ist der RPC-Server.

$ uname -a
FreeBSD **** 13.1-RELEASE-p3 FreeBSD 13.1-RELEASE-p3 GENERIC amd64

$ sockstat -4 -6 -l | grep fhem
fhem     perl       9760  6  tcp6   *:7420                *:*
fhem     perl       1204  6  tcp4   *:8083                *:*
fhem     perl       1204  7  tcp4   *:8084                *:*
fhem     perl       1204  8  tcp4   *:8085                *:*
fhem     perl       1204  10 tcp4   *:7072                *:*

Weiß einer der perl GURUs möglicherweise Rat?
Tritt das vielleicht nur unter BSD-Unix auf?

Danke
Michael

Miami

Wie ist den HMCCU konfiguriert?
Was steht von HMCCU im Log?
Ist die Firewall der CCU in der WebUI angepasst/geöffnet?

txdoesker

Guten Morgen,

um meinen Verdacht zu erhärten, hatte ich testweise in der perl Klasse RPC::XML::Server IPv4 erzwungen:

http  = HTTP::Daemon->new(
+          Family => 2,
           ReuseAddr => 1,
           ($host  ? (LocalHost => $host)  : ()),[font=courier][/font]
           ($port  ? (LocalPort => $port)  : ()),
           ($queue ? (Listen    => $queue) : ())
       );


Die 2 bedeutet AF_INET, mir fehlte das perl Wissen, wie man die Konstante AF_INET nutzt, ohne einen Compiler-Fehler zu bekommen.

Damit funktionierten die RPC-Server sofort.
Als neues Problem ergab sich dann "Connection lost, trying a reconnect...".
Das Problem scheint ein Klassiker im Forum zu sein.
Im Forum findet man dann, dass man im WEB Device am longpoll Attribute drehen soll.
Tatsächlich verschwand der Fehler nach Umstellung von websocket auf 1.
Wäre schön zu wissen, warum...

Egal, damit bin ich erst einmal grün.
Falls es eine Möglichkeit gibt, über ein HMCCU Attribut, IPv4 zu erzwingen, wäre ich für eine Info dankbar.
Dann bräuchte ich die offizielle RPC::XML:Server Klasse nicht zu verpatchen.

Gruß
Michael


Wernieman

Native Installation oder Docker?
Kannst Du uns mehr über Dein System sagen?

Sei Vorsichtig mit der Aussage, "nur über v6". Es gibt socket, die werden nur bei v6 angezeigt, hören aber auf beides.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

txdoesker

Hallo,

es handelt sich das aktuelle FreeBSD Release. Weder Docker noch jails sind im Spiel.

  ` `.....---.......--.```   -/    --------------                                                                   
  +o   .--`         /y:`      +.   OS: FreeBSD 13.1-RELEASE-p5 amd64                                                 
   yo`:.            :o      `+-    Uptime: 4 days, 18 hours                                                         
    y/               -/`   -o/     Packages: 693 (pkg)                                                               
   .-                  ::/sy+:.    Shell: sh                                                                         
   /                     `--  /    WM: Openbox                                                                       
  `:                          :`   Theme: Adwaita [GTK3]                                                             
  `:                          :`   Icons: Adwaita [GTK3]                                                             
   /                          /    Terminal: /dev/pts/0                                                             
   .-                        -.    CPU: AMD Ryzen 3 3200G (4) @ 3.600GHz                                             
    --                      -.     GPU: Picasso/Raven 2 [Radeon Vega Series / Radeon Vega Mobile Series]             
     `:`                  `:`      Memory: 1523MiB / 14251MiB                                                       


Folgende perl Module wurden per pkg installiert:

perl5-5.32.1_3                 Practical Extraction and Report Language
p5-Authen-NTLM-1.09_1          Perl5 NTLM authentication module
p5-Authen-SASL-2.16_1          Perl5 module for SASL authentication
p5-CGI-4.54                    Handle Common Gateway Interface requests and responses
p5-Clone-0.45                  Recursively copy Perl datatypes
p5-Device-SerialPort-1.040000_2 Perl5 module for simple serial port control
p5-Digest-HMAC-1.04            Perl5 interface to HMAC Message-Digest Algorithms
p5-Encode-Locale-1.05          Determine the locale encoding
p5-Error-0.17029               Error/exception handling in object-oriented programming style
p5-File-Listing-6.15           Parse directory listings
p5-GSSAPI-0.28_2               Perl extension providing access to the GSSAPIv2 library
p5-HTML-Parser-3.78            Perl5 module for parsing HTML documents
p5-HTML-Tagset-3.20_1          Some useful data table in parsing HTML
p5-HTTP-Cookies-6.10           HTTP Cookie jars
p5-HTTP-Daemon-6.14            Simple HTTP server class
p5-HTTP-Daemon-SSL-1.04_1      Simple http server class with SSL support
p5-HTTP-Date-6.05              Conversion routines for the HTTP protocol date formats
p5-HTTP-Message-6.37           Representation of HTTP style messages
p5-HTTP-Negotiate-6.01_1       Implementation of the HTTP content negotiation algorithm
p5-IO-HTML-1.004               Open an HTML file with automatic charset detection
p5-IO-Interface-1.09_1         Perl extension for access to network card configuration information
p5-IO-Socket-INET6-2.72_1      Perl module with object interface to AF_INET6 domain sockets
p5-IO-Socket-Multicast-1.12_2  Perl module to send and receive multicast messages
p5-IO-Socket-SSL-2.075         Perl5 interface to SSL sockets
p5-LWP-MediaTypes-6.04         Guess media type for a file or a URL
p5-LWP-Protocol-https-6.10     Provide https support for LWP::UserAgent
p5-Lchown-1.01_2               Perl5 module providing access to lchown(2)
p5-Mozilla-CA-20211001         Perl extension for Mozilla CA cert bundle in PEM format
p5-Net-HTTP-6.22               Low-level HTTP client
p5-Net-HTTPS-Any-0.12          Simple HTTPS class using whichever underlying SSL module is available
p5-Net-SSLeay-1.92             Perl5 interface to SSL
p5-RPC-XML-0.82                XML-RPC client and server library for Perl
p5-Socket6-0.29                IPv6 related part of the C socket.h defines and structure manipulators
p5-Term-ReadKey-2.38_1         Perl5 module for simple terminal control
p5-Tie-IxHash-1.23_1           Perl module implementing ordered in-memory associative arrays
p5-TimeDate-2.33,1             Perl5 module containing a better/faster date parser for absolute dates
p5-Try-Tiny-0.31               Minimal try/catch with proper localization of $@
p5-URI-5.12                    Perl5 interface to Uniform Resource Identifier (URI) references
p5-WWW-RobotRules-6.02_1       Database of robots.txt-derived permissions
p5-XML-NamespaceSupport-1.12   Simple generic namespace support class
p5-XML-Parser-2.46             Perl extension interface to James Clark's XML parser, expat
p5-XML-SAX-1.02                Simple API for XML
p5-XML-SAX-Base-1.09           Base class SAX Drivers and Filters
p5-libwww-6.67                 Perl5 library for WWW access
p5-subversion-1.14.2           Perl bindings for Version control system


Ohne meinen Patch in RPC::XML::Server  sieht man per wireshark, dass der Stack per RST,ACK auf den Verbindungswunsch antwortet.

Gruß
Michael

Wernieman

O.K. FreeBSD <> Linux .. da kann ich nichts weiter dazu sagen...

Da hat also Info gefehlt ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

zap

Setze mal das Attribut rpcserveraddr auf die v4 Adresse
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

txdoesker

Moin,

das hatte ich bereits versucht. Hatte nichts geändert.
Ich vermute, dass, wenn nicht explicit angegeben, der Linux-Default v4 ist, während die BSD Welt den Default irgendwann auf v6 geändert hat.
Falls jemand mit BSD-Unix und HMCCUPROC unterwegs ist und keine Probleme hat, würde mich die BSD-Version und die sockstat  Ausgabe  bei laufendem RPC-Server interessieren.
$ uname -a

$ sockstat -4 -6

Gruß
Michael

zap

Du musst nach dem Setzen des Attributs die RPC Server anhalten und neu starten. Hast Du das gemacht?

Ich nehme an, netstat liefert ein ähnliches Bild:

netstat -an | grep LISTEN
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB