Lync-Telefone

Achtung
Lync Telefone vertrauen nur wenigen StammCAs. Wer also Lync Telefone von "extern" anbinden möchte, sollte diese CAs für den Edge-Server und die Lync Webservices nutzen.
Certificates für Lync 2010 Phone Edition  http://technet.microsoft.com/en-us/library/gg398270.aspx
IP Desk Phones http://technet.microsoft.com/en-us/lync/gg278172

Achtung: Das Update auf "CU6" funktioniert nur von Telefonen mit Lync Firmware. Er noch ein "OCS-Telefon" hat, muss dieses erst auf eine vorherige Lync-Firmware aktualisieren. CU6 ist mit einem SHA1-Hash signiert, das DES nicht mehr sicher ist. Eine OCS-Firmware kann das nicht prüfen.

Lync Phone Edition CU6 upgrade Issues
http://blog.schertz.name/2012/08/lync-phone-edition-cu6-upgrade-issues/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+jschertz+%28Jeff+Schertz%29

Bei OCS mussten sich die Telefone noch mit einer SIP-Adresse und Kennwort anmelden, was zugleich das AD-Kennwort des Benutzers war. Mit Lync ist die Lösung natürlich deutlich besser geworden. Eine Anmeldung per PIN erlaubt eine einfache Authentifizierung und Wechsel der Benutzer. Siehe auch Seiten zu den Telefonen:

Unified Communications Phones and Peripherals Datasheets
http://www.microsoft.com/en-us/download/details.aspx?id=16857
Datenblätter und Vergleichsmaterial zu Lync Phone und Pheripherie

Lync Phone Edition LifeCycle
Start: 25.01.2011, Mainstream: 10.4.2018, Extended 11.04.2023
Mainstr
http://support.microsoft.com/lifecycle/search/default.aspx?sort=PN&qid=&alpha=Lync+Phone+Edition&Filter=FilterNO

Es gibt noch eine Reihe anderer IP-Telefone, die sich an Lync betreiben lassen, z.B. SNOM Telefone. Auch einige Polycom-Telefone (Siehe Soundpoint IP auf Polycom Telefon etc.) können mit einer "UC-Firmware" bestückt werden. Über Kompatibilität, Managebarkeit etc. kann die MSXFAQ nur bedingt berichten.

Dennoch müssen für den Betrieb eines Lync-Telefons in einem Netzwerk einige Voraussetzungen erfüllt sein. Im Hintergrund muss man natürlich wissen, was das Telefon nach dem Einschalten und bei der Anmeldung macht. Hier eine Kurzfassung:

  • PoE-Ports
    Nicht alle Telefone liefern noch ein Netzteil mit. So haben meine Testtelefone von Aasta gar kein Netzteil mehr dabei. Allerdings gibt es schon noch einen Speisezugang von 48V mit 0,3A. Wer aber Telefonie mit Lync professionell angehen will, muss sich schon vornehmem, die Ethernet-Ports entsprechend zu speisen.
  • Time
    Lync nutzt Zertifikate und damit ist das Thema "Uhrzeit" sehr wichtig. Über entsprechende DNS-Einträge "findet" das Telefon einen Zeitserver und holt sich dort die aktuelle Information
  • DNS-Einträge
    Nicht ungewöhnlich sind die erforderlichen Einträge für die Lync Systeme
  • DHCP IP-Adressen
    Ich habe keine Option gesehen, wie ich einem Lync-Telefon (Aasta oder Polycom) eine statische IP-Adresse vorgeben kann. Also muss das Telefon an dem Port, an dem es angeschlossen ist, per DHCP auch eine IP-Adresse, Gateway und DNS-Server erhalten.
  • DHCP OCS-Optionen 43 und 120
    Der DHCP-Server muss aber auch noch weitere Optionen liefern, z.B. den FQDN der Lync-Farm und andere Optionen. Das ist besonders wichtig, da auch Lync einen kleinen DHCP-Server für diese Optionen enthält, der aber erst aktiviert werden muss und beim Einsatz unterschiedlicher Subnetze auch bei den Routern aktiviert werden muss. Alternativ können Sie diese Optionen in ihrem bestehenden DHCP-Server eintragen.
  • Zertifikate
    Früher haben die Telefone per HTTP einen "Certificate Provisioning Webservice" angesprochen. Das scheint bei Lync anders zu sein. Das Telefon übernimmt angeblich die Zertifikatskette von dem Pool-Server, der bei der allerersten Anmeldung per SIP erreicht wird. Wird ein Telefon daher in eine ganz andere Umgebung mit einer anderen CA installiert oder ändert sich die RootCA, dann ist ein Reset des Telefons mit Neueingabe der Anmeldedaten erforderlich.
  • Autodiscover
    Die Telefone, die per USB-Kabel nicht per PIN sondern per Benutzername/Kennwort/Zertifikat angemeldet werden, können die Kalenderinformationen des angemeldeten Benutzers nur anzeigen, wenn "Autodiscover" funktioniert. Relevant ist dabei die Funktion per DNS-Eintrag "Autodiscover.<sipdomain>", da das Telefon keine Service Records oder ServiceConnectionPoints (SCP) unterstützt

Schauen wir uns die einzelnen Aspekte genauer an.

Uhrzeit

Da Lync intern mit Zertifikaten arbeitet und diese eine Gültigkeitszeit haben, muss das Telefon eine aktuelle uhrzeit haben. Auch hier ist ein DNS Eintrag erforderlich, damit das Lync-Telefon einen Timeserver findet, den es per NTP dann abfragen kann. Hier mein Eintrag:

Beim Start des Telefons ist kurz zu sehen, dass das Telefon die uhrzeit anfordert.

Wenn Sie nicht sicher sind, ob das funktioniert, dann können Sie auf dem DNS-Server z.B.: mit NETMON die unverschlüsselten DNS-Abfragen mitschneiden oder im DNS-Logging protokollieren lassen. Auch auf dem NTP--Server sollte ein Netzwerkmitschnitt die Anfragen aufdecken.

DNS-Einträge

Neben den DHCP-Einträgen benötigt auch ein Lync Telefon die gleichen Informationen, wie auch ein Lync-Client. Die Einträge sind daher in der Regel schon da.

_SIP._TLS.<sipdomain> SRV 0 0 5061 sip.meindomain.tld
sip.meinedomain.tld  A ip.ip.ip.ip
ucUpdates-r2.<sipdomain>

Wenn Sie nicht sicher sind, ob das funktioniert, dann können Sie auf dem DNS-Server z.B.: mit NETMON die unverschlüsselten DNS-Abfragen mitschneiden oder im DNS-Logging protokollieren lassen.

Hinweis:
Ein Update eines Tanjay funktioniert auch ohne diesen Eintrag, da das Telefon per SIP Inband Provisioning die richtige URL bekommt.

DHCP Daten

Jedes Telefon benötigt eine IP-Adresse, eine Subnetzmaske, aber auch einen DNS-Server und Zone. Das ist in der Regel aber schon eingestellt. hier daher die Optionen in Kürze

  • Option 3 - Router
    Das Default Gateway, wenn das Telefon in andere Subnetze kommunizieren muss.
  • Option 6 - DNS Servers
    Die nächsten DNS-Server. Meist sind das zwei oder mehr DNS-Server die auch ihr Active Directory bereit stellen-
  • Option 15 - DNS Domain Name
    Der DNS-Domain-Name. Bei mir ist das z.B. "netatwork.de". Diesen Suffix hängt das Telefon an die verschiedenen Anfragen an-
  • Option 43
    Hier werden in mehreren Suboptionen optional die Adressen eines Lync Pools für die Registrierung, Device Update Service und Zertifikate ange
  • Option 44 - WINS/NBNS Servers
    Für die Tanjay-Telefone war eine flache Namensauflösung über WINS noch erforderlich. Entsprechend müssen über diese Option die WINS Server angegeben werden
  • Option 45 - NBNS Node Type (0x8)

Diese Optionen pflegen Sie in der Regel in ihrem normalen DHCP-Server. Lync Clients nutzen aber weitere Funktionen von DHCP um erweiterte Einstellungen zu erhalten. Daher identifizieren Sie sich mit der Client-ID "ms-uc-client", worauf der DHCP-Server zusätzliche Optionen bereit stellt. Dies sind:

Option 43

Diese Option ist eigentlich gar nicht ein einzelner String, sondern eine Sammlung von unteroptionen, die zusammengefasst abgelegt werden:

Option Number Option Name ASCII-Wert

001

UCIdentifier

MS-UC-Client

002

URLScheme

https

003

WebServerFQDN

lyncpool1.msxfaq.de

004

WebServerPort

443

005

CertProvRelPath

/CertProv/CertProvisioningService.svc

Zusammengesetzt ergibt sich dann "https://nawlync001.netatwork.de:443/CertProv/CertProvisioningSerivce.svc"

Option 120: UCSipServer

Diese Option teilt dem Telefon die Adresse des Lync-Pools mit, mit dem es sich bei einer Anmeldung per "Extension" und "PIN" anmelden kann. Da gibt es ja keine SIP-URL, so dass das Telefon eine Domäne erhalten und den _sip._tls-Eintrag ableiten kann.

Option

Option Name

Wert

120

UCSipServer

nawlync001.netatwork.de

Da stellt sich natürlich die Frage, wie diese Optionen zu setzen sind.

Lync als DHCP-Server

Was viele nicht so genau können ist die Eigenschaft der Lync-Server selbst als DHCP-Server zu arbeiten. ähnlich dem RIS-Server unter Windows kann auch ein Lync-Server so eingestellt werden, dass er auf DHCP-Anfragen antwortet. Dabei verteilt er natürlich keine IP-Adressen, Gateways, Subnetzmasken o.ä. Dies bleibt dem unternehmens-DHCP-Server überlassen. Lync reagiert nur auf bestimmte DHCP-Anfragen und liefert dann auch nur seine Optionen aus, wenn der DHCP-Dienst denn überhaupt aktiviert ist. Auch das muss der Administrator erst einmal tun:

set-CsRegistrarConfiguration -EnableDHCPServer $true

Erst dann offeriert der Server seine Dienste.

Achtung:
Dies funktioniert per Default nur im gleichen Subnetz, was bei größeren Firmen aber natürlich nicht immer der Fall ist.

Firmen DHCP-Server

In Firmen gibt es in der Regel einen DHCP-Server und vor allem mehrere Subnetze, die durch einen BootpForwarder oder DHCP-Relay bedient werden.

Bei einem verteilen Netzwerk haben Sie die Wahl, ob sie die Lync Server als BootPForwarder/DHCP-Relay in allen Routern mit pflegen oder ob sie die bis zu drei Optionen nicht einfach in den bestehenden zentralen Firmen-DHCP-Servern nachpflegen.

Ich würde dann wohl eher schon die Einträge im sowieso schon vorhandenen und überwachten DHCP-Server eintragen. Diesen Schritt unterstützt Lync durch das Programm DHCPUtil.EXE

"c:\Program Files\Common File\Microsoft Lync Server 2010\DHCPUtil.exe" -sipserver pool.domain.tld

Dieses Programm erstellt mit der Angabe der des SIP-Servers bzw. Pools eine passende Konfiguration als Batchdatei, die dann auf dem Windows DHCP-Server eingerichtet werden kann.

Das Batch-Skript hat etwa folgendes Format:

netsh dhcp server delete class MSUCClient
 
if /i %1 EQU Cleanup goto :EOF 
netsh dhcp server add optiondef 120 UCSipServer Binary 0 comment="Sip Server Fqdn" 
netsh dhcp server set optionvalue 120 Binary %3 
netsh dhcp server add class MSUCClient "UC Vendor Class Id" "%2" 1 
netsh dhcp server add optiondef 1 uCIdentifier Binary 0 Vendor=MSUCClient comment="UC Identifier"
netsh dhcp server set optionvalue 1 Binary vendor=MSUCClient %4 
netsh dhcp server add optiondef 2 URLScheme Binary 0 Vendor=MSUCClient comment="URL Scheme" 
netsh dhcp server set optionvalue 2 Binary vendor=MSUCClient %5 
netsh dhcp server add optiondef 3 WebServerFqdn Binary 0 Vendor=MSUCClient comment="Web Server Fqdn" 
netsh dhcp server set optionvalue 3 Binary vendor=MSUCClient %6 
if not %7 == NULL (netsh dhcp server add optiondef 4 WebServerPort Binary 0 Vendor=MSUCClient comment="Web Server Port")
if not %7 == NULL (netsh dhcp server set optionvalue 4 Binary vendor=MSUCClient %7)
netsh dhcp server add optiondef 5 CertProvRelPath Binary 0 Vendor=MSUCClient comment="Cert Prov Relative Path" 
netsh dhcp server set optionvalue 5 Binary vendor=MSUCClient %8

Funktionstest

Wenn Sie die Einstellungen gemacht haben, dann können Sie mit DHCPUtil von einem Client die Funktion überprüfen. Das Programm kann nicht auf dem DHCP-Server oder einem LyncServer ausgeführt werden. Kopieren Sie dazu das Programm auf

DHCPUtil -emulateClient

Wenn man den Traffic mitschneidet, dann sieht man schön die "Besondere DHCP-Anfrage" (Gekürzt)

- Dhcp: Request, MsgType = INFORM, TransactionID = 0x4F254EDA
    ClientIP: 192.168.100.207
  + ClientHardwareAddress: 00-04-F2-A6-CE-CD
  + MessageType: INFORM - Type 53
  + clientID: (Type 1) - Type 61
  - DHCPEOptionsHostName: 
      HostName: WindowsCE - Type 12 
  - ParameterRequestList:  - Type 55
     Code: Parameter Request List, 55(0x37)
     Parameter: SIP Servers DHCP Option, 120(0x78)
     Parameter: Vendor specific information, 43(0x2B)
  - DHCPEOptionsVendorClassIdentifier: 
   + VendorClassIdentifier: MS-UC-Client - Type 60

Der Client forder hier also die Option 120 und 43 an. Und darauf die Antwort des Lync-Servers

- Dhcp: Reply, MsgType = ACK, TransactionID = 0x4F254EDA
    ClientIP: 192.168.100.207
    ServerIP: 192.168.100.60
  + ClientHardwareAddress: 00-04-F2-A6-CE-CD
  + ServerIdentifier: 192.168.100.60 - Type 54
  - DHCPEOptionsHostName: 
   - HostName: NAWOCS - Type 12
  - SIPservers:  - Type 120
     Code: SIP Servers DHCP Option, 120(0x78)
     Enc: Domain Name List 0(0)
   - DomainNameList: DomainName: nawocs.netatwork.de
  - DHCPEOptionsVendorSpecificInformation: 
   - VendorSpecificInformation:  - Type 43
      Code: Vendor specific information, 43(0x2B)
    - VendorSpecificExtension: unknown Vendor - Type 1-5
       VendorspecificOptionValue: MS-UC-Client
       VendorspecificOptionValue: https
       VendorspecificOptionValue: nawlync001.netatwork.de
       VendorspecificOptionValue: 443
       VendorspecificOptionValue: /CertProv/CertProvisioningService.svc

Sie enthält also Option 120 den FQDN meines OCS-Server (Hier nawocs.netatwork.de) und dann als Option 43 noch eine weitere Konfiguration (Hier der Zertifikatsservice). Diese URL können Sie sogar per Browser ansprechen und sollte ohne Warnungen oder Fehler erscheinen:

Zertifikate

Über den Webservice lädt sich das Telefon die Stammzertifikate, damit das Telefon dann natürlich auch dem Lync-Zertifikat vertraut. Insofern ist es natürlich schon relevant, dass das Telefon ein Stückweit in einer "Trusted Umgebung" (z. B. eigenes VLAN) angebunden ist, damit nicht ein "fremder" DHCP-Server hier andere Optionen unterschiebt. Hinweis: Es gibt durchaus Switches die pro Port steuern, ob dort DHCP-Antworten erlaubt sind. So kann man recht zuverlässig verhindern, dass ein Client plötzlich DHCP-Server spielt.

Die generelle Funktion des Zertifikatsservice können Sie unter der URL "https://ocserverfqdn/CertProv/CertProvisioningService.svc" überprüfen,

Telefon-Hotkeys

Interessanterweise stehen in der Lync-Dokumentation die Sondertasten, um Telefone zu steuern, die ich eigentlich beim Hersteller erwartet hätte. Ist das ein Hinweis, dass Hersteller wie Polycom und Aastra nur die Hardware zusammenbauen und die Software von Microsoft kommt. Ich konnte zumindest bis auf das Startlogo keine "herstellerspezifischen" Anpassungen erkennen.

Funktion Beschreibung Hotkey

Hard Reset

Bereinigt das Dateisystem und entfernt alle Benutzerdaten (Benutzernamen, Kennworte, etc.). Die Firmware bleibt aber die letzte Version

"# + *" (seit RC-Firmware)

Frühere Betas hatten noch "#" + "4" + "Backspace" 

Factory Reset

Bereinigt das Dateisystem und entfernt alle Benutzerdaten (Username, Kennworte, etc.) und dreht zudem die Firmware (Reboot und OS) auf die vorherige Version zurück, z. B. wenn ein Firmware-Update fehlt geschlagen ist. Zudem vergisst das Telefon die Stammzertifikate und lädt diese neu.

Seit der RC-Firmware sind dies die Tasten "4+6"

Früher war das: "*" + "7"

Details findet man auch im Kapitel Planning -> Planning für Clients and Devices in Lync Server 2010 > Planning für Devices > Planning to Manage and Troubleshoot Devices.

Telefone "Updaten"

Mit Lync hat auch auch die Aktualisierung der Endgeräte sich geändert. Siehe auch LyncDeviceUpdate. Der OCS Updateserver funktioniert nicht für Lync Telefone.

Telefone und "extern"

Sie können Lync Telefone auch einfach im Internet anschließen und betreiben. Aber nicht ganz ohne Vorarbeiten. Denn so ein Telefon benötigt beim initialen Start natürlich ein paar Daten, die es intern per DHCP ermittelt, z.B. den Zertifikatsserver und die Liste der RootCAs. Zudem können Sie an einem Telefon (Ausnahme Tanjay) sich nicht mit "Benutzername Kennwort" anmelden. Die Anmeldung per Extension/Pin funktioniert extern aber nicht, da das Telefon anhand der Pin ja keine SIP-Adresse und damit auch keine DNS-Abfrage auf eine SIP-Domäne machen kann.

Externe Telefone sollten also immer Aries-Telefone mit USB-Kopplung sein, damit der PC die Anmeldedaten (Domäne/Benutzername/Kennwort) erfragen und per USB an das Telefon übertragen kann. Dann kann das Telefon auch die Exchange Webservices nutzen und Termine anzeigen, was bei der Anmeldung per Extension/Pin auch nicht geht.

Tipp: Home-Office-Anwender sollte immer die etwas teureren Telefone mit USB-Kopplung nutzen. Die einfacheren Telefone sind primär als "Common Area Phones" einzusetzen

Anders sieht es aus, wenn Sie ein Telefon erstmalig intern angeschlossen und da "provisioniert" haben. Dann speichert sich das Telefon einige Daten lokal, z.B. ein 6 Monate gültiges Lync-Zertifikat zur Anmeldung. Nur ist es natürlich nicht in jedem Fall eine Lösung, dass ein Anwender regelmäßig sein "Home-Telefon" mit in die Firma schleifen muss.

Telefone sperren

Per Lync Policy kann man eine Sperrzeit auf Telefone vorschreiben. Wird ein Telefon also eine bestimmte Zeit nicht genutzt, dann "sperrt" es sich. Sobald diese Richtlinie aktiv wird, wird der Anwender gezwungen, eine PIN auf dem Telefone zu vergeben. Diese ist dann zum Entsperren wieder erforderlich. Die "Sperre" blockiert aber nicht alle Funktionen des Telefons. möglich ist dann noch

  • Rufe annehmen
    Nur weil das Telefon gesperrt ist, wird es nicht von Lync abgemeldet. Ein eingehender Ruf wird natürlich signalisiert nud kann angenommen werden.
  • Anrufen mit Nummer
    Es ist im gesperrten Zustand immer noch möglich, mit den Rechten des users zu telefonieren.

Hingegen sind folgende Funktionen nicht im gesperrten Zustand erreichbar:

  • Suche im Adressbuch
  • Zugriff auf Voicemail
  • Anzeige der nächsten Termine
  • ändern jedweder Einstellungen

Man kann über eine Einstellung auf dem Lync Client auch steuern, dass das Telefon sich sofort sperrt, wenn Windows den PC sperrt (z.B. -L). Soll das Telefon aber nicht mehr nutzbar sein, dann muss sich der Anwender "abmelden".

Eigene Nummer auf dem Display

Für Verwirrung sorgt immer mal wieder die Anzeige der eigenen Daten im Display. Scheinbar willkürlich wechselt die Anzeige zwischen der normalen Rufnummer und der msRTSIPLineURI, in der für den Telefonbetrieb eine Extension mit gepflegt wird. Ansonsten hat es der Anwender schwer sich mit Extersion+Pin anzumelden. Hier zwei Bilder vom gleichen Tag. Das Telefon wurde zwischenzeitlich nicht angefasst:

Eine genaue Ursache kann ich dazu aktuell noch nicht liefern aber auch andere haben den Effekt gesehen.

Normalweise sollte das Telefon den Wert aus dem Feld "TelephoneNumber" übernehmen und anzeigen. Nur wenn das Feld leer oder keine E.164-Nummer ist, dann sollte es ersatzweise die msRTCLineURI nutzen. Das Feld "Telephone-Number" ist im AD eigentlich nur ein Feld zur Anzeige. Lync nutzt dieses Feld aber durchaus als "Click to call"-Quelle und sollte daher ebenfalls E.164 gepflegt sein.

Bei CommonArea-Pones sollte dazu das Feld "DisplayNumber" gesetzt werden.

Set-CSCommonAreaphone `
   -identity Serverraum `
   -DisplayNumber "+495251304680"

Damit wäre natürlich immer noch nicht erklärt, warum das Telefon dann zwischen den beiden Feldern wechselt.

Wenn ich einen Weg finde, diese Änderungen wiederholbar zu machen, dann kann ich mit dem Snooper mal schauen, was der Lync Server zum Client sendet. Leider ist ja per Default alles verschlüsselt, so dass ein Netzwerkmitschnitt für die Geräte-IP nicht wirklich weiter hilft.

Telefone mit USB-Link

Die "besseren" Telefone (CX600, Aastra 6725ip, HP4120) erlauben eine Verbindung von PC und Telefon per USB. Diese erlaubt eine umfangreiche Steuerung des Telefons über den Communicator Client.

Weitere Links