[Problem] Asterisk 1.4 - Gesprächspartner hört mich nicht

deylo

Neuer User
Mitglied seit
25 Okt 2012
Beiträge
11
Punkte für Reaktionen
0
Punkte
1
Hallo Leute,

ich habe ein eigenartiges Problem, bzw. mein Asterisk 1.4. Bei 10% aller Gespräche kann mich der Gesprächspartner nicht verstehen. Ich höre ihn, aber er mich nicht.

Es kann eigentlich nur an einer Fehlkonfiguration liegen. Testanrufe von einem IP-Anschluss und Handynetz sind erfolgreich gewesen, alles hat geklappt. Ich kann aber nicht genau sagen, ob das z.B. nur bei analogen Anschlüssen passiert.

Anbieter ist Sipgate (trunking). Hier mal ein Auszug aus der sip.conf

Code:
[general]
srvlookup=yes
port = 5060
bindaddr = 0.0.0.0

[XXXXX]
type=peer
host=sipconnect.sipgate.de
port=5060
username=XXX
fromuser=XXX
fromdomain=sipgate.de
secret=XXX
dtmfmode=rfc2833
disallow=all
allow=alaw
allow=ulaw
allow=g729
insecure=port,invite
nat=yes

Könnt Ihr dem Problem auf die Sprünge helfen? Vielen Dank schonmal.
 
Hallo deylo,

in welcher Umgebung steht der Server? Zuhause hinter einem Router? Hast du ggf. für die notwendigen Portweiterleitungen gesorgt? Die RTP-Range definierst du in der rtp.conf.


VG R.
 
Hallo rmh, danke für die schnelle Antwort.

Folgende Umgebung:
DSL --> Fritzbox 7390 --> TP-Link TL-SF1016D (Switch) --> Asterisk-Server

Ich kann mit RTP wenig anfangen, eine Portweiterleitung lässt sich bei der Fritzbox nicht für das RTP-Protokoll einstellen, nur UDP etc.

rtp.conf:

Code:
[general]
rtpstart=10000
rtpend=20000

Sollte ich diese Werte mal verändern? Und wie ist das mit der Portweiterleitung bei der FB 7390?
 
RTP ist ein Layer-5 Protokoll - Sprich es nutzt UDP als Transportprotokoll. Daher solltest Du eigentlich ein UDP-Portforwarding bzw. PortRangeforwarding (10000 - 20000 - wobei 10000 Ports ganz schön mit Kanonen auf Spatzen geschossen ist) in Deiner Fritzbox haben.

Wobei das eigentlich nicht das Problem sein kann, da ausgehend kein Problem des Forwardings ist. Hast Du vielleicht irgendwo eine Firewall, die augehenden Traffic blockt?
 
Hab ich mir fast gedacht. Deine FB hat bereits den SIP-Port 5060 für sich in Anspruch genommen, daher kann dein Asterisk-Server, welcher sich offenbar hinter der Fritzbox befindet, nicht sinnvoll arbeiten.
Es gibt jetzt mehrere Möglichkeiten. Die einfachste ist die Frizbox wegzuwerfen ähh, ich meinte natürlich den SIP-Port des Asterisk-Server zu ändern (z.B. 5070) und eine UPD-Weiterleitung in deiner FB mit dem neuen Port zur statischen LAN-Adresse deines Asterisk-Servers einzurichten. Die RTP-Range würde ich an deiner Stelle deutlich einschränken. Pro aktivem Gespräch benötigst du zwei Ports. Du kannst z.B. 10000-10100 hinterlegen, das sollte vorerst reichen. Die RTP-Range muss nätürlich von deiner FB ebenfalls an den Server "durchgereicht" werden, und zwar als UDP.

Das Thema Sicherheit nicht außer Acht lassen, sonst kann's teuer werden. Siehe diverse Meldungen hier im Forum.


VG R.
 
@rmh
Da muss ich Dich etwas korrigieren. Es funktioniert - sogar sauber (habs genau so am laufen mit ner 7390). Das einzige was passieren muss, ist dass relativ häufig SIP OPTIONS (qualify=yes bei den eingetragenen Peers) Pakete versendet werden müssen, damit das Tor in der NAT-Table offen bleibt. Es so zu bauen ist sicherheitstechnisch sogar sehr sinnvoll!

Ausserdem scheint ja nicht SIP sein Problem zu sein, sondern RTP.

@TO
Mach mal bitte ein rtp debug on
 
Nichts für ungut, aber den Port 5060 zwei mal zu verwenden halte ich für absolut sinnfrei und das wird früher oder später zu sehr setsamen Phänomenen führen. Wenn man weiß, dass der Router ein SIP-ALG hat, dann verwendet man entweder einen anderen Router, oder man geht auf andere Ports. Nicht nur RTP ist hier das Problem, sondern vermutlich auch, dass der Asterisk-Server nur seine LAN-IP (ich sehe kein externhost) kennt. Spätestens bei einem reinvite knallt es dann. Aber das findet ihr alles ganz von alleine raus und werdet sicherlich dann auch hier nachfragen oder bereichten. :)
Es ist halt immer schwierig mit so wenigen Infos (und ohne Signatur) zu erkennen, wo der Schuh drückt bzw. zu erahnen, was an Wissen da ist und wo noch Bedarf besteht.
 
@rmh: Ich bin Asterisk-Neuling, habe beim Aufsetzen Learning-by-Doing angewandt ;-)

Das mit dem Port werde ich auch noch ändern, das stimmt.

Hier ein kurzer RTP Debug bei funktionierendem Gespräch, d.h. beide Gesprächspartner waren zu hören, den MaverrickTM haben wollte.
Code:
Got  RTP packet from    192.168.178.21:5004 (type 00, seq 041374, ts 13711520, len 000160)
Sent RTP packet to      217.10.77.41:55648 (type 00, seq 051340, ts 13711520, len 000160)
Got  RTP packet from    217.10.77.41:55648 (type 00, seq 052569, ts 118101392, len 000160)
Sent RTP packet to      192.168.178.21:5004 (type 00, seq 009850, ts 118101392, len 000160)
Got  RTP packet from    192.168.178.21:5004 (type 00, seq 041375, ts 13711680, len 000160)
Sent RTP packet to      217.10.77.41:55648 (type 00, seq 051341, ts 13711680, len 000160)
Got  RTP packet from    217.10.77.41:55648 (type 00, seq 052570, ts 118101552, len 000160)
Sent RTP packet to      192.168.178.21:5004 (type 00, seq 009851, ts 118101552, len 000160)

Die 192.168.178.21 ist das IP-Telefon, die andere IP-Adresse Sipgate.
 
Naja, das Problem tritt ja nur bei 10% der Telefonate auf. Daher ging ich erstmal von einer "sauberen" sip.conf aus. Aber Du hast recht - es sind eindeutig zu wenig infos. Daher wäre es auch schön, wenn der TO mal seine gesamte sip.conf posten würde.

[EDIT]
@deylo
Es bringt uns nichts, den rtp-debug eines sauberen Anrufs zu sehen :lach:

Es muss natürlich der eines Problem-Anrufs sein.
[/EDIT]

[EDIT2]
Hast Du in Deinem Telefon eigentlich einen STUN-Server eingetragen?
[/EDIT2]
 
Zuletzt bearbeitet:
Gerne, bitteschön:

sip.conf
Code:
[general]
srvlookup=yes
port = 5070 <-- gerade geändert, muss ich noch kontrollieren, ob es greift
bindaddr = 0.0.0.0


register => SIPGATEID:[email protected]/SIPGATEID

;Grandstream GXP1450 Line1
[2101]
type=friend
username=2101
secret=XXXX
host=dynamic
context=2101out

;Grandstream GXP1450 Line2
[2102]
type=friend
username=2102
secret=XXXX
host=dynamic
context=2102out

;Rufnummern

[SIPGATEID]
type=peer
host=sipconnect.sipgate.de
port=5060
username=SIPGATEID
fromuser=SIPGATEID
fromdomain=sipgate.de
secret=PW
qualify=yes
dtmfmode=rfc2833
disallow=all
allow=alaw
allow=ulaw
insecure=port,invite
nat=yes

[49.............] <-- Rufnummer
type=peer
host=sipconnect.sipgate.de
port=5060
username=SIPGATEID
fromuser=SIPGATEID
fromdomain=sipgate.de
secret=PW
dtmfmode=rfc2833
disallow=all
allow=alaw
allow=ulaw
allow=g729
insecure=port,invite
nat=yes

[..plus weitere Rufnummern..]

extensions.conf (Ausschnitt für "context" ausgehende Telefonate
Code:
[2101out]
 exten => _0[1-9].,1,Set(CALLERID(num)=49.......)
 exten => _0[1-9].,2,Dial(SIP/${EXTEN}@49.......)
 include => default
 exten => h,1,Hangup()

[2102out]
 exten => _0[1-9].,1,Set(CALLERID(num)=49.......)
 exten => _0[1-9].,2,Dial(SIP/${EXTEN}@49.......)
 include => default
 exten => h,1,Hangup()

Ich bin mir auch im Klaren darüber, dass bei dem Code Verbesserungspotenziale bestehen ;-)

Edit:
Im Telefon -> "NAT Traversal (STUN): nein" ---
Hier gibt es noch:
- STUN
- aktiv behalten
- UPnP
- Auto
- VPN
Welchen soll ich auswählen?
 
Zuletzt bearbeitet:
Pack mal bitte folgendes ins general der sip.conf und führe ein "sip reload" aus.

Code:
externhost=dein-hostname.dyndns.org

[EDIT]
achja, pack mal bitte ein STUN-Server in Dein Telefon

Code:
STUN-Server: stun.sipgate.net
STUN-Port: 10000
[/EDIT]

Zeig mir mal bitte Dein [default] aus der extension.conf.
 
Zuletzt bearbeitet:
- Meinst Du, dass ein Dyndns vergeben werden muss? Oder MUSS die Variable "externhost" belegt sein?

- STUN-Server wollte ich am Telefon eintragen, ich kann aber nur einen Haken bei STUN-Server setzen. Muss ich den STUN nicht vllt. in die extensions.conf oder sip.conf packen?

- Hier der Code vom [default] in abgespeckter Form, der Rest ist irrelevant.

Code:
[default]

exten => 2101,1,Dial(SIP/2101)
exten => 2102,1,Dial(SIP/2102)

exten => SIPGATEID,1,Answer()
exten => SIPGATEID,n,Goto(${CUT(CUT(SIP_HEADER(To),@,1),:,2) },1)
exten => SIPGATEID,n,Hangup()
exten => h,1,Hangup()

exten => 49....,1,Answer()
exten => 49....,2,Dial(SIP/2101,25,m(mohwelcome)tA(_incoming-std))
 exten => s-ANSWER,1,Hangup()
 exten => s-NOANSWER,1,Goto(49....,7)
 exten => s-BUSY,1,Goto(49....,7)
exten => 49....,3,Hangup()
exten => h,1,Hangup()
 
Die Variable muss irgendeine dyndns, no-ip oder sonstwelche Adresse enthalten, womit der Asterisk seine eigene externe IP-Adresse rausfinden kann. Mich wunderts, dass es bisher nur bei 10% der Verbindungen Probleme gegeben hat...

Ich wollte Dein [default] Context sehen, um erstmal auszuschliessen das Du gerade kein open Relay betreibst, nachdem Du den Server nun von aussen erreichbar gemacht hast. Sowas kann ziemlich schnell sehr sehr teuer werden.

Der STUN-Server muss ins Telefon. Setz den Haken, danach werden sicherlich die benötigten Felder auftauchen.

Warum verwendest Du eigentlich Asterisk 1.4? Die Version ist mittlerweile ur-alt!
 
Okay, dann richte ich das noch ein.

Warum ich 1.4 verwende? Mittlerweile frage ich mich das auch. Vor knapp einem Jahr habe ich angefangen mich ein bisschen mit Asterisk und Linux zu beschäftigen, die Installation hat allerdings nur mit 1.4 geklappt. Denke mal, dass ich jetzt auch ne neuere Version aufspielen könnte, aber dann fangen die Probleme wieder von vorn an :)

STUN hab ich den Haken gesetzt, aber ich konnte nichts weiter eingeben.
 
Wenn Du keinen STUN in das Telefon bekommst, dann setz mal ins general der sip.conf und mach nen "sip reload". Damit sollte der gesamte RTP-Traffic über den Asterisk laufen, sodass kein STUN am Telefon notwendig ist.

Code:
canreinvite=no
 
Okay, das "canreinvite=no" habe ich in die sip.conf gesetzt. So wie ich Dich gerade verstanden habe, muss ich dann kein STUN-Server mehr eintragen?
 
Genau. Der RTP-Traffic läuft nun über den Asterisk.
 
Okay, das habe ich dann reingesetzt.

Außerdem habe ich den Port auf 5070 geändert und die externip mit meinem DynDNS-Account befüllt. Die Range ist auch auf von 10000 bis 11000 geändert.

Theoretisch ist jetzt alles in Ordnung und sollte eigentlich funktionieren, oder hab ich noch was vergessen?

Gruß D.
 
Bevor Du Deinen Asterisk per 5070 Forwarding ins WAN stellst, stelle unbedingt sicher das Du kein offenes Relay betreibst. Ansonsten bist Du der nächste, der sich im Thread "Hacker in meinem Asterisk Server" meldet...
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.