Diesmal war es wirklich ziemlich skurril – im Grunde habe ich eine ganze Nacht vergeudet, und am Ende stellte sich heraus, dass das Problem überhaupt nicht am Node selbst lag, sondern daran, dass der lokale Proxy „verschachtelt“ war.
Das Verhalten war am Anfang sehr seltsam:
- Der Betreiber der Node-Maschine kam auf mich zu und fragte, was da los sei – auf der Backend-Seite gäbe es ständig fortlaufende merkwürdige Requests.
- Bei mir lokal konnte ich mich so gut wie zu keiner Node verbinden.
- Noch merkwürdiger: Egal wie ich meine lokale Proxy-Konfiguration änderte, auf der Node-Maschine waren diese fortlaufenden Requests weiterhin zu sehen.
Am Anfang habe ich vieles in Verdacht gehabt, zum Beispiel:
- Der Node selbst ist abgeschmiert
- Mit dem Subscription-Inhalt stimmt etwas nicht
- Regeln falsch geschrieben
- DNS oder System-Proxy nicht sauber umgestellt
- Irgendein Programm macht im Hintergrund wie verrückt Retries
Am Ende ergab die Analyse: Das Kernproblem war tatsächlich Proxy-Loop / verschachtelter Proxy.
Genauer gesagt lief lokal damals nicht nur ein mihomo, sondern zwei parallel:
- Einer war der aktuell von Sparkle normal gestartete
mihomo - Der andere war ein alter, übrig gebliebener verwaister Prozess
Dadurch wurde der Traffic-Pfad extrem merkwürdig und lief lokal wie bei einem „Kurzschluss“ im Kreis:
- Lokal wurde zwar die Konfiguration geändert, aber der Traffic wurde nicht unbedingt von dem Core übernommen, von dem man dachte, dass er es ist
- Manche Requests wurden mehrfach weitergeleitet, mehrfach getroffen, und auf der Node-Maschine sah das am Ende wie fortlaufende komische Requests aus
- Der eigene Rechner verhielt sich dagegen so, als wären massenhaft Nodes nicht verfügbar – fast gar nichts ging
Erst später ist mir klar geworden: Das war nicht einfach „die Node ist kaputt“, sondern lokaler Proxy über lokalem Proxy / ein übrig gebliebener Core hat noch eine Schicht draufgelegt.
Nachdem ich den alten Restprozess beseitigt hatte und Sparkle erneut geöffnet habe, war das System wieder so:
- ein Sparkle-Hauptprozess
- ein von ihm gestarteter
mihomo-Kindprozess
Und dann war wieder alles normal.
Die Lehre daraus ist ziemlich direkt:
- Wenn du „auf der Node-Seite merkwürdige fortlaufende Requests + lokal gehen fast alle Nodes nicht“ siehst, verdächtige nicht nur die Gegenseite.
- Prüfe zuerst, wie viele Proxy-Cores lokal laufen – gerade bei
mihomo, ob da verwaiste Prozesse übrig sind. - Sobald Verschachtelung oder ein Loop entsteht, wirken die Symptome extrem „mystisch“, tatsächlich ist aber der lokale Traffic-Pfad schon durcheinander.
Wenn ich künftig wieder so etwas habe, sollte die erste Reaktion meiner Meinung nach sein, zuerst zu prüfen:
- Wie viele
mihomolaufen - Wer ist der Parent-Prozess, wer ist ein verwaister Prozess
- Welche Instanz hört tatsächlich auf
7890/7891/7892 - Ob der System-Proxy wieder auf sich selbst zurückzeigt
Absurde Sache, aber immerhin eine Lektion fürs nächste Mal.