{"id":1901,"date":"2023-03-30T20:55:55","date_gmt":"2023-03-30T18:55:55","guid":{"rendered":"https:\/\/my.stargazer.at\/?p=1901"},"modified":"2023-03-30T20:55:55","modified_gmt":"2023-03-30T18:55:55","slug":"matrix-vs-ntfy-detective-work","status":"publish","type":"post","link":"https:\/\/my.stargazer.at\/de\/2023\/03\/30\/matrix-vs-ntfy-detective-work\/","title":{"rendered":"Matrix vs Ntfy &#8211; Fehlersuche \u00e0 la carte"},"content":{"rendered":"<p>Ich betreibe einen kleinen Matrix Homeserver. Einer der Gr\u00fcnde ist einfach der Preis von Speicher, da jener am Smartphone einfach viel teurer ist, als ein paar Festplatten in meinem Server. Durch das &#8218;umlagern&#8216; der ganzen Messenger auf den Server hatte ich kurzerhand um die 20 GB Speicher auf dem Androiden wieder frei gemacht und nur noch eine App.<\/p>\n<p>Aber nun zum versprochenen Problem. Mein Server war installiert und ich begann die Kiste nach meinem Gutd\u00fcnken mit Bridges zu erweitern &#8211; auch mit einem eigenen Push Server, da ich nicht unbedingt meine eigenen Apps bauen wollte, nur um mit dem Google Push Service zu interagieren. Die Installation lief und alles sah gut aus, au\u00dfer dass der Matrix client nie aufgeweckt wurde. Eigene Push-Mitteilungen, die ich als Alarme nutzte, kamen sehr wohl an. Ich muss zugeben, Anfangs hatte mich die Ruhe nicht wirklich gest\u00f6rt, bis es einfach mal zu ruhig war und ich dieses &#8218;hier stimmt etwas nicht&#8216;-Gef\u00fchl sich in der Magengegend manifestierte.<\/p>\n<p>Unser Container produzierte brav Logfiles &#8211; und da war auch ein Hinweis, der mich alles nur nicht erleichterte:<br \/>\n<code>Mar 18 23:30:14 matrix matrix-synapse[2213]: 2023-03-18 22:30:14,267 - synapse.push.httppusher - 432 - WARNING - httppush.process-17 - Failed to push event $bLGuzRj3t4p6Z6h16aTmfw9YA5gEhZZ0fZOebFToL04 to @user:domain\/im.vector.app.android\/https:\/\/ntfy.domain\/upv5aFQWe5uAHe?up=1: <class 'twisted.internet.error.DNSLookupError'> DNS lookup failed: no results for hostname lookup: ntfy.domain.<\/code><\/p>\n<p>Was war da los? War das Docker-Netzwerk im Eimer? War der DNS down oder nur falsch eingestellt? Ich hab&#8216; mir gleich einmal eine Shell an den Container geheftet und mit einigerma\u00dfen Frust festgestellt, dass der Container weder &#8218;ping&#8216; noch anderes Netzwerk-Werkzeug enthielt (was ja eigentlich nicht schlecht ist!). Nach einigen Ger\u00e4uschemissionen fand ich dann aber doch die curl Binary und konnte versuchen, eine Nachricht an den Push Service abzusetzen&#8230;. Erfolgreich?<\/p>\n<p>Okay &#8211; dann hatte die Meldung offenbar nichts mit dem DNS zu tun und hatte die gleiche Glaubw\u00fcrdigkeit wie die Aussage eines Politikers. Demnach war der Schuldige definitiv der Synapse Server und ich hatte absolut keine Lust voreilig in dessen (teilweise echt furchteinfl\u00f6\u00dfendem) Code zu w\u00fchlen. Also nahm ich mir als erstes das Twisted Framework vor, welches dazu benutzt wurde den Service zu programmieren. Ein <a href=\"https:\/\/docs.twistedmatrix.com\/en\/twisted-16.1.1\/_downloads\/testdns.py\" rel=\"noopener\" target=\"_blank\">DNS Test Script<\/a> war eine einfache M\u00f6glichkeit zu sehen, woran es liegen k\u00f6nnte. Zwei Sekunden und einen Wutschrei sp\u00e4ter war auch Twisted als Unschuldig au\u00dfen vor.<\/p>\n<p>Mit einer frischen Tasse Tee hatte ich mich dann ans Suchen und Code lesen gemacht und nach Stunden einen Hinweis in der Config gefunden:<\/p>\n<p><code><br \/>\n# Prevent outgoing requests from being sent to the following blacklisted IP address<br \/>\n# CIDR ranges. If this option is not specified then it defaults to private IP<br \/>\n# address ranges (see the example below).<br \/>\n#<br \/>\n# The blacklist applies to the outbound requests for federation, identity servers,<br \/>\n# push servers, and for checking key validity for third-party invite events.<br \/>\n#<br \/>\n# (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly<br \/>\n# listed here, since they correspond to unroutable addresses.)<br \/>\n#<br \/>\n# This option replaces federation_ip_range_blacklist in Synapse v1.25.0.<br \/>\n#<br \/>\n# Note: The value is ignored when an HTTP proxy is in use<br \/>\n#<br \/>\n#ip_range_blacklist:<br \/>\n#  - '127.0.0.0\/8'<br \/>\n#  - '10.0.0.0\/8'<br \/>\n#  - '172.16.0.0\/12'<br \/>\n#  - '192.168.0.0\/16'<br \/>\n#  - '100.64.0.0\/10'<br \/>\n#  - '192.0.0.0\/24'<br \/>\n#  - '169.254.0.0\/16'<br \/>\n#  - '192.88.99.0\/24'<br \/>\n#  - '198.18.0.0\/15'<br \/>\n#  - '192.0.2.0\/24'<br \/>\n#  - '198.51.100.0\/24'<br \/>\n#  - '203.0.113.0\/24'<br \/>\n#  - '224.0.0.0\/4'<br \/>\n#  - '::1\/128'<br \/>\n#  - 'fe80::\/10'<br \/>\n#  - 'fc00::\/7'<br \/>\n#  - '2001:db8::\/32'<br \/>\n#  - 'ff00::\/8'<br \/>\n#  - 'fec0::\/10'<\/p>\n<p># List of IP address CIDR ranges that should be allowed for federation,<br \/>\n# identity servers, push servers, and for checking key validity for<br \/>\n# third-party invite events. This is useful for specifying exceptions to<br \/>\n# wide-ranging blacklisted target IP ranges - e.g. for communication with<br \/>\n# a push server only visible in your network.<br \/>\n#<br \/>\n# This whitelist overrides ip_range_blacklist and defaults to an empty<br \/>\n# list.<br \/>\n#<br \/>\n#ip_range_whitelist:<br \/>\n#   - '192.168.1.1'<br \/>\n<\/code><\/p>\n<p>Mein ntfy Service war in meiner DMZ und wurde auch (erfolgreich) von anderen Diensten verwendet. Das setzte ihn jedoch auf die Blockliste von Synapse und verursachte somit das Problem. Ein Einfacher Eintrag in der Whitelist hat die Sache dann erledigt. Ich f\u00fchlte mich f\u00fcr einen Moment echt gro\u00dfartig, das Problem gel\u00f6st zu haben&#8230; bis die Benachrichtigungen \u00fcber ungelesene Nachrichten bei mir wieder eintrudelten. Vermisse ich die Ruhe nachdem ich den Fehler repariert hatte? Manchmal.<\/p>","protected":false},"excerpt":{"rendered":"<p>Ich betreibe einen kleinen Matrix Homeserver. Einer der Gr\u00fcnde ist einfach der Preis von Speicher, da jener am Smartphone einfach viel teurer ist, als ein paar Festplatten in meinem Server. Durch das &#8218;umlagern&#8216; der ganzen Messenger auf den Server hatte ich kurzerhand um die 20 GB Speicher auf dem Androiden wieder frei gemacht und nur noch eine App. [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":1902,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[804,22,803],"class_list":["post-1901","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-it-related-stuff","tag-container","tag-linux","tag-matrix"],"_links":{"self":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/1901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/comments?post=1901"}],"version-history":[{"count":0,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/1901\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/media\/1902"}],"wp:attachment":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/media?parent=1901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/categories?post=1901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/tags?post=1901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}