[Homebridge OS] Kann die GUI vom pihole nicht mehr erreichen

Hallo,

alle paar Wochen mal aktualisiere ich mein Pi indem ich folgenden Befehl über die Konsole eingebe:

apt update && apt upgrade -y && pihole -up

Dies habe ich gestern getan und danach den Pi mit reboot neugestartet.

Gerade wollte ich eine Webseite, die gesperrt war, entblocken. Also im Browser die Adresse eingegeben und werde von Firefox auf ein mögliches Risiko hingewiesen und auf den Login Bildschirm von meiner Homebridge weitergeleitet. Häh?!

In der Fritzbox habe ich nachgeguckt, der DNS rebind Schutz mit pi.hole ist noch aktiv.

In meiner Homebridge taucht im Homebridge Protokolll folgende Fehlermeldung auf:

[21/03/2022, 11:04:55] [Pihole] Error: self signed certificate
    at TLSSocket.onConnectSecure (node:_tls_wrap:1530:34)
    at TLSSocket.emit (node:events:526:28)
    at TLSSocket._finishInit (node:_tls_wrap:944:8)
    at TLSWrap.ssl.onhandshakedone (node:_tls_wrap:725:12) {
  code: 'DEPTH_ZERO_SELF_SIGNED_CERT',
  config: {
    url: 'api.php',
    method: 'get',
    headers: {
      Accept: 'application/json, text/plain, */*',
      'User-Agent': 'axios/0.21.4'
    },
    params: { status: 1 },
    baseURL: 'http://localhost:80/admin/',
    transformRequest: [ [Function: transformRequest] ],
    transformResponse: [ [Function: transformResponse] ],
    timeout: 0,
    adapter: [Function: httpAdapter],
    responseType: 'json',
    xsrfCookieName: 'XSRF-TOKEN',
    xsrfHeaderName: 'X-XSRF-TOKEN',
    maxContentLength: -1,
    maxBodyLength: -1,
    httpsAgent: Agent {
      _events: [Object: null prototype],
      _eventsCount: 2,
      _maxListeners: undefined,
      defaultPort: 443,
      protocol: 'https:',
      options: [Object: null prototype],
      requests: [Object: null prototype] {},
      sockets: [Object: null prototype],
      freeSockets: [Object: null prototype] {},
      keepAliveMsecs: 1000,
      keepAlive: false,
      maxSockets: Infinity,
      maxFreeSockets: 256,
      scheduling: 'lifo',
      maxTotalSockets: Infinity,
      totalSocketCount: 1,
      maxCachedSessions: 100,
      _sessionCache: [Object],
      [Symbol(kCapture)]: false
    },
    validateStatus: [Function: validateStatus],
    transitional: {
      silentJSONParsing: true,
      forcedJSONParsing: true,
      clarifyTimeoutError: false
    },
    data: undefined
  },
  request: <ref *1> Writable {
    _writableState: WritableState {
      objectMode: false,
      highWaterMark: 16384,
      finalCalled: false,
      needDrain: false,
      ending: false,
      ended: false,
      finished: false,
      destroyed: false,
      decodeStrings: true,
      defaultEncoding: 'utf8',
      length: 0,
      writing: false,
      corked: 0,
      sync: true,
      bufferProcessing: false,
      onwrite: [Function: bound onwrite],
      writecb: null,
      writelen: 0,
      afterWriteTickInfo: null,
      buffered: [],
      bufferedIndex: 0,
      allBuffers: true,
      allNoop: true,
      pendingcb: 0,
      constructed: true,
      prefinished: false,
      errorEmitted: false,
      emitClose: true,
      autoDestroy: true,
      errored: null,
      closed: false,
      closeEmitted: false,
      [Symbol(kOnFinished)]: []
    },
    _events: [Object: null prototype] {
      response: [Function: handleResponse],
      error: [Function: handleRequestError]
    },
    _eventsCount: 2,
    _maxListeners: undefined,
    _options: {
      maxRedirects: 21,
      maxBodyLength: 10485760,
      protocol: 'https:',
      path: '/admin/api.php?status=1',
      method: 'GET',
      headers: [Object],
      agent: [Agent],
      agents: [Object],
      auth: null,
      hostname: 'localhost',
      port: null,
      nativeProtocols: [Object],
      pathname: '/admin/api.php',
      search: '?status=1',
      slashes: true,
      host: 'localhost',
      hash: null,
      query: 'status=1',
      href: 'https://localhost/admin/api.php?status=1'
    },
    _ended: true,
    _ending: true,
    _redirectCount: 1,
    _redirects: [],
    _requestBodyLength: 0,
    _requestBodyBuffers: [],
    _onNativeResponse: [Function (anonymous)],
    _currentRequest: ClientRequest {
      _events: [Object: null prototype],
      _eventsCount: 7,
      _maxListeners: undefined,
      outputData: [],
      outputSize: 0,
      writable: true,
      destroyed: false,
      _last: true,
      chunkedEncoding: false,
      shouldKeepAlive: false,
      maxRequestsOnConnectionReached: false,
      _defaultKeepAlive: true,
      useChunkedEncodingByDefault: false,
      sendDate: false,
      _removedConnection: false,
      _removedContLen: false,
      _removedTE: false,
      _contentLength: 0,
      _hasBody: true,
      _trailer: '',
      finished: true,
      _headerSent: true,
      _closed: false,
      socket: [TLSSocket],
      _header: 'GET /admin/api.php?status=1 HTTP/1.1\r\n' +
        'Accept: application/json, text/plain, */*\r\n' +
        'User-Agent: axios/0.21.4\r\n' +
        'Host: localhost\r\n' +
        'Connection: close\r\n' +
        '\r\n',
      _keepAliveTimeout: 0,
      _onPendingData: [Function: nop],
      agent: [Agent],
      socketPath: undefined,
      method: 'GET',
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      path: '/admin/api.php?status=1',
      _ended: false,
      res: null,
      aborted: false,
      timeoutCb: null,
      upgradeOrConnect: false,
      parser: null,
      maxHeadersCount: null,
      reusedSocket: false,
      host: 'localhost',
      protocol: 'https:',
      _redirectable: [Circular *1],
      [Symbol(kCapture)]: false,
      [Symbol(kNeedDrain)]: false,
      [Symbol(corked)]: 0,
      [Symbol(kOutHeaders)]: [Object: null prototype]
    },
    _currentUrl: 'https://localhost/admin/api.php?status=1',
    _isRedirect: true,
    [Symbol(kCapture)]: false
  },
  response: undefined,
  isAxiosError: true,
  toJSON: [Function: toJSON]
}

Ich habe aber nichts mit SSL oder änlichem eingestellt.

Hat jemand eine Ahnung, was ich machen muss, um diesen "Fehler" zu beheben?

Pi-holes lighttpd web server ist nur für HTTP-Anfragen konfiguriert.

Wenn Du über HTTPS zugreifen möchtest, müsstest Du das eigenständig konfigurieren und Dich um die Beschaffung der entsprechenden SSL-Zertifikate kümmern.

Ok, aber ich hab da nichts eingestellt. Ich will das System gar nicht mit SSL betreiben.

Ich vermute, das durch den Update der Programme die SSL Schnittstelle aktiviert wurde.

Kann ich das irgendwie rückgängig machen?

Der abgesetzte Request ist in Deinem Homebridge-Log definitiv als HTTPS registriert.
Hast Du denn mal versucht, gezielt nur über HTTP zuzugreifen?

Ja, dann werde ich automatisch zum Login Bildschirm der Homebridge weitergeleitet.
und die Adresszeile ändert sich automatisch zu https um

Das klingt so, als würde Dein Browser das Protokoll auf HTTPS ändern, und da Pi-holes lighttpd nicht auf Port 443 lauscht, landen die Requests dadurch bei Deinem Homebridge-Webserver.

Oder hast Du Pi-holes Web-Oberfläche vielleicht auf dem Webserver Deines Homebridge-Webservers installiert?

In beiden Fällen läge die Lösung des Problems ausserhalb von Pi-hole.

Öhm, da bin ich mir gerade nicht sicher.

Der Pi läuft auf Homebridge OS und darauf habe ich pihole mit unbound installiert.
Das lief jetzt mehrere Wochen, nein, Monate fehlerfrei. Bis quasi gestern.

Und da Webseiten noch geblockt werden, läuft pihole auch noch. Nur ich komme auf die Gui nicht drauf.

In den Homebridge OS Settings habe ich auch bereits nachgesehen, da ist SSL deaktiviert.

Der HTTPS-Request wird von Deinem Browser initiiert, entweder direkt durch Eingabe der URL, oder durch nachträgliche Modifikation durch ein entsprechendes Plugin bzw. ein Feature des verwendeten Browsers, oder durch ein URL-Redirect Deines Homebridge-Servers.

Auf welchem Webserver läuft die Homebridge-Oberfläche denn?
Und auf welchem Webserver läuft Pi-hole?

Ich bin mir gerade nicht sicher, was du meinst.

Wie gesagt. Der Pi läuft auf Homebridge OS und darauf habe ich pihole & unbound installiert.
Zusätzlich habe ich in der Homebridge ein Plugin, womit ich in der HomeApp bei Bedarf den pihole deaktivieren kann.

Du beobachtest HTTPS-Anfragen, und auch die in Deinem Log gezeigte Anfrage war ein HTTPS-Request.

Pi-hole denkt sich HTTPS-Requests ja nicht selbst aus, sondern empfängt das, was von einem Webclient gesendet wurde.

Ein solcher Client ist z.B. der von Dir verwendete Browser (z.B. Chrome, Firefox, Edge,...).
Ein Browser kann ggf. so konfiguriert werden, dass er HTTP-Anfragen grundsätzlich in HTTPS-Anfragen umwandelt und als solche versendet.
Du solltest Deine Browser-Konfiguration diesbezüglich kontrollieren.

Sofern Dein Browser das nicht tut, sollten die HTTP-Anfragen Pi-holes Webserver lighttpd normalerweise auf Port 80 erreichen.

Aber ich nehme stark an, dass auch Homebridge-OS eine eigene Web-Oberfläche anbietet, die ggf. auf einem eigenen Webserver läuft und daher mit lighttpd kollidiert. Diese Kollision muss konfigurationsseitig ja irgendwie entschärft worden sein, wenn es bereits funktioniert hat.

Wie hast Du denn Pi-hole auf Homebridge-OS installiert?
Und:

Ok, im Firefox habe ich die Einstellungen gerade kontrolliert.

Der "nur-HTTPS" Modus ist deaktiviert.

Den pihole habe ich mit dem Befehl sudo hb-config -> additional packages -> pihole installiert.
Mit dem Webserver bin ich immer noch überfragt. Wo erkenne ich das bzw. kann das überprüfen?

Ich habe mal nslookup ausgeführt und folgendes Ergebnis bekommen.

In dem Fall solltest Du Dich zusätzlich mit den Homebridge-Maintainern von Pi-hole in Verbindung setzen.

Das Pi-hole-Team erstellt keine Pakete für Homebridge-OS und liefert dementsprechend auch keine speziellen Updates oder Konfigurationen dafür.

Die Vermutung liegt nahe, dass das Homebridge-Pi-hole-Paket Pi-holes Webserver deaktiviert und stattdessen Pi-holes Webseiten von einem eigenen Webserver bereitstellen lässt (verbreitet wären z.B. Apache oder nginx, aber ich kann nicht sagen, welchen Webserver Homebridge-OS mitbringt).
Vermutlich ist die Konfiguration des Webservers nicht ganz sauber, aber das ist Spekulation meinerseits.
Ich selbst kenne weder das Paket noch Homebridge-OS, um Dir hier konkret weiter helfen zu können.

Deine nslookups sollten wie gewohnt funktionieren.
Zumindest wird in einer normalen Pi-hole-Installation die Funktionsfähigkeit von pihole-FTL nicht durch Probleme mit lighttpd beeinträchtigt.

Uff, ok. Ich bin gerade echt stark am zweifeln, das ich mein problem auf englisch zusammengefasst bekomme...

Vermutlich war's das dann...

Dennoch danke...

Schreib doch mal Homebridge OS mit in Deinen Topic-Titel.

Das steigert zumindest die Chancen, einen unserer User mit Homebridge-Erfahrung auf Dein Thema aufmerksam zu machen und seine Erfahrungen mit Dir zu teilen. :wink:

Es gäbe außerdem ja die Möglichkeit, Pi-hole über den regulären Weg zu installieren (ich glaube zumindest, dass Homebridge-OS direkt auf dem von uns unterstützen Raspberry Pi OS basiert).
Dann müsstest Du Dich zwar für lighttpd um den Webserver-Konflikt auf Port 80 selbst kümmern, aber dabei könnten wir Dir helfen.

Danke, werde ich machen. (Muss erstmal gucken, wie ich das einstellen kann)

Habe gerade meinen ersten Post mal durch Deepl gejagt und auf /r/homebridge gepostet. Vielleicht kommt da ja auch irgendwas bei rum.

Sorry für den Doppelpost. Nur eine kurze Frage dazwischen.

Weil ich jetzt nicht genau weiß, wann die GUI wieder funktioniert.
Die eine Webseite, die ich ursprünglich "ent-blocken" wollte.

Wie mache ich das am besten? Kann ich das über die Konsole machen? Vermutlich über die Whitelist Funktion? oder gibt es etwas über die Konsole was ich eingeben kann?

Wenn du es von der Blacklist löschen willst dann z.B. mit

pihole -b -d test.com

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.