SIP - versteh ich das richtig

NebuK

Neuer User
Mitglied seit
16 Jan 2005
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
so hallo nochmal ...

nachdem ich den MP3Player command besigt hab wollte ich nun mal fragen ob ich das ganze sip zeugs eigentlich richtig verstehe:

ich koennte mein asterisk so konfigurieren dass er einen port xy nach aussen aufmacht, und jemand anderes koennte mit meiner ip (und z.b. dem namen meines sip-"users") bei mir anrufen und asterisk wuerde dann (wenn er denn richtig konfiguriert ist) den anruf an eben diesen SIP user weiterleiten?

danke mal soweit

- dario
 
Das ist die Basisfunktion eines SIP Gateways ;)

jo
 
okidoki ... ich hab jetzt mal die beiden ports (auf udp und tcp) nach aussen aufgemacht und ein wenig rumgetestet ... hier erstmal meine configs

Code:
[isdn]
exten => _X.,1,Dial(SIP/phone1,10)
exten => _X.,2,Wait(5)
exten => _X.,3,Wait(5)
exten => _X.,4,Wait(2)
exten => _X.,5,Answer()
exten => _X.,6,Wait(1)
exten => _X.,7,Goto(vmail_int,s,1)


[sip]
exten => _X.,1,Dial(CAPI/@50:${EXTEN},60,r)
exten => 1,1,Goto(vmail_int,s,1)

(die is natuerlich noch groesser ... aber der rest is ja unwichtig) und

Code:
[general]
port = 5060 ; Port to bind to
bindaddr = 0.0.0.0 ; Address to bind to
;  context = sipin ;default Default for incoming calls
disallow=all
allow=ulaw


[phone1]
type=friend
host=dynamic
secret=daddel
dtmfmode=inband ; Choices are inband, rfc2833, or info
context=sip

jetzt die frage: wie krieg ichs hin dass alle ueber SIP einkommenden (und sie kommen schon an) calls einfach an phone1weitergeleitet werden? ich hab schon probiert in der sip.conf [general] context = sipin zu setzen und dann in der extensions.conf ein [sipin] mit exten => _X.,1,Dial(SIP/phone1,10) reinzuhaun ... ohne erfolg. auf der gegenseite wird von kphone ein 'invalid call' geworfen.
 
hm ... ich glaube ich konnte das problem jetzt ein wenig genauer lokalisieren. hier ist der debug output von asterisk wenn jemand ueber sip anruft

Code:
Sip read: 
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP 80.135.96.234;branch=z9hG4bK3521531E
CSeq: 2765 INVITE
To: <sip:[email protected]>
Content-Type: application/sdp
From: "Stefan Knoblich" <sip:[email protected]>;tag=1A1B0132
Call-ID: [email protected]
Subject: sip:[email protected]
Content-Length: 187
User-Agent: kphone/4.1.0
Contact: "Stefan Knoblich" <sip:[email protected];transport=udp>
 
v=0
o=username 0 0 IN IP4 80.135.96.234
=The Funky Flow
c=IN IP4 80.135.96.234
t=0 0
m=audio 32902 RTP/AVP 0 97 3
a=rtpmap:0 PCMU/8000
a=rtpmap:3 GSM/8000
a=rtpmap:97 iLBC/8000
 
11 headers, 9 lines
Ignoring this request
edward*CLI> 
 
Sip read: 
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP 80.135.96.234;branch=z9hG4bK3521531E
CSeq: 2765 ACK
To: <sip:[email protected]>;tag=as0ac7bbd2
From: "Stefan Knoblich" <sip:[email protected]>;tag=1A1B0132
Call-ID: [email protected]
Content-Length: 0
User-Agent: kphone/4.1.0
Contact: "Stefan Knoblich" <sip:[email protected];transport=udp>
 
 
9 headers, 0 lines
Destroying call '[email protected]'
 
hrmm... eigentlich sollte das mit dem context = sipin genau so tun. Tu hast asterisk auch richtig neu gestartet?

Was den sip-debug anbelangt: könntest Du mal ohne sip debug mal das noch posten was asterisk sonst so auf dem CLI an meldungen rauswirft, wenn Du einen anruf von extern reinschickst?
 
hm ...

ich habs jetzt mit folgenden zum funktionieren gebracht (also dass mein sip phone namens 01 angerunfen wird)

[sipin]
exten => 01,1,Dial(SIP/01,10)
exten => 01,2,Goto(vmail_int,s,1)
exten => phone1,1,Dial(SIP/01,10)
exten => phone1,2,Goto(vmail_int,s,1)

allerdings ... bekomm ich anscheinend kein ton ueber die leitung ... allerdings kann das hier gradeben auch an der gegenseite liegen. waer klasse wenn jemand mal testen koennte: [email protected] oder [email protected] ... kann sein dass nur eins davon funktioniert :/

danke mal soweit :)
 
hm ok ... angerufen werden kann ich jetzt zwar - mein softphone klingelt auch. nur danach stille. hier erstmal meine netzwerkarch:

asterisk server (mit isdn karte, ist gleichzeitig auch router) --> client (der softphone rennen hat und nur den router eingetragen hat - also keine direct conn zum inet)

jetzt stellt sich das problem wie folgend dar: ich hab auf dem router(=* server) ports 5060 auf tcp und udp und die ports 10000 bis 20000 (laut rtp.conf) auf tcp und udp freigegeben. incoming calls ueber sip kommen wie gesagt bis zum softphone durch. nur von kommunikation kann keine rede sein. hier ist der output von asterisk wenn ich den call annehmen:

Code:
    -- Saved useragent "SJLabs-SJphone/1.30.256b" for peer 01
    -- Executing Dial("SIP/sip.ram.rwth-aachen.de-08135428", "SIP/01|10") in new stack
    -- Called 01
    -- SIP/01-f422 is ringing
    -- SIP/01-f422 answered SIP/sip.ram.rwth-aachen.de-08135428
    -- Attempting native bridge of SIP/sip.ram.rwth-aachen.de-08135428 and SIP/01-f422
Mar  4 20:54:03 WARNING[29273]: rtp.c:1405 ast_rtp_bridge: codec0 = 269 is not codec1 = 2, cannot native bridge.
  == Spawn extension (sipin, 01, 1) exited non-zero on 'SIP/sip.ram.rwth-aachen.de-08135428'


danke schonmal fuers lesen
 
codec0 = 269 is not codec1 = 2,

nja, ich würde dann mal ein paar codecs mehr als nur ulaw zulassen ...
 
Wenn ich das jetzt richtig entziffere heisst das:

die eine Seite (269) kann
G723
ulaw
alaw
G729A

die andere Seite (2) kann
GSM

ein 'allow=ulaw' bzw alaw sollte da schon reichen.
 
habe zur zeit allow=all in der sip.conf [general]

ich denke das problem liegt irgendwie darin dass asterisk versuch deine direkte verbinden zwischen meinem sip client (lan-interne class c ip) und der gegenseite herzustellen was fehlschlaegt (siehe "-- Attempting native bridge of [...]"). die frage ist hier: muss man asterisk hier irgendwie umbauen um media-proxy zu spielen oder aehnliches?
(allerdings wenn das tatsaechlich so sein sollte verstehe ich nicht warum asterisk nicht tatsaechlich alles ueber sich laufen laesst).


vielen dank auf jeden fall fuer die hilfe bis dato :)
 
'allow=all' funktioniert glaube ich nicht so wie man es erwartet. Zumindest hab ich da sowas in Erinnerung. Mach besser erst 'disallow=all' und dann allow fuer ein paar codecs.
 
sodale ....

ich hab jetzt mal disallow=all und allow=ulaw allow=alaw reingehaun (natuerlich mit newlines) - is das soweit korrekt? (ich bekomme immernoch den gleichen fehler - kein audio auf beiden seiten)

danke aber mal trotzdem!
 
evtl. noch ein allow=gsm (je nachdem was die gegenseite so an codecs verwendet) und bei dem lokalen sip-teilnehmer noch ein canreinvite=no, damit asterisk im medienstrom drinbleibt und nicht versucht die beiden endpunkte direkt miteinander zu verbinden
 
ok ... mit allow=gsm drin und canreinvite=no nat=yes in beidem ([general] und sektion fuer mein phone) funktionierts jetzt - danke!
 
canreinvite=no nat=yes

Das wäre jetzt auch mal mein Tip gewesen, wobei interessant wäre ob nat=yes und canreinvite=yes auch funktioniert. Aber ich nehme an, dass hier zwingend der asterisk transkodieren muss und eine direkte verbindung wohl nahezu unmäglich ist, ausser der softclient kann irgendwie native, also von sich aus, mit nat korrekt umgehen.
 
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.