Files
bf-infra/mcast-relay/multicast-relay.service
Christoph Emsenhuber e416b795e8 TP7.1 nachgebessert: --ssdpUnicastAddr raus, SSDP-Hinweg repariert
Die macOS-Sonos-App fand ihre Player nicht. Ursache war nicht die Firewall
(MEDIA->MAIN ist offen) und nicht der vermutete Race um den globalen
"last SSDP search source"-Slot, sondern die Flagge --ssdpUnicastAddr selbst:

  multicast-relay.py Z. 630 schreibt die Quelle JEDES SSDP-Pakets an
  239.255.255.250:1900 auf <addr>:1901 um (auch NOTIFY), Z. 691 verwirft
  das Paket dann beim Senden auf eth1, weil 10.40.10.21 nicht im VLAN40-Netz
  liegt. Der Hinweg lief damit nie.

Messung vorher: 0 Pakete via eth1 gegen 308 via eth0 in 20 min, 0x
"Received SSDP Unicast" im gesamten Journal seit 2026-08-18. Nachher:
M-SEARCH quellerhaltend in VLAN40, HTTP/1.1 200 OK von 10.40.40.193/.195
an beiden MacBook-Beinen, Drop-Log in:vlan40 out:vlan10 = 0.

- mcast-relay/multicast-relay.service: reparierte Unit jetzt im Repo
  (ausgerollt auf LXC 108, Backup /root/multicast-relay.service.bak-20260825)
- CLAUDE.md: Gotcha korrigiert, Richtungsbilanz als Erstmessung, Hinweis auf
  die SO_REUSEPORT-Falle auf Port 1900 und das dual-homed MacBook (.183/.82)
- docs/teilprojekte.md: Ist-Stand nachgezogen, TP33 (Fernzugriff) als Stub
- docs/teilprojekte-archiv.md: TP7.1-Aussage "--ssdpUnicastAddr ist noetig"
  widerrufen

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 18:28:53 +02:00

42 lines
2.1 KiB
Desktop File

# TP7.1 — SSDP-Relay VLAN10 <-> VLAN40 (macOS-Sonos-App)
#
# Laeuft auf LXC 108 "mcast-relay" (pve), zweibeinig:
# eth0 = 10.40.10.21 (VLAN10/MAIN) eth1 = 10.40.40.21 (VLAN40/MEDIA)
# Ablage im Repo: mcast-relay/multicast-relay.service
# Ziel auf dem Container: /etc/systemd/system/multicast-relay.service
# Ausrollen: scp … root@10.40.20.100:/tmp/ && pct push 108 /tmp/multicast-relay.service \
# /etc/systemd/system/multicast-relay.service && pct exec 108 -- systemctl daemon-reload \
# && pct exec 108 -- systemctl restart multicast-relay
#
# --noMDNS ist WICHTIG: mDNS reflektiert bereits der Core (TP7, mdns-repeat-ifaces).
# Zweimal zu reflektieren erzeugt Duplikate und Schleifen.
#
# 🔴 KEIN --ssdpUnicastAddr (2026-08-25 ausgebaut, war seit 2026-08-18 drin und hat den
# Hinweg blockiert). Die Flagge schreibt in multicast-relay.py Z. 630 die Quelle JEDES
# SSDP-Pakets an 239.255.255.250:1900 auf die angegebene Adresse:1901 um — auch NOTIFY.
# Beim Senden greift dann Z. 691:
# if srcAddr == ssdpUnicastAddr and not onNetwork(srcAddr, tx['addr'], tx['netmask']): continue
# 10.40.10.21 liegt nicht im VLAN40-Netz ⇒ die M-SEARCH der App wurde verworfen, BEVOR sie
# die Player erreichte (Messung: 0 Pakete via eth1 / 308 via eth0 in 20 min, 0 "Received SSDP
# Unicast" im ganzen Journal). Zusaetzlich ist der Rueckweg im Upstream nur EIN globaler
# Merkslot (Z. 623 "FIXME: record more than one?").
# Ohne die Flagge relayt das Werkzeug quellerhaltend; die Player antworten unicast an den
# echten Sucher und der Core routet das nativ zurueck — forward-Regel "TP5: MEDIA->MAIN"
# ist offen (in=vlan40 out=vlan10, ohne Portfilter).
[Unit]
Description=TP7.1 SSDP-Relay vlan10 <-> vlan40 (macOS-Sonos-App)
Documentation=docs/teilprojekte.md TP7.1
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/bin/python3 /opt/multicast-relay/multicast-relay.py \
--interfaces eth0 eth1 \
--noMDNS \
--foreground --verbose
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target