Asterisk V20.0 an nomadischem SIP Trunk von NetCologne 4. Februar 2024

NetCologne bietet einen nomadischen SIP Trunk an. Wie der Name vermuten lässt handelt es sich um einen Anschluss, der von überall aus dem Internet zur Verfügung steht. Er funktioniert aber anders als sip.netcologne.de, welcher nur über eine physikalische NetCologne Leitung zur Verfügung steht. Die wichtigsten Unterschiede sind:
1. Er nur verschlüsselt erreichbar.
2. Die User Namen bestehen aus Landesvohrwahl und Telefonnummer (+49YYYYXXXXX) und nicht wie sonst bei NetCologne üblich aus der Telefonnummer ohne der führenden 0.
3. Der Anschluss unterscheidet nicht zwischen MSN und einem Telefonanlagenanschluss mit Durchwahlnummern. Bei sip.netcologne.de hat jede einzelne Nummer einen eigenen SIP-Account, hier gibt es nur einen Account.
4. Der NameService muss via SRV Namelookup aufgelöst werde. Da der Asterisk chan-SIP dieses nur sehr rudimentär bedient, muss man PJSIP verwenden. (pbx.sip-trunk.netcologne.de. 3600 IN NAPTR 100 0 „S“ „SIPS+D2T“ „“ _sips._tcp.pbx.sip-trunk.netcologne.de.)

Wenn man eine gewachsene Asterisk Konfiguration mit chan-SIP anpassen möchte, so ist es kein Problem. Man kann chan-SIP und PJSIP gleichzeitig verwenden. Man muss nur die Registrierungsdaten zum Trunk in sip.conf löschen und verwendet für die Registrierung pjsip.conf. Da es zur Zeit von NetCologne noch keine Dokumentation hierzu gibt, gibt es hier ein Template für pjsip.conf.

[global]
type = global
keep_alive_interval = 0 ; seconds, TCP-PSH as keep-alive mechanism

[nc_registration]
type = registration
transport = nc_transport
outbound_auth = nc_auth
client_uri = sip:+49YYYYXXXXX@pbx.sip-trunk.netcologne.de
contact_user = +49YYYYXXXXX
server_uri = sip:pbx.sip-trunk.netcologne.de
line = yes ; required for „endpoint“
expiration = 3600
endpoint = nc_endpoint

[nc_transport]
type = transport
protocol = tls
ca_list_path = /etc/ssl/certs/ ; Pfad zu ISRG_Root_X1.pem
method = tlsv1_2 ; es wird TLS Version 1.2 verwendet
cos = 3
tos = cs5
bind = 0.0.0.0

[nc_auth]
type = auth
auth_type = userpass
password = YXCVB ; (hier SIP-Passwort eintragen)
username = +49YYYYXXXXX ; (hier SIP-Username eintragen)
realm = pbx.sip-trunk.netcologne.de

[nc_endpoint]
type = endpoint
from_domain = pbx.sip-trunk.netcologne.de
from_user = +49YYYYXXXXX
context = nc ; das ist der Einspringpunkt für die extensions.conf
language = de
outbound_auth = nc_auth
media_encryption = sdes
aors = my_aor ; link required for „qualify_frequency“
cos_audio = 5
tos_audio = ef
direct_media_method=invite
dtmf_mode=rfc4733
direct_media=no
disallow=all
allow=alaw
allow=ulaw

[my_aor]
type = aor
contact = sip:+49YYYYXXXXX@pbx.sip-trunk.netcologne.de
qualify_frequency = 0 ; seconds, SIP-OPTION as keep-alive mechanism

In der extensions.conf muss der Dial Befehl angepasst werden. Dial(PJSIP/${EXTEN:1}@nc_endpoint,50,t) oder so in der Art. Mit :1 wird die führende 0 (Amtsholung) entfernt.