NetCologne Siptrunk in 3CX Konfigurieren

Wer einen NetCologne Siptrunk in 3CX einbinden möchte, wird schnell feststellen dass es kein Template dafür gibt. Trotzdem ist es möglich und funktioniert bisher ohne Probleme.

3CX Templates gibt es nur für empfohlene und supportete Provider

Wer in 3CX im Menü SIP Trunks seinen NetCologne Anschluss hinzufügen möchte, wird schnell darüber stolpern, dass es einfach kein Template dafür gibt.

Die empfohlenen Provider sind Peoplefone und Reventix. Zu den supporteten gehören die Deutsche Telekom mit Company Flex - Cloud, dus.net, Easybell, EWE TEL, MK Netzdienste und Plusnet.

Darüber hinaus gibt es noch einige weniger Provider die als supportet mit Limitierungen angegeben werden.

Von NetCologne fehlt also jeder Spur, obwohl wir seit einigen Jahren mehrere 3CX Anlagen ohne Probleme mit NetCologne Siptrunks betreiben und unsere Kunden mit dieser Lösung sehr zufrieden sind.

Unterschiedliche Siptrunks von NetCologne

Zunächst müssen wir hier zwischen drei verschiedenen Siptrunks unterscheiden:

  • NetCologne bietet z.B. mit dem Produkt Pro Net Doppel-Flat SIP/Premium einen Siptrunk an, der direkt über die DSL-Leitung angesprochen werden kann. In diesem Fall lautet die Registrar Adresse dfs.netcologne.de.
  • Darüber hinaus gibt es mit dem Produkt Pro Phone SIP auch eine Lösung, bei der ein 2. Modem von NetCologne zur Verfügung gestellt wird, über das dann die VOIP Daten laufen. In dem Fall müssen in 3CX in das Feld "Registrar/Server/Gateway Hostname or IP" sowie "Outbound Proxy" die von NetCologne mitgeteilten IP-Adressen angegeben werden. Alle anderen Einstellungen sind in diesen beiden Feldern gleich. Auf dem 3CX Server muss eine Route angelegt werden, damit der Verbindungsaufbau des Siptrunks über das 2. Modem funktioniert. Eine Anleitung dazu findet sich ganz am Ende.
  • Bei dem dritten Siptrunk handelt es sich um das Produkt Pro Phone SIP. Dieser ist nomadisch und kann an jedem beliebigen Internetanschluss verwendet werden. In diesem Fall lautet die Registrar Adresse pbx.sip-trunk.netcologne.de. Bei dem nomadischen Siptrunk sind einige Einstellungen anders.

Einrichtung der Siptrunks Pro Net Doppel-Flat SIP/Premium und Pro Phone SIP an einer NetCologne Internetleitung

Glücklicherweise kann man in 3CX eigene Provider Konfigurationsdateien im XML-Format importieren.

Dafür müssen wir uns folgenden Inhalt kopieren und per Texteditor als XML-Datei abspeichern, z.B. als "provider.pv.xml".

Anschließend im Menü SIP Trunks auf Import Provider klicken und die gerade erzeugte provider.pv.xml Datei auswählen und hochladen.

Nun muss nur noch die Authentication ID und das Authentication Password angegeben werden sowie die Main Trunk No und Nebenstellen.

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<doc>
  <header>
    <name>NetCologne</name>
    <time>2024-05-06T18:44:24.0478326Z</time>
    <template>sipconnectUDP.pv.xml</template>
    <type>gateway-template</type>
  </header>
  <data>
    <device>
      <field name="Name">NetCologne</field>
      <type>provider</type>
      <manufacturer></manufacturer>
      <model>provider</model>
      <field name="RegistrarHost">dfs.netcologne.de</field>
      <field name="RegistrarPort">0</field>
      <field name="ProxyHost">dfs.netcologne.de</field>
      <field name="ProxyPort">5060</field>
      <field name="SecondaryRegistrar"></field>
      <field name="IPRestriction">ANY</field>
      <field name="TransportRestriction">UDP</field>
      <field name="RequireAuthFor">4</field>
      <field name="IpInContactReg">1</field>
      <field name="IpInContactRegValue"></field>
      <field name="TimeBetweenRegistration">60</field>
      <field name="RegistrarInvite">0</field>
      <field name="IsSupportReinvite">0</field>
      <field name="IsSupportReplaces">0</field>
      <field name="DisableVideo">0</field>
      <field name="SRTPMode">0</field>
      <field name="IsBindToMS">1</field>
      <codecs>
        <codec rfcname="pcma" />
        <codec rfcname="g722" />
        <codec rfcname="g729" />
        <codec rfcname="pcmu" />
      </codecs>
      <field name="Source" custom="" parameter="RequestLineURIUser">$EnforcedOriginatorCallerId</field>
      <field name="ParameterIn" custom="" parameter="FromUserPart">$CallerNum</field>
      <field name="ParameterIn" custom="" parameter="FromUserPart">$CallerName</field>
      <field name="ParameterIn" custom="" parameter="ToUserPart">$CalledNum</field>
      <field name="ParameterOut" custom="" parameter="RequestLineURIUser">$CalledNum</field>
      <field name="ParameterOut" custom="" parameter="RequestLineURIHost">$GWHostPort</field>
      <field name="ParameterOut" custom="" parameter="ContactUser">$AuthID</field>
      <field name="ParameterOut" custom="" parameter="ContactHost">$ContactUri</field>
      <field name="ParameterOut" custom="" parameter="FromDisplayName">$OriginatorCallerId</field>
      <field name="ParameterOut" custom="" parameter="FromUserPart">$OutboundCallerId</field>
      <field name="ParameterOut" custom="" parameter="FromHostPart">$GWHostPort</field>
      <field name="ParameterOut" custom="" parameter="P-PreferredIdentityDisplayName">$OutboundCallerId</field>
      <field name="ParameterOut" custom="" parameter="P-PreferredIdentityUserPart">$OutboundCallerId</field>
      <field name="ParameterOut" custom="" parameter="P-PreferredIdentityHostPart">$GWHostPort</field>
    </device>
  </data>
</doc>

Wie man eine statische Route auf einem 3CX System setzt

Wird für den Siptrunk ein 2. Modem von NetCologne zur Verfügung gestellt, muss der 3CX Server auch über ein 2. Netzwerkinterface verfügen. In der Regel läuft die 3CX Anlage virtualisiert und man kann dann ein 2. Netzwerkinterface mit einer anderen VLAN ID hinzufügen.

Das 2. NetCologne Modem und das 2. Netzwerkinterface müssen dann mit dem gleichen VLAN verbunden werden. Wie genau das geht, hängt sehr von der verwendeten Netzwerkhardware ab und kann ich daher pauschal hier nicht beantworten.

Die statische Route kann wie folgt angelegt werden, dazu müssen wir uns per SSH auf den 3CX Server anmelden:

Zunächst die verfügbaren Netzwerkadapter und IP-Adresse anzeigen

ip addr show

Anschließend öffnen wir die Netzwerkkonfiguration:

nano /etc/network/interfaces/

In unserem Beispiel verwenden wir ens192 für das "normale" Netzwerk und ens224 für das 2. Netzwerkinterface, an dem auch der 2. NetCologne Router hängt. Die Adresse für den Netzwerkadapter ens224 entnehmen wir dem NetCologne Datenblatt und tragen diese hier ein.

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
source /etc/network/interfaces.d/*
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
auto ens192
allow-hotplug ens192
iface ens192 inet dhcp
 
# The secondary network interface
auto ens224
allow-hotplug ens224
iface ens224 inet static
        address xxx.xxx.xxx.xxx/29
        post-up /etc/network/if-up.d/3cx-route

Nun erstellen wir die statische Route:

nano /etc/network/if-up.d/3cx-route

und fügen folgendes in die Textdatei ein. Die Adressen entnehmen wir auch wieder dem NetCologne Datenblatt:

sleep 3
ip route add xxx.xxx.xxx.xxx/32 via xxx.xxx.xxx.xxx dev ens224

Abschließend muss diese Datei noch ausführbar gemacht werden:

chmod +x 3cx-route

Ob die statische Route korrekt gesetzt wurde, können wir mit "ip r" prüfen. Die Route sollte angezeigt werden.

Einrichtung des Siptrunks Pro Phone SIP NOMADISCH an einem beliebiegen Internetanschluss

Der nomadische Siptrunk setzt SRTP, TLS und ein TLS Root Certificat voraus sowie eine statische IP-Adresse. Diese Einstellungen sind stand heute (02.07.2024) in der 3CX Version 20 nicht möglich. Es gibt schlicht keine Möglichkeit eigene TLS Root Certificate hochzuladen.

Wird eine bestehende 3CX Anlage mit der Version 18 auf die 3CX Version 20 geupdatet, bleiben die Einstellungen erhalten und man kann SRTP, TLS und das bereits hinterlegte Root Certificat weiter nutzen. Eine Neueinrichtung mit Version 20 ist so aber nicht möglich!

Für den nomadischen Siptrunk sieht das 3CX Template wie folgt aus:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<doc>
  <header>
    <name>NetCologne Pro Phone SIP NOMADISCH</name>
    <time>2024-07-02T11:34:33.6455971Z</time>
    <template>sipconnectUDP.pv.xml</template>
    <type>gateway-template</type>
  </header>
  <data>
    <device>
      <field name="Name">NetCologne Pro Phone SIP NOMADISCH</field>
      <type>provider</type>
      <manufacturer></manufacturer>
      <model>provider</model>
      <field name="RegistrarHost">pbx.sip-trunk.netcologne.de</field>
      <field name="RegistrarPort">0</field>
      <field name="ProxyHost">pbx.sip-trunk.netcologne.de</field>
      <field name="ProxyPort">0</field>
      <field name="SecondaryRegistrar"></field>
      <field name="IPRestriction">IPV4</field>
      <field name="TransportRestriction">TLS</field>
      <field name="RequireAuthFor">4</field>
      <field name="IpInContactReg">4</field>
      <field name="IpInContactRegValue"></field>
      <field name="TimeBetweenRegistration">3600</field>
      <field name="RegistrarInvite">0</field>
      <field name="IsSupportReinvite">0</field>
      <field name="IsSupportReplaces">0</field>
      <field name="DisableVideo">0</field>
      <field name="SRTPMode">2</field>
      <field name="IsBindToMS">1</field>
      <codecs>
        <codec rfcname="pcma" />
        <codec rfcname="pcmu" />
        <codec rfcname="g729" />
      </codecs>
      <field name="Source" custom="" parameter="RequestLineURIUser">$EnforcedOriginatorCallerId</field>
      <field name="ParameterIn" custom="" parameter="FromUserPart">$CallerNum</field>
      <field name="ParameterIn" custom="" parameter="FromUserPart">$CallerName</field>
      <field name="ParameterIn" custom="" parameter="ToUserPart">$CalledNum</field>
      <field name="ParameterOut" custom="" parameter="RequestLineURIUser">$CalledNum</field>
      <field name="ParameterOut" custom="" parameter="RequestLineURIHost">$GWHostPort</field>
      <field name="ParameterOut" custom="" parameter="ContactUser">$AuthID</field>
      <field name="ParameterOut" custom="" parameter="ContactHost">$ContactUri</field>
      <field name="ParameterOut" custom="" parameter="FromDisplayName">$OriginatorCallerId</field>
      <field name="ParameterOut" custom="" parameter="FromUserPart">$OutboundCallerId</field>
      <field name="ParameterOut" custom="" parameter="FromHostPart">$GWHostPort</field>
      <field name="ParameterOut" custom="" parameter="P-PreferredIdentityDisplayName">$OutboundCallerId</field>
      <field name="ParameterOut" custom="" parameter="P-PreferredIdentityUserPart">$OutboundCallerId</field>
      <field name="ParameterOut" custom="" parameter="P-PreferredIdentityHostPart">$GWHostPort</field>
    </device>
  </data>
</doc>

Abweichend zu den ersten beiden Siptrunks, welche nur über den dazugehörigen NetCologne Internetanschluss funktionieren, sind bei dem nomadischen Siptrunk folgende Einstellungen zu setzen:

Im Tab General:

  • Registrar und Outbound Proxy Adresse = pbx.sip-trunk.netcologne.de
  • Bei Port muss Auto Discover ausgewählt sein! Die Ports 5060 oder 5061 haben nicht funktioniert!

Im Tab Caller ID:

  • Die Outbound Caller ID muss im Format +49 eingetragen werden

Im Tab Options:

  • SRTP Mode = Enforced
  • Re-Register Timeout = 3600
  • Select which IP to use in Contact (SIP) and Connection (SDP) fields = die eigene feste IP-Adresse vom Internetanschluss
  • Transport Protocol = TLS
  • TLS Root Certificate = Das Zertifikat downloaden und dort einfügen: https://letsencrypt.org/certs/isrgrootx1.pem Nach dem speichern der Einstellungen, wird das Zertifikat mit einem generischen Namen root_cert_10000.pem angezeigt. 3CX vergibt für das Zertifikat einen eigenen Namen. Das angezeigte Ablaufdatum sollte jedoch gleich dem hochgeladenen Zertifikat sein.

Warum NetCologne und nicht Telekom, obwohl deren Siptrunk supportet wird?

Die Telekom hat in den letzten Jahren immer wieder ohne Vorwarnung der Kunden, Änderungen an den Siptrunks vorgenommen.

So konnten sich die 3CX Siptrunks morgens plötzlich nicht mehr mit der Telekom verbinden. Für die Hotline war die Sache schnell klar und erledigt, der Kunde ist schuld, da er keine Telekom Hardware verwendet und die Telekom hat auf keinen Fall etwas geändert.

Erstaunlich war jedoch immer, dass ein zurückspielen älterer Backups, mit denen die 3CX Anlage definitiv sauber funktionierte, keine Besserung brachte. Es lag also doch eine Änderung über Nacht seitens der Telekom vor. Es gab in allen Fällen auch eine Offlinezeit von mehreren Minuten, in der die DSL-Leitung getrennt war. Das wurde von unserem Monitoring registriert.

Erst durch das Umstellen diverser Einstellungen konnte der Siptrunk sich wieder erfolgreich verbinden. Zuletzt ist mir da die Umstellung des Transport Protokolls in Erinnerung geblieben. Wir mussten manuell von UDP auf TCP umstellen. Mit UDP konnte sich der Siptrunk nicht mehr verbinden, obwohl das Jahrelang so konfiguriert war und auch funktionierte.

Wenn wenigstens die Hotline sofort kommuniziert hätte, das etwas umgestellt wurde. Aber nein, es wurde bis zum Ende geleugnet. Ich will niemandem absicht unterstellen, vermutlich wusste die Hotline einfach nicht was die Technik macht.

Daher supporten wir mittlerweile keine Telefonanlagen mehr, die per Telekom Siptrunk verbunden sind.

Wie andere Kollegen den Support der Telekom erleben, lässt sich auch im Blog von Andy nachlesen: https://andysblog.de

Solche Probleme kennen wir von NetCologne nicht. Es mag sein, dass die Tarife von NetCologne nicht die günstigsten sind. Aber rechnet man die Supportkosten für sporadische Fehler und nicht kommunizierte Änderungen von der Telekom hinzu, ist NetCologne deutlich günstiger für den Kunden.

An der Stelle auch einen Dank an den wirklich sehr guten und direkten Geschäftskunden Support von NetCologne. Auch wenn Kunden spontan umziehen und sich zu spät um das Thema DSL oder Glasfaser kümmern, konnte NetCologne immer eine schnelle Lösung finden. Zuletzt wurde innerhalb von einer Woche ein DSL-Anschluss für eine neue Zweigstelle geschaltet. Der Glasfaser Anschluss wird in wenigen Wochen folgen. Das wäre nach unserer Erfahrung mit der Telekom undenkbar.



Leave a comment

Available formatting commands

Use Markdown commands or their HTML equivalents to add simple formatting to your comment:

Text markup
*italic*, **bold**, ~~strikethrough~~, `code` and <mark>marked text</mark>.
Lists
- Unordered item 1
- Unordered list item 2
1. Ordered list item 1
2. Ordered list item 2
Quotations
> Quoted text
Code blocks
```
// A simple code block
```
```php
// Some PHP code
phpinfo();
```
Links
[Link text](https://example.com)
Full URLs are automatically converted into links.
© TECH-SUPPORT.KOELN