Nach einigem hin und her mit pbxnsip habe ich mich zuletzt mit Trixbox als Gateway für den Lync beschäftigt.
pbxnsip funktioniert zwar super und ist einfach einzurichten, ist aber leider nicht kostenlos, womit die Gesprächszeit in der Demo auf 1:30 – 3:00 Minuten beschränkt ist.
Hierzu kommt auch noch ein Tutorial, erst mal jetzt aber Trixbox:
Meine aktuelle Konfiguration sieht vor das der Trixbox die Verbindung zu Sipgate.de herstellt und eingehende Gespräche je Trunk an eine feste Person im Lync weiterleitet, warum so eine starre Konfiguration erkläre ich später.
Konfiguration:
Im Maintenancemodus (auf der Startseite oben rechts, Login „maint“ und „password„) – PBX – PBX Settings – Basic – Trunks – „Add SIP Trunk“
Hier sind einzig die Settings im Bereich Outgoing und Incoming zu setzen, der Rest bleibt auf den defaults. Meine Einstellungen sind wie folgt:
Outgoing:
Trunk name: Connect-with-OCS
PEER Details:
host=LYNCIP
transport=tcp
port=5068
insecure=very
type=peer
fromdomain=SIPDOMAIN
context=from-Super-OCS
canreinvite=yes
Incoming:
USER Context: from-Super-OCS
USER Details:
host=LYNCIP
transport=tcp
port=5068
insecure=very
type=peer
context=from-Super-OCS
Die Einstellungen danach natürlich mit „Submit Changes“ abspeichern.
Achtung: Wer diese Anleitung für den OCS statt Lync nutzt bitte die Ports von 5068 auf 5060 ändern!
Für Sipgate wird wieder ein SIP Trunk erstellt, hierbei sind die Einstellungen wie folgt:
Outbound Caller ID: SIPID
Never Override CallerID: Anhaken
Trunk Name: Sipgate
PEER Details:
disallow=all
allow=alaw&ulaw&g729&gsm&slinear
type=friend
insecure=very
nat=yes
username=SIPID
fromuser=SIPID
fromdomain=sipgate.de
secret=SIPPW
host=sipgate.de
qualify=yes
dtmfmode=rfc2833
context=from-Sipgate
canreinvite=yes
USER Context: from-Sipgate
USER Details:
type=peer
insecure=very
username=SIPID
fromuser=SIPID
secret=SIPPW
host=sipgate.de
qualify=no
context=from-Sipgate
canreinvite=yes
Registration String: SIPID:[email protected]/SIPID
SIPID und SIPPW natürlich immer durch die eigenen Daten ersetzen und abspeichern 😉
Per SSH auf den Server aufschalten und folgendes in die Datei /etc/asterisk/sip_general_custom.conf eintragen:
tcpenable=yes
tcpbindaddr=0.0.0.0
Im Menüpunkt PBX – Config File Editor – extensions_custom.conf folgendes angepasst am Ende eintragen:
[from-Super-OCS]
exten => _+X.,1,Dial(SIP/${EXTEN:1}@Sipgate,,tr)
[from-Sipgate]
exten => _X.,1,Dial(SIP/+002@Connect-with-OCS,,tr)
Sollten oben andere Namen gewählt worden sein bitte entsprechend anpassen da sonst die Regeln nicht zugeordnet werden können.
Außerdem muss die +002 an die eigene Nummer die dem User im Lync zugewiesen ist angepasst werden.
Wenn soweit alles eingestellt ist muss per „Apply Configuration Changes“ (der orange Balken im Admininterface) noch alles übernommen werden, schon ist hier alles fertig.
Unter PBX – PBX Status – Sip Peers sollte jetzt der Sipgate auf Status „OK“ und der Rest „Unmonitored“ stehen, andernfalls nochmal die Sipgate Einstellungen kontrollieren.
Für das Debugging lässt sich auf der SSH Console per „asterisk –r“ die interne Console aufrufen, spart das Durchsehen der Logfiles.
Im Topology Builder muss unter Mediation Pools – Eigenschaften des Servers – Mediation Server PSTN Gateway über New die Adresse der Trixbox hinzugefügt werden.
Nach dem veröffentlichen der Topology alle Lync Dienste einmal durchstarten.
Kommen wir zum abschließenden Teil: Den Wählregeln.
Hier ist noch einiges zum Probieren offen, für eine grundlegend funktionierende Umgebung habe ich hier folgendes eingestellt (3-Stellige Rufnummern im Lync ohne Extensions):
Voice Routing – Dial Plan – Global:
(mit vorangestellter +49 Vorwahl hatte ich Probleme das er nicht korrekt rausgewählt hat)
Voice Policy – Global:
Route:
Route – Hannover:
PSTN Usage:
Trunk Configuration – Global:
Das war soweit schon die Konfiguration, sollte jemand bei dem Nachbau Probleme feststellen würde ich mich über eine Info freuen.
Bei mir funktioniert damit folgendes:
- Anruf von extern auf den Messenger
- Anruf vom Messenger nach extern
- Aufnehmen von Voicemails (Exchange UM)
- Benachrichtigung über verpasste Anrufe (Exchange UM)
Limits:
Was ich noch nicht zum Laufen bekommen habe ist der AutoAttendant vom Exchange. Dieser lässt sich zwar bei Anpassung der Regeln im Trixbox auf die Nummer anrufen, bekommt aber keine Gespräche an die Nutzer durchgestellt und bricht mit dem Fehler das er die Person nicht erreichen konnte ab. Alles andere wie Voicemail und das Postfach abrufen funktioniert aber einwandfrei. Ich vermute hier noch einen Fehler in meinen Wählregeln da ich hier sehr viel rumgebastelt habe und es noch nicht ganz durchkonfiguriert ist.
Die Bilder sind auch alle nochmal in der Gallery zu finden.
Eine Lync Installations- und Exchangeanbindungs- Anleitung habe ich noch nicht geschaft zu erstellen, steht aber noch auf der Todo 😉
Kleiner Tip am Rande:
Es lassen sich natürlich mehrere Sipgate Trunks einrichten und diese an verschiedene Nutzer weiterrouten 😉 damit kann man in kleinen Testumgebungen auch ohne Extensions mehrere Nutzer erreichbar machen welche soweit ich informiert bin in den kostenlosen Sipgate Accounts nicht verfügbar sind. Alternativ lässt sich auch der Trixbox als vorgeschaltete TK verwenden und dann über nachträgliche Durchwahlen verschiedene Nutzer erreichen. Diese Konstellation habe ich schon mit dem pbxnsip aufgebaut, bin aber noch in der Testphase.
Hast du schon mal geschaut was mit Early Media bei mehreren angemeldeten Devices ist?
Mangels passender Geräte leider nein, hab nur den Messenger zur Verfügung.
Hallo,
Hattest du den Trixbox Server in einer DMZ stehen?
Hintegrund meiner Frage ist, dass ich beie Anmeldung bei Sipgate sehe, sondern nur, dass er es versucht. Allerdings sehe ich keinerlei Traffic zurück kommen.
Daher bekomme ich auch, wenn ichm eine SIP NUmmer anrufe nur die Ansage, dass der Teilnehmer nicht erreichbar ist.
Müssen noch sonstige Inbound Routes auf dem Trixbox konfiguriert werden bzw sonstige NAT EInträge auf dem Router gemacht werden?
Danke für einen kleinen Schubs in die richtige Richtung 🙂
Ralf
Hallo Ralf,
Der Trixbox lief bei mir nicht in einer DMZ, auch sind am Router keine speziellen Einstellungen getroffen (Astaro Sucurity Gateway).
Eventuell muss bei deinem noch der SIP Verkehr erlaubt werden?
Außerdem drauf achten das in der Configuration des Sip Peers „nat=yes“ gesetzt ist.
Hoffe du kommst damit weiter, sonnst einfach nochmal Kontakt aufnehmen.
Gruß
Chris
Hallo Chris,
ok, die Registration hab ich endlich am laufen und tataa… ich sehe auch externe Rufe auf dem Asterisk hereinpurzeln. Allerdings scheint der Verbindungsaufbau zwischen Lync und Asterisk noch nicht zu passen bzw das Übersetzen von UDP in TCP.
Daher auch mal meine Frage, warum du den TCP5066 genommen hast und nicht den 5068. Mal abgesehen davon hat es aber auch mit TCP 5068 noch nicht geklappt. Ich hab einen Netzwerkscanner mitlaufen lassen und sehe derzeit nur regelmässige Verbindungsversuche vom Lync zum Asterisk:
Frame: Number = 13757, Captured Frame Length = 625, MediaType = ETHERNET
– Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[00-0C-29-1A-3C-0A],SourceAddress:[00-0C-29-74-11-70]
+ DestinationAddress: VMware, Inc. 1A3C0A [00-0C-29-1A-3C-0A]
+ SourceAddress: VMware, Inc. 741170 [00-0C-29-74-11-70]
EthernetType: Internet IP (IPv4), 2048(0x800)
– Ipv4: Src = 192.168.178.253, Dest = 192.168.178.6, Next Protocol = TCP, Packet ID = 40065, Total IP Length = 611
+ Versions: IPv4, Internet Protocol; Header Length = 20
+ DifferentiatedServicesField: DSCP: 0, ECN: 0
TotalLength: 611 (0x263)
Identification: 40065 (0x9C81)
+ FragmentFlags: 16384 (0x4000)
TimeToLive: 64 (0x40)
NextProtocol: TCP, 6(0x6)
Checksum: 46526 (0xB5BE)
SourceAddress: 192.168.178.253
DestinationAddress: 192.168.178.6
– Tcp: Flags=…AP…, SrcPort=5060, DstPort=52054, PayloadLen=571, Seq=1600506935 – 1600507506, Ack=4113283803, Win=108 (scale factor 0x6) = 6912
SrcPort: 5060
DstPort: 52054
SequenceNumber: 1600506935 (0x5F65CC37)
AcknowledgementNumber: 4113283803 (0xF52BBADB)
+ DataOffset: 80 (0x50)
+ Flags: …AP…
Window: 108 (scale factor 0x6) = 6912
Checksum: 0xF93A, Good
UrgentPointer: 0 (0x0)
TCPPayload: SourcePort = 5060, DestinationPort = 52054
+ SIP: Response: SIP/2.0 200 OK
Will dich hier nicht langweilen mit meinen Logs. Vielleicht hast du noch einen Tipp.
Danke dir und schönen Abend noch
Hallo Ralf,
Die Ports habe ich mal geändert, hatte bei mir auf 5066 konfiguriert da 5068 noch für einen anderes Dienst benötigt wurde.
Zu der Weitergabe schick mir am besten mal die Ausgabe von „asterisk –r“ wärend eines Anrufversuches als eMail zu, ich schaue mir das dann mal an.
Hallo Chris,
erstmal Danke fürs Super-HowTo!
Ich habe bei mir nun noch zwei weitere Trunks angelegt für weitere SIPGATE-Nummern. Der „USER Context“ im Incoming teil lautet dann jeweils „from-Sipgate90“ oder „from-Sipgate91“ und „from_Sipgate92“.
In der extensions_custom.conf habe ich dann folgenden Teil:
[from-Sipgate90]
exten => _X.,1,Dial(SIP/+49123450@Connect-with-LYNC,,tr)
[from-Sipgate91]
exten => _X.,1,Dial(SIP/+49123451@Connect-with-LYNC,,tr)
[from-Sipgate92]
exten => _X.,1,Dial(SIP/+49123452@Connect-with-LYNC,,tr)
Auf dem LYNC kommen aber alle Anrufe auf der Nummer: +49123452 an – was ja nicht richtig ist, wenn sie über sipgate90 oder sipgate91 reinkommen.
Ach ja, Deinen Vorschlag:
[from-Super-OCS]
exten => _+X.,1,Dial(SIP/${EXTEN:1}@Sipgate,,tr)
habe ich folgendermassen umgebaut, damit er von sipgate akzeptiert wird:
[from-Super-OCS]
exten => _+X.,1,Dial(SIP/${EXTEN}@Sipgate,,tr)
liegt wohl aber daran, was Du vom LYNC her normalisierst.
Hast Du eine Idee zum eigentlichen Problem? Unter meiner eMail-Adresse bin ich LYNC-erreichbar.
Danke und Gruss
Stefan
Hallo,
ich kriege trotz Anleitung gar keine Verbindung hin…
Ist es normal, dass das Telefon auf der Sipgateseite Offline anzeigt?
Gruß Jan