[Projekt] LDAP Server für VoIP mit Asterisk nutzen

betateilchen schrieb:
Ob es ganz ohne sip.conf geht, weiß ich nicht, das hab ich nie getestet.
Meine sip.conf sieht jedenfalls so aus:

Code:
[general]
port = 5060                     ; Sipport
bindaddr = 0.0.0.0        ; Addresse für den SIP Kanal
srvlookup = yes                 ; Enable DNS SRV lookups on outbound calls
maxexpirey=3600
defaultexpirey=120
dtmfmode=rfc2833
nat=no
allow=all
;rtcachefriends=yes
rtautoclear=yes
context=ankommend

Also nix peer-spezifisches enthalten.
Probiere mal mit
sipusers=>ldap,ou=Accounts|ou=Asterisk|dc=mydomain|dc=com,sip

Erfolge zeichnen sich ab :)
Ich hatte bisher die 1.2.1-Sourcen verwendet. Mit dem svn-Source klappts auf Anhieb :)

Nicht, das alles funktioniert, aber ich habe Reaktion im LDAP, Fehlermeldungen, etc ..

Ab jetzt wirds lustig ;)
 
ich verwende übrigens die Asterisk 1.2.0 Sourcen.
 
Kann mir jemand von Euch vielleicht weiterhelfen:

Ich habe jetzt ein Open-Xchange am laufen und alle meine ehemaligen Outlook-Kontakte mittels OXLook auf den Server spielen können. Soweit so gut. Open-Xchange stellt die Adressbücher via OpenLDAP bereit. So weit so gut. Ich habe mich bisher nicht für IPTelefonie interessiert. Auf der Suche nach einem LDAP-fähigem Telefon bin ich über diese Posts hier gestolpert.

Meine Fragen:
1. Gibt es jetzt schon ein IP-Telefon, daß sich an eine LDAP-Datenbank ranhängen kann?
2. Wenn ja, wie groß sind die Chancen, daß so ein Telefon mit der dem Open-Exchange LDAP-Adressbuch zurecht kommt?
3. Kann ich bei einem Umstieg auf IP-Telefonie meine bisherige Telefonnummer beibehalten?
4. Wenn ja, kann auch meine Frau mit dem IP-Telefon umgehen?

Außerdem würde mich noch folgendes interessieren:

5. Gibt es IP-Telefone, die einen Anrufbeantworter beinhalten, so daß ich die VoiceMessages an meinen Server weiterleiten kann bzw. per Email verteilen kann?
6. Gibt es IP-Telefone, die auch FAXe empfangen können und diese über Ethernet bereitstellen können, z.B. and den Server schicken oder per Email weiterleiten (diese Frage ist schon Sinnvoll, da mein Server im Keller steht und dort kein Telefonanschluß bereitsteht, weswegen eine normale Faxserverlösung leider nicht in Frage kommt)

Zugegeben, meine Fragen lassen an eine eierlegende Wollmilchsau denken. Die Fragen 1-4 zu LDAP sind mir am wichtigsten.

Gruß, Martin
 
1. Gibt es jetzt schon ein IP-Telefon, daß sich an eine LDAP-Datenbank ranhängen kann?

meines Wissens noch nicht.

2. Wenn ja, wie groß sind die Chancen, daß so ein Telefon mit der dem Open-Exchange LDAP-Adressbuch zurecht kommt?

Das läßt sich erst beantworten, wenn man genau weiß, wie der Hersteller des Telefons den LDAP Client implementiert hat.

3. Kann ich bei einem Umstieg auf IP-Telefonie meine bisherige Telefonnummer beibehalten?

Suche mal hier im Forum nach "Rufnummernportierung" - da findest Du jede Menge Antworten.


4. Wenn ja, kann auch meine Frau mit dem IP-Telefon umgehen?

Blöde Fragen erfordern blöde Antworten :roll: also, welche Haarfarbe hat Deine Frau ?


5. Gibt es IP-Telefone, die einen Anrufbeantworter beinhalten, so daß ich die VoiceMessages an meinen Server weiterleiten kann bzw. per Email verteilen kann?
6. Gibt es IP-Telefone, die auch FAXe empfangen können und diese über Ethernet bereitstellen können, z.B. and den Server schicken oder per Email weiterleiten (diese Frage ist schon Sinnvoll, da mein Server im Keller steht und dort kein Telefonanschluß bereitsteht, weswegen eine normale Faxserverlösung leider nicht in Frage kommt)

Stöbere einfach mal hier im Forum ein bißchen in den Beiträgen - Du wirst die Antworten schon finden.

Die Fragen 1-4 zu LDAP sind mir am wichtigsten.

Die Fragen 3+4 haben aber mit LDAP überhaupt nix zu tun :!:

achja - willkommen im Forum !
 
Hallo betateilchen,

danke für Deine teilweise hilfreichen Antworten.

Ich muß nochmal nachhaken:

Zu Frage 1:

Was ist mit den erwähnten
* Siemens OptiPoint,
* dem IP200 von Innovaphone
* den Ciscos, oder
* dem Grandstream GXP2000?

Frage 4 war schon ernst gemeint. Ist ein IP-Telefon vom Bedienungskomfort mit konventionellen Telefonen vergleichbar oder muß man da Abstriche machen?

Zu 5 und 6 hättest Du Dich wenigstens noch zu einem Ja, Nein oder Jein durchringen können. Ich habe zumindest Hoffnung, daß es gehen könnte, sonst hättest Du wohl eher Nein geantwortet.

Fragen 3 und 4 haben - zumindest für mich - sehrwohl etwas mit LDAP zu tun: Wenn es ein LDAP-fähiges IP-Telefon gäbe, dann würde ich es unter den Gesichtspunkten 3 und 4 eventuell doch nicht verwenden können.
 
Zu Frage 1:
Was ist mit den erwähnten ...

Ich habe Deine Frage 1 bereits beantwortet :!:

zu Frage 3: Ob Du Deine Telefonnummer behalten kannst, hängt doch nicht vom Telefon ab :crazy: sondern von dem VoIP Provider, bei dem Du Kunde wist.

zu Frage 4: Ich kann den Intelligenzgrad Deiner Frau leider nicht beurteilen. "Telefonierenkönnen" ist aber bei Frauen wahrscheinlich genetisch verankert :wink: also mußt Du Dir da keine Sorgen machen. Wenn Du Fragen zur Funktionsweise hast, frag einfach Deine Frau, die erklärt Dir das dann :mrgreen:

Dein Fragen 5+6 habe ich auch schon beantwortet. Deine Bequemlichkeit, hier im Forum zu suchen, werde ich jedenfalls nicht unterstützen. Geh einfach mal davon aus, daß Du nicht der erste Anwender bist, der VoIP machen möchte. Und da dieses Forum bald 2 Jahre alt wird, kannst Du Dir auch vorstellen, daß viele Fragen hier auch schon beantwortet sind. Also streng Dich einfach mal ein bißchen selbst an.
 
hallo,
ich bin gerade dabei meine sip accounts in ldap auszulagern.

ich bekomme immer folgende fehlermeldung:
ldap_reconnect: LDAP RealTime: bind failed: Invalid DN syntax

meine res_ldap.conf schaut so aus:
Code:
[_general]
dbhost=127.0.0.1,voip.fh-stpoelten.ac.at        ; LDAP host(s)
dbbasedn="dc=voip,dc=fh-stpoelten,dc=ac,dc=at"  ; Base DN
dbpass=xxx   ; Bind password
dbuser="cn=admin,dc=voip,dc=fh-stpoelten,dc=ac,dc=at"; Bind DN

wie schaut das file bei euch aus?

mfg,
michael
 
hat sich erledigt, einfach die " weglassen!

dadurch hat sich natürlich gleich der nächste fehler ergeben:

LDAP RealTime: Could not find any entry matching (&(name=1002)) in base dn ou=Accounts.

das glaub ich schon, weils ja die uid is im ldap.

in der res_ldap.conf gibts bei den sip zuordnungen auch keinen name...

irgendwelche ideen?

mfg,
michael
 
könnte mir bitte jemand, der den ldap treiber schon zum laufen gebracht hat seine res_ldap.conf hier posten?

mfg,
michael
 
Nichts einfacher als das ... bitteschön !

Code:
[_general]
dbhost=<ip-adresse>   ; LDAP host(s)
dbbasedn=dc=<mydomain>,dc=<com>   ; Base DN
dbpass=<passwort>        ; Bind password
dbuser=cn=admin,dc=<mydonain>,dc=<com>    ; Bind DN

; Configuration Table
[config]
; Attributes mapping (asterisk variable name=ldap attribute name)
attribute = filename => oxyPBXConfigFilename
attribute = category => oxyPBXConfigCategory
attribute = variable_name => oxyPBXConfigVariableName
attribute = variable_value => oxyPBXConfigVariableValue
attribute = cat_metric => oxyPBXConfigCategoryMetric
attribute = commented => oxyPBXConfigCommented
additionalFilter=(objectClass=oxyPBXConfig)

[extensions]
attribute = context => oxyPBXExtensionContext
attribute = exten => oxyPBXExtensionExten
attribute = priority => oxyPBXExtensionPriority
attribute = app => oxyPBXExtensionApplication
attribute = appdata => oxyPBXExtensionApplicationData
additionalFilter=(objectClass=oxyPBXExtension)

[sip]
attribute = accountBaseDN => oxyPBXAccountBaseDN
attribute = accountcode => oxyPBXAccountAccountingCode
attribute = amaflags => oxyPBXAccountAMAFlags
attribute = callgroup => oxyPBXAccountCallGroup
attribute = callerid => oxyPBXAccountCallerID
attribute = canreinvite => oxyPBXAccountCanReinvite
attribute = context => oxyPBXAccountContext
attribute = dtmfmode => oxyPBXAccountDTMFMode
attribute = fromuser => oxyPBXAccountFromUser
attribute = fromdomain => oxyPBXAccountFromDomain
attribute = fullcontact => oxyPBXAccountFullContact
attribute = fullcontact => gecos
attribute = host => oxyPBXAccountHost
attribute = insecure => oxyPBXAccountInsecure
attribute = mailbox => oxyPBXAccountMailbox
attribute = md5secret => realmedPassword
attribute = nat => oxyPBXAccountNAT
attribute = deny => oxyPBXAccountDeny
attribute = permit => oxyPBXAccountPermit
attribute = pickupgroup => oxyPBXAccountPickupGroup
attribute = port => oxyPBXAccountPort
attribute = qualify => oxyPBXAccountQualify
attribute = restrictcid => oxyPBXAccountRestrictCID
attribute = rtptimeout => oxyPBXAccountRTPTimeout
attribute = rtpholdtimeout => oxyPBXAccountRTPHoldTimeout
attribute = type => oxyPBXAccountType
attribute = disallow => oxyPBXAccountDisallowedCodec
attribute = allow => oxyPBXAccountAllowedCodec
attribute = MusicOnHold => oxyPBXAccountMusicOnHold
attribute = regseconds => oxyPBXAccountExpirationTimestamp
attribute = regcontext => oxyPBXAccountRegistrationContext
attribute = regexten => oxyPBXAccountRegistrationExten
attribute = CanCallForward => oxyPBXAccountCanCallForward
additionalFilter=(objectClass=oxyPBXAccountSIP)

[iax]
attribute = accountBaseDN => oxyPBXAccountBaseDN
attribute = accountcode => oxyPBXAccountAccountingCode
attribute = amaflags => oxyPBXAccountAMAFlags
attribute = callerid => oxyPBXAccountCallerID
attribute = context => oxyPBXAccountContext
attribute = fullcontact => oxyPBXAccountFullContact
attribute = fullcontact => gecos
attribute = host => oxyPBXAccountHost
attribute = mailbox => oxyPBXAccountMailbox
attribute = md5secret => realmedPassword
attribute = deny => oxyPBXAccountDeny
attribute = permit => oxyPBXAccountPermit
attribute = port => oxyPBXAccountPort
attribute = qualify => oxyPBXAccountQualify
attribute = type => oxyPBXAccountType
attribute = disallow => oxyPBXAccountDisallowedCodec
attribute = allow => oxyPBXAccountAllowedCodec
attribute = regseconds => oxyPBXAccountExpirationTimestamp
attribute = regcontext => oxyPBXAccountRegistrationContext
attribute = regexten => oxyPBXAccountRegistrationExten
attribute = notransfer => oxyPBXAccountNoTransfer
additionalFilter=(objectClass=oxyPBXAccountIAX)
 
hmm, sollte passen...

ich habe jetzt in der extconfig statt "," "|" verwendet, dann hat er bei der fehlermeldung schon mal das richtige base dn:

LDAP RealTime: Could not find any entry matching (&(objectClass=oxyPBXAccountSIP)(name=1002)) in base dn ou=accounts|dc=voip|dc=fh-stpoelten|dc=ac|dc=at.


ok, hier nochmal alle meine configs, vielleicht kannst du mal kurz drüberschauen....

extconfig.conf:
Code:
voicemail => mysql,asterisk,voicemail_users
sipusers => ldap,ou=accounts|dc=voip|dc=fh-stpoelten|dc=ac|dc=at,sip
sippeers => ldap,ou=accounts|dc=voip|dc=fh-stpoelten|dc=ac|dc=at,sip

res_ldap.conf:
Code:
[_general]
dbhost=localhost        ; LDAP host(s)
dbbasedn=dc=voip,dc=fh-stpoelten,dc=ac,dc=at    ; Base DN
dbpass=xxx   ; Bind password
dbuser=cn=admin,dc=voip,dc=fh-stpoelten,dc=ac,dc=at; Bind DN

; Configuration Table
[config]
; Attributes mapping (asterisk variable name=ldap attribute name)
attribute = filename => oxyPBXConfigFilename
attribute = category => oxyPBXConfigCategory
attribute = variable_name => oxyPBXConfigVariableName
attribute = variable_value => oxyPBXConfigVariableValue
attribute = cat_metric => oxyPBXConfigCategoryMetric
attribute = commented => oxyPBXConfigCommented
additionalFilter=(objectClass=oxyPBXConfig)

[extensions]
attribute = context => oxyPBXExtensionContext
attribute = exten => oxyPBXExtensionExten
attribute = priority => oxyPBXExtensionPriority
attribute = app => oxyPBXExtensionApplication
attribute = appdata => oxyPBXExtensionApplicationData
additionalFilter=(objectClass=oxyPBXExtension)

[sip]
attribute = accountBaseDN => oxyPBXAccountBaseDN
attribute = accountcode => oxyPBXAccountAccountingCode
attribute = amaflags => oxyPBXAccountAMAFlags
attribute = callgroup => oxyPBXAccountCallGroup
attribute = callerid => oxyPBXAccountCallerID
attribute = canreinvite => oxyPBXAccountCanReinvite
attribute = context => oxyPBXAccountContext
attribute = dtmfmode => oxyPBXAccountDTMFMode
attribute = fromuser => oxyPBXAccountFromUser
attribute = fromdomain => oxyPBXAccountFromDomain
attribute = fullcontact => oxyPBXAccountFullContact
attribute = fullcontact => gecos
attribute = host => oxyPBXAccountHost
attribute = insecure => oxyPBXAccountInsecure
attribute = mailbox => oxyPBXAccountMailbox
attribute = md5secret => realmedPassword
attribute = nat => oxyPBXAccountNAT
attribute = deny => oxyPBXAccountDeny
attribute = permit => oxyPBXAccountPermit
attribute = pickupgroup => oxyPBXAccountPickupGroup
attribute = port => oxyPBXAccountPort
attribute = qualify => oxyPBXAccountQualify
attribute = restrictcid => oxyPBXAccountRestrictCID
attribute = rtptimeout => oxyPBXAccountRTPTimeout
attribute = rtpholdtimeout => oxyPBXAccountRTPHoldTimeout
attribute = type => oxyPBXAccountType
attribute = disallow => oxyPBXAccountDisallowedCodec
attribute = allow => oxyPBXAccountAllowedCodec
attribute = MusicOnHold => oxyPBXAccountMusicOnHold
attribute = regseconds => oxyPBXAccountExpirationTimestamp
attribute = regcontext => oxyPBXAccountRegistrationContext
attribute = regexten => oxyPBXAccountRegistrationExten
attribute = CanCallForward => oxyPBXAccountCanCallForward
additionalFilter=(objectClass=oxyPBXAccountSIP)

mfg,
michael
 
@prochmi
Probier doch mal das Paket und die Beispiele von betateilechen eine Seite vorher.

@Betateilchen
Hattes du die C Datei angepasst? Die auf der Seite des Author angeboten wird, ist älter.

Kann man den "dn: cn=sip_70_parameters, ou=accounts..." Eintrag aus deinem Beispiel auch für andere Siptelefone verwenden, oder macht das Probleme?
(via oxyPBXAccountBaseDN, z.B. für alle BT101 Telefone die gleichen Parameter)
 
aber das hab ich ja gemacht, geht leider aus irgendeinem grund nicht.

@betateilchen:
könntest du bitte die funktionsweise des treibers etwas näher erklären? wieso braucht man für ein phone zwei dn's (mit zwei uid's)?

er sagt immer:
Could not find any entry matching (&(objectClass=oxyPBXAccountSIP)(name=1002))

klar, es gibt kein attribut name, sondern nur uid. kann das mit meinem problem zusammenhängen, oder is das einfach nur eine unglücklich formulierte fehlermeldung?

wo kann man sonst noch nähere infos erhalten?
(auf der bug seite findet man ja auch nix)

aus dem README das man auf http://free.oxymium.net/Asterisk/ bekommt werd ich auch nicht schlauer (was mein problem betrifft).

mfg,
michael
 
prochmi schrieb:
er sagt immer:
Could not find any entry matching (&(objectClass=oxyPBXAccountSIP)(name=1002))
Diese Fehlermeldung kommt bei mir bspw.:
- sipgate Eintrag+Register+sipgate_in in der sip.conf (wie in betateilchens Kurs)
=> Could not find any entry matching (&(objectClass=oxyPBXAccountSIP)(name=sipgate.de)) in base dn...


- es wird versucht z.B. mit Dial(SIP/${EXTEN:2}@<nicht vorhandener Eintrag>) zu wählen.
=> Could not find any entry matching (&(objectClass=oxyPBXAccountSIP)(name=<nicht vorhandener Eintrag>))


Beim mir klappt noch das Anrufer der Ldap/Sip Telefone nicht so richtig.
Ich benutze gerade folgendes in der sip.conf
Code:
rtcachefriends=yes
rtautoclear=yes
rtupdate=yes
maxexpirey=3600
defaultexpirey=120
und habe die Siptelefone auf eine Registrierzeit von 2 Minuten eingestellt, ansonsten klappt es nicht. (in der statischen Version waren 60min eingestellt)
 
ich habe jetzt ein bissl herumgespielt...

wenn ich in die res_ldap.conf beim sip teil eine

attribute=name=uid

hinzufüge, dann kann sich ein telefon sogar registrieren.

allerdings kann ich es mit dial trotzdem nicht anrufen vom asterisk aus.

blöderweise fehlt beim readme gerade für die sipuser konfiguration ein beispiel LDAP eintrag.

@betateilchen:
hast du deine konfig nur durch probieren herausbekommen?
hast du kontakt mit dem entwickler?
kannst du bitte den userteil deiner config ein bissl genauer erklären (wieso in 2 teilen)?
kannst du dir die fehlermeldung auch absolut nicht erklären?
wieso geht sie weg wenn ich "attribute=name=uid" hinzufüge?
(eigentlich ist es für mich ja eh logisch, er sucht ja nach name)
besser gefragt: wieso geht es bei dir ohne diese änderung?

fragen über fragen....

mfg,
michael
 
Wenn Du das Paket nimmst, das ich in diesem Thread gepostet habe, dann sollten die von mir angegebenen Beispiele ohne weitere Änderungen funktionieren.

Die SIP Peers sind deshalb in 2 Teile gesplittet, damit man die Authentifizierung gegen ein bereits bestehendes Userverzeichnis (z.B. ActiveDirectory) machen kann und durch den 2. Teil (der für viele Teilnehmer exakt gleich sein kann) werden die Sip-spezifischen Daten quasi ergänzt. Dadurch ersparst Du Dir das mehrfache Eintippen der gesamten SIP Konfiguration bei jedem einzelnen Teilnehmer.
 
betateilchen schrieb:
Wenn Du das Paket nimmst, das ich in diesem Thread gepostet habe, dann sollten die von mir angegebenen Beispiele ohne weitere Änderungen funktionieren.
sollte, tut es aber leider nicht.

ich hab jetzt nochmal alles gelöscht und von vorne angefangen => selbes resultat.

das einzige was ich nicht direkt von dir übernommen hab is das ldif file. da hab ich vorerst nur folgendes:
Code:
dn: uid=1002,dc=voip,dc=fh-stpoelten,dc=ac,dc=at
uid: 1002
oxyPBXAccountCallerID: Michael <1002>
oxyPBXAccountHost: dynamic
oxyPBXAccountMailbox: 1002
userPassword: {MD5}P18qQf0P2zAo9WGDxhFTNA==
objectClass: oxyPBXAccountSIP
objectClass: oxyPBXAccount
objectClass: simpleSecurityObject
objectClass: top

mit folgender sip.conf:
Code:
[general]
context=local           ; Default context for incoming calls
allowguest=no
realm=voip.fh-stpoelten.ac.at   
bindport=5060                   
bindaddr=0.0.0.0                
srvlookup=yes                   
disallow=all                    
allow=ulaw                      
language=de                     
dtmfmode=rfc2833
canreinvite=no
maxexpirey=3600
defaultexpirey=120
nat=yes
rtcachefriends=yes
rtautoclear=yes


mfg,
michael
 
habe meinen fehler endlich gefunden. hatte das cn nicht definiert (hab da irgendwie immer drübergelesen).

gehe ich recht in der annahme, das das CN dem [xxx] in folgender sip.conf entspricht?

[xxx]
param1=
param2=

das würde auch erklären, wieso er sich registrieren hat können wenn ich

attribut=name=> uid

zur res_ldap.conf hinzugefügt habe, die UA allerdings NICHT erreichbar waren.


mfg,
michael

eine frage hätte ich noch:

ist es möglich gegen einen bereits vorhandenen LDAP server (auf einem anderen rechner) zu authentifizieren, ohne ein replika zu ziehen?

wie kann da die konfiguration ausschauen?

meine idee:

sip-config => für alle SIP geräte gleich
xxxx => extension spezifische einstellungen
xxxx-auth => die authentication einer extension gegen einen anderen server

in xxx muß sip-config als basedn eingetragen sein und in xxxx-auth muß xxx als basedn eingetragen sein.

mfg,
michael
 
Zuletzt bearbeitet von einem Moderator:
ich nun folgendes herausgefunden:

der LDAP-treiber macht zur authentifizierung ein bind mit dem entsprechenden user (d.h. er ließt nicht einfach das passwort aus und vergleicht es).

daher ist es auch möglich sha-1 passwörter im ldap zu verwenden!

ich suche nun noch immer nach einer möglichkeit, gegen einen anderen LDAP zu authentifizieren (ohne ein vollständiges replika, also ohne das passwort im lokalen ldap vorliegen zu haben).

meiner meinung nach gibt es 2 möglichkeiten:

1) irgendwie über ein referral:
d.h. der lokale fragt alles was er selber nicht weiß einen anderen ldap, ich weiß aber nicht inwiefern sich das mit der vorgegebenen struktur vereinbaren lässt.

2) über ein shell backend, das die gewünschten daten vom anderen ldap holt und bereitstellt


für beide möglichkeiten muß man mehr über die funktionsweise des ldap treibers wissen.

@betateilchen:
hast du noch direkten kontakt mit dem entwickler, hast du vielleicht von ihm mehr infos bekommen als im readme file stehen?
oder hast du das durch ausprobieren herausgefunden?

mir geht es vorallem darum wie die mappings funktionieren und wie das mit dem securityObject genau funktioniert!

mfg,
michael
 
Zuletzt bearbeitet:
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.