OCS / Lync + Trixbox + Sipgate: Es Funktioniert

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:

  • Einrichtung der Trunks am Trixbox:
  • 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:SIPPW@sipgate.de/SIPID

    SIPID und SIPPW natürlich immer durch die eigenen Daten ersetzen und abspeichern 😉

  • Jetzt müssen wir dem Asterisk noch sagen der er für den Lync TCP unterstützt:
  • 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

  • Erstellung der Weiterleitung im Trixbox:
  • 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.

  • Abschluss am Trixbox
  • 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.

  • Einrichtung des Lync – Topology
  • 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.

  • Einrichtung des Lync – Wählregeln
  • 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.

    11 Gedanken zu „OCS / Lync + Trixbox + Sipgate: Es Funktioniert“

    1. 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

    2. 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

    3. 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

    4. 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.

    5. 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

    6. Pingback: Kajaks
    7. Hallo,
      ich kriege trotz Anleitung gar keine Verbindung hin…
      Ist es normal, dass das Telefon auf der Sipgateseite Offline anzeigt?

      Gruß Jan

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht.