mit asterisk ip direkt anrufen

britzelfix

Gesperrt
Mitglied seit
28 Mai 2004
Beiträge
1,099
Punkte für Reaktionen
0
Punkte
0
Hi,

mich interessiert wie ich mit asterisk eine
IP direkt anrufen kann. Das Protokoll ist dabei
unwichtig.

In der extensions.conf könnte stehen:

exten => _111,1,SetCallerId,$("britzelfix")
exten => _111,2,Dial(Proto/user:p[email protected],60,tr)
exten => _111,3,Hangup

Hat das schon jemand versucht?
Mit welchen Protokollen klappt es?

Gruß
britzelfix
 
würde mich auch interessieren. besonders SIP Direct IP Call
 
britzelfix schrieb:
Hi,

mich interessiert wie ich mit asterisk eine
IP direkt anrufen kann. Das Protokoll ist dabei
unwichtig.

In der extensions.conf könnte stehen:

exten => _111,1,SetCallerId,$("britzelfix")
exten => _111,2,Dial(Proto/user:p[email protected],60,tr)
exten => _111,3,Hangup

Hat das schon jemand versucht?
Mit welchen Protokollen klappt es?

Gruß
britzelfix

Wie willst Du dabei die Adresse übergeben? Oder ist das als Kurzwahl gedacht?

exten => _111,2,Dial(Proto/user@host:port,60,tr)

sollte reichen, es sein denn der Server braucht eine Authentifizierung, was aber wenig Sinn macht, wenn Du jemanden direkt anrufen willst

Bei ENUM Wahl passiert auch nichts anderes:

...
exten => _+.,5,Dial(${ENUM},30,tr); + ist hier Prefix für ENUM Wahl in der Variablen ENUM steht z.B. sip:[email protected]
...

jo
 
Wie willst Du dabei die Adresse übergeben? Oder ist das als Kurzwahl gedacht?

exten => _111,2,Dial(Proto/user@host:port,60,tr)

sollte reichen, es sein denn der Server braucht eine Authentifizierung, was aber wenig Sinn macht, wenn Du jemanden direkt anrufen willst
jo

warum macht eine Authentifizierung keinen sinn?

Bei ENUM Wahl passiert auch nichts anderes:

...
exten => _+.,5,Dial(${ENUM},30,tr); + ist hier Prefix für ENUM Wahl in der Variablen ENUM steht z.B. sip:[email protected]
...

jo

Das ist wohl ein Unterschied, da sip:[email protected]
die Adresse des Gateway's ist.

Gruß
britzelfix
 
sipgate war auch nur ein Beispiel, es geht auch mit user@dyndnshost:port
oder user@IP:port

Für die Wahl spielt es keine Rolle, ob es ein SER, Asterisk, X-Lite oder sontiger ist, der angesprochen werden soll.

jo
 
Nö, [email protected] ist die Adresse des Users.
Genauso kann man einen beliebigen anderen User auch anrufen.

Eine Authentifizierung macht deshalb keinen Sinn, weil dann jeder, der dich anrufen möchte vorher eine Benutzerkennung und ein Paßwort wissen müßte.
Das schränkt den Kreis der möglichen Anrufer natürlich erheblich ein.
 
Fux schrieb:
Nö, [email protected] ist die Adresse des Users.
Stimmt, und die besteht aus namen@gateway und nicht name@dest-host..
Ich sehe wir entfernen uns ziemlich von der eigentlicher Frage
ob direct-ip-call möglich ist, oder nicht. Und ein direct-call sollte nicht
über ein Gateway gehen, so wie es bei SIP und anderen Protos. üblich ist.

Fux schrieb:
Genauso kann man einen beliebigen anderen User auch anrufen.
Du meinst wenn man die Adresse folgender weise austauscht:
sip:[email protected]
in
sip:888888@dest-host

Hast Du das schon mal probiert?
Und funktioniert es denn auch?


Fux schrieb:
Eine Authentifizierung macht deshalb keinen Sinn, weil dann jeder, der dich anrufen möchte vorher eine Benutzerkennung und ein Paßwort wissen müßte.
Das schränkt den Kreis der möglichen Anrufer natürlich erheblich ein.

Also hier kann ich nicht folgen. Du meinst Busfahren macht keinen
Sinn, weil man vorher ein Fahrschein kaufen muß?!?!

Eine Authentifizierung kann sehr von Vorteil sein, auch wenn Sie etwas
umständlich ist. Man weiß dann, wer am anderen Ende ist.
Ich denke es sollte kein Problem sein es mit oder ohne Authentifizierung
einzurichten.

IAX2 benutz übrigens auch eine Public-Key Authentifizierung, diese
ist etwas leichter zu handhaben.


Gruß
britzelfix
 
sip:888888@dest-host

Hast Du das schon mal probiert?
Und funktioniert es denn auch?

Ja und ja.
Es funzen übrigens auch:
Code:
Dial(SIP/[email protected]) und
Dial(SIP/meinATA.dyndns.org)

Zur Authentifizierung: Wenn du nur für bestimmte Benutzer erreichbar sein willst - OK.
Normal verstehe ich aber unter Telefonieren, daß mich jeder anrufen kann - ohne vorher einen Busfahrschein kaufen zu müssen ;-).
 
Fux schrieb:
he ich aber unter Telefonieren, daß mich jeder anrufen kann - ohne vorher einen Busfahrschein kaufen zu müssen ;-).
Gut, dann fahre ich kein Bus mehr. :D

Danke für alle Antworten.

Gruß
britzelfix
 
Zur Ergänzung: für IAX2 Protokoll könnte das so aussehen:
Code:
exten => _111,2,Dial(IAX2/user@host/extension@context,60,tr)
oder
Code:
exten => _111,2,Dial(IAX2/user@host/extension,60,tr)
Im zweiten Fall wird der default context aus iax.conf genommen.
 
Ich habe noch Probleme mit dem Direct IP Call und asterisk: Wenn ich die IP des Gesprächspartners angebe, dann klappt alles wunderbar, aber mit dem Dyndns-Namen gibt es Probleme.

Das klappt:

Code:
exten => 4,1,SetCIDName(voipalex)
exten => 4,2,Dial(SIP/193.99.144.71,60,tr)
exten => 4,3,Hangup

Das klappt leider nicht:

Code:
exten => 3,1,SetCIDName(voipalex)
exten => 3,2,Dial(SIP/beispiel.dyndns.org,60,tr)
exten => 3,3,Hangup



Hier die Ausgabe der asterisk-Konsole:
Code:
*CLI>   == Primary D-Channel on span 1 up for TEI 64
    -- Executing SetCIDName("Zap/2-1", "voipalex") in new stack
    -- Executing Dial("Zap/2-1", "SIP/beispiel.dyndns.org|60|tr") in new stack
    -- Accepting call from '51' to '3' on channel 0/2, span 1
Oct 24 21:15:28 WARNING[278545]: chan_sip.c:1348 create_addr: No such host: beispiel.dyndns.org
Oct 24 21:15:28 NOTICE[278545]: app_dial.c:727 dial_exec: Unable to create channel of type 'SIP'
  == Everyone is busy/congested at this time
    -- Executing Hangup("Zap/2-1", "") in new stack
  == Spawn extension (default, 3, 4) exited non-zero on 'Zap/2-1'
    -- Hungup 'Zap/2-1'

Er scheint den Hostnamen nicht auflösen zu können obwohl ich auf dem Asterisk-Rechner den dyndns-Namen anpingen kann (und dazu muss er ja ein DNS Lookup durchführen).

In der sip.conf habe ich "srvlookup=yes" stehen. Das müßte doch stimmen, oder?
 
SRV lookup hat mit deinem Problem nichts zu tun. Das braucht man nur, wenn innerhalb einer Domain der SIP Proxy gesucht werden soll.

Du könntes mal versuchen, ein @ vor den hostnamen zu schreiben. Normalerweise erwarte er ja user@host. Bei einigen Clients ist der auch erforderlich.

jo
 
rollo schrieb:
SRV lookup hat mit deinem Problem nichts zu tun. Das braucht man nur, wenn innerhalb einer Domain der SIP Proxy gesucht werden soll.

Du könntes mal versuchen, ein @ vor den hostnamen zu schreiben. Normalerweise erwarte er ja user@host. Bei einigen Clients ist der auch erforderlich.

jo

bin mir ziemlich sicher, dass es was damit zu tun hat und werde demnächst Ergebnisse präsentieren. Das @ hat nichts gebracht..
 
voipalex schrieb:
rollo schrieb:
SRV lookup hat mit deinem Problem nichts zu tun. Das braucht man nur, wenn innerhalb einer Domain der SIP Proxy gesucht werden soll.

bin mir ziemlich sicher, dass es was damit zu tun hat und werde demnächst Ergebnisse präsentieren. Das @ hat nichts gebracht..

Bin mal gespannt, wie Du SRVs neu definieren willst ;)

Also,

Code:
exten => _*,1,SetCallerID,jo
exten => _*,2,SetCIDName,"jo "
exten => _*,3,Dial(SIP/[email protected],60,r)
exten => _*,4,Congestion

funktioniert, wenn ich einen * wähle passiert folgendes:

Code:
    -- Executing SetCallerID("SIP/2003-cc4a", "jo") in new stack
    -- Executing SetCIDName("SIP/2003-cc4a", "jo ") in new stack
    -- Executing Dial("SIP/2003-cc4a", "SIP/[email protected]|60|r") in new stack
    -- Called [email][email protected][/email]
    -- SIP/fwd.pulver.com-99a8 is ringing
    -- SIP/fwd.pulver.com-99a8 answered SIP/2003-cc4a
    -- Attempting native bridge of SIP/2003-cc4a and SIP/fwd.pulver.com-99a8
    -- Attempting native bridge of SIP/2003-cc4a and SIP/fwd.pulver.com-99a8

d.h. user@host funktioniert.

Was ich nicht hinbekomme, ist die Übergabe einer SIP URI von einem Client an Asterisk. Habe auch in der Doku nichts erhellendes dazu gefunden. Bei Asterisk kommt nur der userpart an, alles nach und inclusive des @ wird ignoriert.

Vielleicht weiss jemand, wie der Dialplan dazu aussehen muss, damit der gesamte String gewählt wird.

jo
 
Hast leider recht gehabt: Mit dem srvlookup hatte das nichts zu tun. edit: hat es doch! mit srvlookup=no klappt es

Hast du schon mal probiert, eine dyndns Adresse anzuwählen (also keine SIP Adresse, die irgendwo registriert ist wie FWD)? Ich bekomme das einfach nicht hin.
Leute anzurufen, die irgendwo registriert sind klappt einwandfrei: Ich kann erfolgreich einen Freund anrufen, der bei 1und1 ist.
 
voipalex schrieb:
Hast du schon mal probiert, eine dyndns Adresse anzuwählen (also keine SIP Adresse, die irgendwo registriert ist wie FWD)? Ich bekomme das einfach nicht hin.
Also bei mir funktioniert das einwandfrei. Ich versteh das auch nicht. Es sollte eigentlich völlig egal sein, ob man die IP Nummer oder die dyndns domain anwählt. Also, wenn das eine geht, sollte das andere auch gehen.
Deshalb kommt nach meiner Logik nur ein Tippfehler oder eine falsche Domain in Frage. Bist du dir absolut sicher, dass die dyndns domain richtig geschrieben ist und auf die richtige IP Nummer verweist?
 
Bin mir völlig sicher, dass es nicht an einem Tippfehler der dyndns-Adresse liegt. Die dyndns-Adresse zeigt auch auf die richtige IP.
Woran könnte es noch liegen? An meiner sip.conf?
Code:
[general]
tos=0x18
dtmfmode=info
canreinvite=no
insecure=very
context=default
port=5062
bindaddr=0.0.0.0
srvlookup=yes
disallow=all
allow=gsm
allow=ilbc
allow=speex
allow=ulaw
allow=alaw
nat=no
register => 1234567:[email protected]/1234567
externip = meindnsname.dyndns.org
localnet=192.168.0.0/255.255.0.0
[sipgate]
type=friend
username=1234567
secret=passwort
host=sipgate.de
fromuser=1234567
fromdomain=sipgate.de
context=default
canreinvite=no
qualify=yes
disallow=all
allow=gsm
insecure=very
nat=no
dtmfmode=info
tos=0x18

Kurze Anmerkung dazu:
- sipgate Accountdaten und der dyndns-Name wurden sicherheitshalber abgeändert
- Asterisk befindet sich hinter einem Router, der unter meindnsname.dyndns.org zu finden ist

Könntest du mal bitte deine sip.conf posten (Passwörter und ähnliches bitte streichen)?

Edit 15:39 Uhr:

JUHU! Fehler und Workaround gefunden!

Da ich folgende Einstellung benutze:
externip = meindnsname.dyndns.org
kann ich mit meiner aktuellen Konfiguration niemand per Direkt IP anrufen wenn dessen SIP-Adresse ebenfalls ein dyndns.org hostname ist.

Wie ich darauf komme:
Ich habe demjenigen, den ich anrufen wollte noch zusätzlich einen dyndns-Hostname verpaßt allerdings aus dem Bereich homedns.org

Wähle ich den homedns.org hostname, dann klappt es. Wähle ich allerdings den dyndns.org hostname, dann klappt es nicht.

Wsa muss ich an Asterisk ändern, damit das auch mit Gesprächspartnern aus der gleichen Domain (dyndns.org) klappt?

Nachtrag:
Es hat doch nichts damit zu tun. Siehe http://www.ip-phone-forum.de/forum/viewtopic.php?p=45807#45807

Anmerkung von Christoph: Antworten auf eigene Beiträge innerhalb von 24 Stunden ist Spamming. Bitte "Edit"-Funktion beachten.
 
Brauchst du externip überhaupt in der sip.conf? Dein Asterisk hängt doch nicht hinter einem Router, oder etwa doch?
Aber trotzdem verstehe ich das nicht. Bei mir funktioniert es auch, wenn ich meine dyndns domain in externip eintrage und einen anderen Rechner mit der gleichen toplevel domain anrufe.

Meine (Test-)Umgebung sieht folgendermaßen aus:
1. Asterisk läuft auf dem Router (lokal: 192.168.99.1, internet: meinrechner.dyndns.org).

2. 192.168.99.0 bezeichnet mein lokales Netzwerk.

3. Auf meinem Desktop PC (192.168.99.2) hab ich kphone.

4. Der domain zumtesten.dyndns.org hab ich die Nummer 192.168.99.2 zugewiesen.

sip.conf:
Code:
[general]
language=de
context=default                 ; Default context for incoming calls
port=5060                       ; UDP Port to bind to (SIP standard port is 5060)
bindaddr=0.0.0.0                ; IP address to bind to (0.0.0.0 binds to all)
srvlookup=yes                   ; Enable DNS SRV lookups on outbound calls
externip=meinrechner.dyndns.org
disallow=all                    ; First disallow all codecs
allow=ilbc
allow=g726
allow=ulaw                      ; Allow codecs in order of preference
allow=alaw                      ; Note: codec order is respected only in [general]
allow=gsm
localnet=192.168.99.0/255.255.255.0; All RFC 1918 addresses are local networks
tos=lowdelay
In extensions.conf steht:
Code:
exten => 85,1,Dial(SIP/zumtesten.dyndns.org)
Über die 85 kann ich nun das kphone anrufen. Es spielt keine Rolle, ob ich in der sip.conf externip drin habe oder nicht.

Hilft dir das weiter?
 
wrrdlbrrmpft schrieb:
Brauchst du externip überhaupt in der sip.conf? Dein Asterisk hängt doch nicht hinter einem Router, oder etwa doch?

Wie bereits erwähnt läuft Asterisk hinter einem Router und deshalb ist der externip Eintrag notwendig.
 
voipalex schrieb:
Wie bereits erwähnt läuft Asterisk hinter einem Router und deshalb ist der externip Eintrag notwendig.
Ja, richtig! Was mich verwirrt hat ist, dass du nat=no gesetzt hast. Ich wüsste jetzt aber nicht, was das mit diesem Problem zu tun haben könnte, wahrscheinlich gar nichts.

Die Fehlermeldung war "no such host", richtig?

Kannst du die dyndns domain, die jetzt nicht funktioniert, anrufen, wenn du deine toplevel domain änderst? Ich würde gerne mal ausschließen, dass die domain generell Probleme bereitet (warum auch immer).

Vielleicht liefert ein sip debug hilfreiche Informationen.
 
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.