[Edit Novize: Beiträge gemäß der Forumsregeln zusammengefasst]
Ok - hier das Ergebnis einer Konfiguration für Asterisk 16.11.x für pjsip via FreePBX (15.0.16.52). Anders als man es vielleicht manuell machen würde, geht FreePBX da sehr kleinteilig und strukturiert vor. In wie weit das dann ohne Weiteres auf eine andere Form der Konfig anwendbar ist, entzieht sich meiner Kenntnis. Ich habe das trotzdem so gemacht, damit alle, die via FreePBX vorgehen, eine Kontrollmöglichkeit haben. Die Konfig findet sich in /etc/asterisk/. Für die FreePBX-User: die Konfigfiles nie manuell bearbeiten, weil die von FreePBX verwaltet werden (außer die *custom* und *custom_post.conf Dateien).
Ich stelle hier die Konfig einer Telekom-Nummer (wenn man drei hat, muss man das dreimal durchführen) und einer Nebenstelle vor (eine Gigaset-DECT-IP-Station).
Die Telekomnummer im Bsp.: 49891234567 (Deutschland(49), Vorwahl München(89), 1234567 Rufnummer). Password: Tgeheim, User: 49891234567
Name des Trunks in der Konfig: telekomPJSIP-567 (im Beispiel telekomPJSIP-567 darf natürlich angepasst werden - muss aber konsequent überall durchgehalten werden)
.
Verwendet wird tls für das Signaling. Die Audiodaten bleiben unverschlüsselt (dafür wäre ein zusätzlicher
Mediasec-Patch nötig)
Noch was zum Password: das finde ich bei der Telekom etwas unübersichtlich. Da muss jeder selbst wissen, welches der potentiell mannigfachen vorhandenen Passwörter hier zu verwenden sind. Falls man den Zugriff bei der Telekom leitungsbasiert eingestellt hat (geht ja auch, wenn man will), kann man als Password irgendwas eintragen (z.B. geheim) - war zumindest vor geraumer Zeit testweise mal noch so - ob das heute auch noch so ist - keine Ahnung - ich nutze diese Einstellung nicht. Hier gilt für die Telefonie das Password für den Mailaccount.
Die Gigaset-Nebenstelle: Nummer 56, Password: Ngeheim
pjsip.conf
Code:
#include pjsip_custom.conf
#include pjsip.transports.conf
#include pjsip.transports_custom_post.conf
#include pjsip.endpoint.conf
#include pjsip.endpoint_custom_post.conf
#include pjsip.aor.conf
#include pjsip.aor_custom_post.conf
#include pjsip.auth.conf
#include pjsip.auth_custom_post.conf
#include pjsip.registration.conf
#include pjsip.registration_custom_post.conf
#include pjsip.identify.conf
#include pjsip.identify_custom_post.conf
[global]
type=global
user_agent=FPBX-15.0.16.52(16.11.0)
use_callerid_contact=no
endpoint_identifier_order=ip,username,anonymous,header,auth_username
#include pjsip_custom_post.conf
pjsip.aor.conf
Code:
#include pjsip.aor_custom.conf
[telekomPJSIP-567]
type=aor
qualify_frequency=240
contact=sip:[email protected]
[56]
type=aor
max_contacts=1
remove_existing=yes
maximum_expiration=7200
minimum_expiration=120
qualify_frequency=60
pjsip.auth.conf
Code:
#include pjsip.auth_custom.conf
[telekomPJSIP-567]
type=auth
auth_type=userpass
password=Tgeheim
username=+49891234567
[56-auth]
type=auth
auth_type=userpass
password=Ngeheim
username=56
pjsip.endpoint.conf
Code:
#include pjsip.endpoint_custom.conf
[telekomPJSIP-567]
type=endpoint
transport=0.0.0.0-tls
context=from-pstn
disallow=all
allow=g722,alaw,ulaw
aors=telekomPJSIP-567
send_connected_line=false
language=de
outbound_auth=telekomPJSIP-567
from_domain=tel.t-online.de
from_user=+49891234567
contact_user=+49891234567
user_eq_phone=no
t38_udptl=no
t38_udptl_ec=none
fax_detect=no
trust_id_inbound=no
t38_udptl_nat=no
direct_media=no
rewrite_contact=yes
rtp_symmetric=yes
dtmf_mode=rfc4733
[56]
type=endpoint
aors=56
auth=56-auth
tos_audio=ef
tos_video=af41
cos_audio=5
cos_video=4
allow=!all,g722,alaw,ulaw
context=from-internal
callerid=Testdevice <56>
dtmf_mode=rfc4733
direct_media=yes
mailboxes=56@default
aggregate_mwi=yes
use_avpf=no
rtcp_mux=no
max_audio_streams=1
max_video_streams=1
bundle=no
ice_support=no
media_use_received_transport=no
trust_id_inbound=yes
user_eq_phone=no
send_connected_line=yes
media_encryption=no
timers=yes
media_encryption_optimistic=no
rtp_symmetric=yes
rewrite_contact=yes
force_rport=yes
language=de
one_touch_recording=on
record_on_feature=apprecord
record_off_feature=apprecord
pjsip.endpoint_custom_post.conf
Code:
[telekomPJSIP-567](+type=endpoint)
tos_audio=0xb8
rtp_timeout=120
pjsip.identify.conf
Code:
#include pjsip.identify_custom.conf
[telekomPJSIP-567]
type=identify
endpoint=telekomPJSIP-567
match=127.0.0.10
Kleine Anmerkung zum match: ist deshalb drin, um sicherzustellen, dass kein IP-basiertes Matching funktioinieren kann (-> das matched nie). Einziges Matching basiert auf der line-Konfig (siehe unten).
pjsip.registration_custom.conf
Code:
[telekomPJSIP-567]
type=registration
transport=0.0.0.0-tls
outbound_auth=telekomPJSIP-567
retry_interval=60
fatal_retry_interval=0
forbidden_retry_interval=10
max_retries=10000
expiration=660
auth_rejection_permanent=yes
line=yes
endpoint=telekomPJSIP-567
contact_user=+49891234567
server_uri=sip:tel.t-online.de
client_uri=sip:[email protected]
Ein paar Worte zur Option
line: Damit wird sichergestellt, dass eingehende Calls auch wirklich zum korrekten Trunk zugeordnet werden (wichtig, wenn man mehr als nur eine Nummer bei der Telekom registriert. Außerdem ist es ein Sicherheitsfeature, weil eingehende Calls ohne diese Kennzeichnung abgewiesen werden).
pjsip.transports.conf
Code:
#include pjsip.transports_custom.conf
[0.0.0.0-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060
allow_reload=no
tos=0xb8
cos=3
[0.0.0.0-tls]
type=transport
protocol=tls
bind=0.0.0.0:5061
ca_list_file=/etc/pki/tls/certs/ca-bundle.crt
method=tlsv1_2
verify_server=yes
allow_reload=no
tos=0xb8
cos=3
Noch eine weitere wichtige Info:
Asterisk unterstützt das Betriebskonzept der Telekom (noch) nicht (Sessionstability bei gleichzeitigem Angebot mehrerer SIP-Server). Siehe
Code:
dig +noall +answer _sips._tcp.tel.t-online.de SRV
oder für unverschlüsseltes Sinaling
dig +noall +answer _sip._tcp.tel.t-online.de SRV
(die erhaltenen Ergebnisse muss man in einem weiteren Schritt noch zur IP auflösen).
Seit Asterisk 16.9. / 13.32. / 17.3. wurde (aus Sicht von Asterisk) ein Bug gefixt, welcher früher dazu beigetragen hat, dass es bei der Mehrfachregistrierung von Nummern bei der Telekom zu keinen Fehlern gekommen ist beim Start von Asterisk. Heute kann es an dieser Stelle durchaus zu Problemen kommen (was sich dadurch äußert, dass die Registrierung zwar durchgeht, aber hinterher nicht raustelefoniert werden kann, weil der Call beim falschen SIP-Server eingeliefert wird - nämlich bei einem, wo man nicht registiert ist). Hier ist der Revert-
Patch dafür.
Eine andere Möglichkeit ist potentiell, dass man die /etc/hosts bemüht und da nur eine IP für tel.t-online.de einträgt (welche man aus der Liste von dig oben erhalten hat). Ungetetstet!
Ich habe es über eine rpz-Domäne in meinem lokalen bind gelöst, welcher von einem zyklischen Script gefüttert wird und der dann Asterisk die gefilterte Antwort liefert, so dass es keine Auswahl mehr gibt.
Konfiguration mit FreePBX
[Beitrag 2]
Ich habe hier mal einige Screenshots zusammengestellt, welche die Basiskonfiguration mit FreePBX 15.0.16 für Telekom SIP MagentaZuhause dokumentiert (verschlüsseltes Signaling). Ich kann allerdings nicht garantieren, dass diese Doku wirklich alle Einstellungen enthält, die ich jemals in FreePBX evtl. an anderer relevanter Stelle auch noch gemacht habe. Ich denke aber, dass es die Relevanten sein sollten. Hoffe, das hilft und führt nicht noch zu mehr Verwirrung.
Das Vorgehen ist grundsätzlich wie folgt (die Reihenfolge einhalten, weil man die jeweiligen Ziele im Routing auswählen muss - die können aber erst da sein, wenn man sie vorher angelegt hat):
1. SIP-Basiseinstellungen in Einstellungen -> Asterisk SIP Settings vornehmen (Im Reiter SIP (chan_pjsip)):
a)
b)
c)
d)
2. Einrichtung einer Nebenstelle (Anwendungen -> Nebenstelle - euer eigenes Telefon - hier nicht in den Screenshots dokumentiert)
3. Einrichtung der Hauptleitung (Connectivity -> Hauptleitungen) / hier muss ein frei wählbarer Name vergeben werden. (Bilder im folgenden Beitrag wg. max. Begrenzung der Bilder in einem Beitrag)
4. Routing eingehender Gespräche (Connectivity -> Inound Routes) / Die Route bekommt auch einen frei wählbaren Namen. Ein eingehender Call wird auf Basis der angerufenen Rufnummer weitergeleitet. Daher ist hier das führende + relevant (die Telekom liefert als angerufene Nummer immer +49...).
5. Routing ausgehender Gespräche (Connectivity -> Outbound Routes) / Die Route bekommt ebenfalls einen frei wählbaren Namen. Die ausgehende Nummer wird ebenfalls im +-Format übergeben (sowohl die eigene als auch die angerufene).
Bei den Dialpatterns muss dann noch individuell sichergestellt werden, dass die Route auch genutzt werden kann (auf Basis der gewählten Rufnummer muss ein Match stattfinden können). Die Hilfe auf dem "Dial Patterns" Tab sollte genügen.
[Beitrag 3]
Hier noch der 3. Punkt wg. Einschränkungen:
3. Einrichtung der Hauptleitung (Connectivity -> Hauptleitungen) / hier muss ein frei wählbarer Name vergeben werden. (Bilder im folgenden Beitrag wg. max. Begrenzung der Bilder in einem Beitrag)
a)
b)
c)
d)
e)
f)
g)
[Edit Novize: Riesenbilder gemäß der Forumsregeln auf Vorschau verkleinert]
=> In der Outboundroute sicherstellen, dass die gewählten Nummern auch wirklich schon so ankommen, dass diese Regeln hier greifen können.
Edit 14.01.2021:
Hinweise in Sachen Verwendung des transports.
Edit 13.06.2021:
Hinweise zu NAT