Gelöst

Asterisk pjsip.conf für tel.t-online.de hinter NAT

vor 8 Jahren

Weil ich nirgends eine funktionierende Konfiguration gefunden habe, nach Stunden probieren und recherchieren jetzt hier ein Memorium.

Der Asterisk läuft auf der IP 10.0.0.2 hinter einer Fritz!Box an einem AllIP Magenta-Anschluss.

 

Auf der Fritz!Box folgende Portfreigaben anlegen:

5061/udp -> 10.0.0.2:5061

30000-30099/udp -> 10.0.0.2:30000

5061 wird ersatzweise verwendet, weil auf 5060 unumgänglich auf Home-Routern schon ein eigener Sipproxy lauscht.

Diesen wollen wir nicht haben, können den Schrott aber leider auch nicht abschalten.

 

Die pjsip.conf für Asterisk mit der Telekom incl. outbound_proxy:

 

[global]
type = global
language = de
endpoint_identifier_order = ip,username

[transport-udp]
type = transport
protocol = udp
bind = 10.0.0.2:5061
local_net = 10.0.0.0/16
domain = my.dyndns.org
external_media_address = $ExterneIP
external_signaling_address = $ExterneIP
external_signaling_port = 5061

[telekom_9931234567_reg]
type = registration
transport = transport-udp
outbound_auth = telekom_9931234567_auth
outbound_proxy = sip:+499931234567@tel.t-online.de:5060\;lr
server_uri = sip:tel.t-online.de:5060
client_uri = sip:+499931234567@tel.t-online.de:5060
contact_user = 09931234567
retry_interval = 60
forbidden_retry_interval = 60
expiration = 480
auth_rejection_permanent = false

[telekom_9931234567_auth]
type = auth
auth_type = userpass
password = $Password:$TOnlineNummer-0001@tel.t-online.de
username = 09931234567
realm = tel.t-online.de

[telekom_9931234567]
type = endpoint
transport = transport-udp
context = incoming
disallow = all
allow = alaw,g722
outbound_auth = telekom_9931234567_auth
outbound_proxy = sip:+499931234567@tel.t-online.de:5060\;lr
aors = telekom_9931234567_aor
callerid = 09931234567
from_user = 09931234567
from_domain = tel.t-online.de
timers = no
rtp_symmetric = yes
force_rport = yes
ice_support = yes
rewrite_contact = yes
direct_media = no

[telekom_9931234567_aor]
type = aor
contact = sip:+499931234567@tel.t-online.de

[telekom_9931234567_identify]
type = identify
endpoint = telekom_9931234567
match = 217.0.0.0/13

Die fiktive Telefonnummer 9931234567 durch die eigene ersetzen. Dabei darauf achten, wo die Nummer mit 0 oder +49 beginnt. (Wichtig)

Darüber hinaus noch die Variablen

- $TOnlineNummer

- $Password

- $ExterneIP

sinngemäß anpassen.

Außer [global] und [transport-udp] muss alles für jede Telefonnummer wiederholt werden.

 

outbound_proxy= <vollständige-sip-url>\;lr

\;lr am Schluss ist wichtig. Steht für loose-routing. Gibt man das nicht mit an, ruft man sich beim abgehenden Anruf immer selbst an.

Das hat mich Stunden gekostet, denn es ist in dem Zusammenhang nirgends vernünftig dokumentiert.

 

Dann noch die rtp.conf anpassen:

rtpstart = 30000
rtpend = 30099

Damit eingehende RTP-Daten auch auf die richtigen am Router forwardeten Ports der external_media_address bestellt werden.

 

Warum die $ExterneIP in die pjsip.conf schreiben?

Das aktuelle res_pjsip.so Modul, welches in den meisten Distros verteilt wird macht keinen automatischen Lookup, wenn man einen DNS-Namen als external_media_address verwendet. Asterisk sendet dann im INVITE den DNS-Namen statt der IP. Prinziepiell sollte das gehen, jedoch machen die SIP-Gateways bei fast allen Providern entgegen der Spezifikation kein DNS-Lookup für uns.

Ich habe das unschön gelöst, indem ich ein kleines python-Script per Cron regelmäßig die IP von meiner DynDNS-Domain abfragen lasse.

Bei Bedarf ersetzt das Script dann die IP in der pjsip.conf und reloaded per AMI pjsip.

 

extensions.conf

[incoming]
exten => 09931234567,1,Verbose(${CALLERID(num)} ruft an)

[out]
exten => _X.,1,Dial(PJSIP/${EXTEN}@telekom_9931234567)

 

10586

0

4

    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Beliebte Tags letzte 7 Tage

    Loading...Loading...Loading...Loading...Loading...Loading...Loading...Loading...Loading...Loading...