Zum Inhalt

Provider-Konfiguration

Uebersicht

Die xynap-Telefonieanlage ist an zwei SIP-Provider angebunden, die über unterschiedliche Authentifizierungsmethoden und IP-Versionen arbeiten.

Provider Profil Auth IP-Version Rufnummern
Plusnet external-ipv4 IP-Auth (kein REGISTER) IPv4 +493455667290
1&1 internal REGISTER (User/Pass) IPv6 (Pflicht!) +4934556643378, +493455630488

1&1 blockiert Hetzner IPv4

1&1 lehnt SIP-Registrierungen von Hetzner-IPv4-Adressen mit 503 Service Unavailable ab. Alle 1&1-Trunks müssen über IPv6 laufen. Dies betrifft sowohl das Sofia-Profil (ext-sip-ip, ext-rtp-ip) als auch den Outbound-Proxy.


Plusnet

Eckdaten

Parameter Wert
Proxy sip.plusnet.de
Outbound-Proxy 92.197.176.16
Authentifizierung IP-Auth (NOREG)
Sofia-Profil external-ipv4
Bind-IP 46.4.96.105 (IPv4)
Rufnummer +49 345 566 7290
caller-id-in-from false

Besonderheiten

Outbound-Proxy ist Pflicht

Plusnet nutzt DNS Round-Robin für sip.plusnet.de. Ohne festen Outbound-Proxy landen INVITE und ACK möglicherweise bei unterschiedlichen SIP-Servern, was zu 408 Request Timeout führt. Der Outbound-Proxy 92.197.176.16 muss immer gesetzt sein.

IP-Authentifizierung: Plusnet authentifiziert ausschließlich über die Quell-IP. Die IP 46.4.96.105 muss im Plusnet-Kundenportal freigeschaltet sein. Ein REGISTER findet nicht statt.

Gateway-Status: Da kein REGISTER erfolgt, zeigt sofia status den Gateway-Status nicht als REGED an. Der Gateway-State ist NOREG, was korrekt ist.

Trunk-Konfiguration (Platform API)

Die Trunk-Konfiguration wird über die Platform API verwaltet. Relevante Felder:

Provider:        Plusnet
Proxy:           sip.plusnet.de
Outbound-Proxy:  92.197.176.16
Register:        false
Profile:         external-ipv4
Caller-ID:       +493455667290

1&1

Eckdaten

Parameter Wert
Proxy sip.1und1.de
Outbound-Proxy [2001:8d8:104:100:212:227:124:129] (IPv6!)
Authentifizierung REGISTER (Benutzername/Passwort)
Realm sip.1und1.de
Sofia-Profil internal (Dual-Stack)
ext-sip-ip / ext-rtp-ip 2a01:4f8:140:829d::2 (IPv6)

Rufnummern

Rufnummer Verwendung
+49 345 566 43378 IVR-Hauptnummer
+49 345 563 0488 Support-Hotline

Besonderheiten

Realm-Konfiguration

Der Realm muss sip.1und1.de sein, nicht 1und1.de. Ein falscher Realm führt zu 401 Unauthorized bei der Registrierung, obwohl Username und Passwort korrekt sind.

IPv6-Outbound-Proxy: Der Outbound-Proxy muss in eckigen Klammern stehen: [2001:8d8:104:100:212:227:124:129]. Ohne Klammern wird die Adresse nicht als IPv6 erkannt.

Passwörter: Die SIP-Passwörter sind Fernet-verschlüsselt in der Datenbank gespeichert und werden nur zur Laufzeit entschlüsselt. Sie sind über die API abrufbar:

# Extension-Config inkl. SIP-Credentials (nur mit passender Permission)
GET /api/v1/sip/extensions/{id}/config

Trunk-Konfiguration (Platform API)

Provider:        1und1
Proxy:           sip.1und1.de
Outbound-Proxy:  [2001:8d8:104:100:212:227:124:129]
Register:        true
Realm:           sip.1und1.de
Profile:         internal
Username:        (aus DB)
Password:        (verschluesselt in DB)

Gateway-Loading (mod_xml_curl)

Gateways werden nicht statisch in XML-Dateien definiert, sondern dynamisch über mod_xml_curl geladen:

FreeSwitch Startup / REGISTER-Event
POST /api/v1/sip/xml-curl
    section=directory
Platform API generiert XML mit Gateway-Definitionen
FreeSwitch lädt Gateways in Sofia-Profile

Bei Änderungen an Trunks über die API wird automatisch ein Sofia-Reload über die ESL-Verbindung ausgelöst.

Gateway-Discovery

Beim Directory-Request liefert die API neben User-Credentials auch Gateway-Definitionen aus. FreeSwitch erkennt neue Gateways und startet den REGISTER-Prozess (bei Trunks mit register: true).

Reihenfolge beim Start

FreeSwitch muss die Platform API erreichen können, bevor Gateways geladen werden. Beim Container-Start kann es 5–10 Sekunden dauern, bis die API auf Port 8001 antwortet. Die ESL-Verbindung hat einen Auto-Reconnect.


Sofia-Profile im Detail

external-ipv4

Dieses Profil bindet ausschließlich auf IPv4 und wird für Provider genutzt, die IP-Authentifizierung verwenden.

<!-- Wesentliche Parameter -->
<param name="sip-ip" value="46.4.96.105"/>
<param name="sip-port" value="5060"/>
<param name="ext-sip-ip" value="46.4.96.105"/>
<param name="ext-rtp-ip" value="46.4.96.105"/>

internal

Das interne Profil bindet auf :: (Dual-Stack) und bedient sowohl IPv6-Provider als auch interne Extensions und WebRTC.

<!-- Wesentliche Parameter -->
<param name="sip-ip" value="::"/>
<param name="sip-port" value="5060"/>
<param name="ext-sip-ip" value="2a01:4f8:140:829d::2"/>
<param name="ext-rtp-ip" value="2a01:4f8:140:829d::2"/>
<param name="tls-sip-port" value="5061"/>
<param name="wss-binding" value=":7443"/>

ext-rtp-ip und Audio

Die ext-rtp-ip muss zur IP-Version des Providers passen. Für 1&1 (IPv6) muss hier die IPv6-Adresse stehen, sonst kommt kein Audio zustande — der Call verbindet sich zwar, aber es herrscht Stille in beide Richtungen.


Firewall-Regeln (UFW)

Nur die IP-Bereiche der Provider sind für SIP zugelassen:

Plusnet (IPv4)

# SIP Signaling
ufw allow from 92.197.176.0/24 to any port 5060 proto udp
ufw allow from 92.197.177.0/24 to any port 5060 proto udp
ufw allow from 92.197.182.0/24 to any port 5060 proto udp

# TLS
ufw allow from 92.197.176.0/24 to any port 5061 proto tcp
ufw allow from 92.197.177.0/24 to any port 5061 proto tcp
ufw allow from 92.197.182.0/24 to any port 5061 proto tcp

1&1 (IPv6)

# SIP Signaling (IPv6)
ufw allow from 2001:8d8:104:100:212:227:124:128/125 to any port 5060 proto udp

# SIP Signaling (IPv4 — für Fallback)
ufw allow from 212.227.124.0/24 to any port 5060 proto udp

Allgemein

# WebRTC (offen, da über Traefik/TLS gesichert)
ufw allow 7443/tcp

# RTP Media (offen fuer alle, da dynamische Ports)
ufw allow 10000:10060/udp
ufw allow 16384:16484/udp

Zweite Schutzschicht: FreeSwitch ACL

Zusätzlich zur UFW-Firewall verwendet FreeSwitch eine eigene ACL sip-gateways mit default deny. Nur explizit eingetragene IP-Bereiche dürfen SIP-Requests an das internal-Profil senden.