LyncDiscover Client / Autodiscover
ähnlich wie Outlook und ActiveSync Client den Weg zum Postfach über Autodiscover automatisch allein anhand der SMTP-Adresse ermitteln können, kann auch ein Lync Client anhand der SIP-Adresse den Zugang zum Lync System finden. Lange Zeit waren dazu DNS-Einträge das Mittel der Wahl um den Client zum Server zu lenken. Einen alternativen Weg über "Lyncdiscover" haben die mobilen Clients für Lync 2010 und höher eingeführt und dieser Weg wird mittlerweile auch vom Lync 2013 Communicator als auch der Windows Store App verwendet. Diese Seite beleuchtet die Hintergründe.
Lync 2013: Determine DNS
Requirement
http://technet.microsoft.com/en-us/library/gg398758.aspx
Warum der Wechsel ?
Zuerst habe mich mich natürlich gefragt, warum Microsoft eine neue Methode ersonnen hat, um dem Client den Weg zum Server zu eröffnen. Die Nutzung von SRV-Records hat doch wunderbar funktioniert. Das ist aber nur die halbe Wahrheit. Es gab durchaus Argumente von den SRV-Records abstand zu nehmen, z.B.
- SRV-Records und DSL-Router
Es mag unglaubwürdig klingen aber es gibt durchaus DNS-Forwarder, die keine SRV-Records verstehen. Es besteht daher durchaus ein Risiko, dass eine SRV-Record hinter einer Firewall oder einem DSL-Router nicht aufgelöst werden können. - SRV-Einträge im externen
DNS-Server
Nicht alle Firmen verwalten ihre DNS-Zone auf ihrem lokalen Server sondern nutzen eine DNS-Dienstleister. Und da gibt es durchaus Dienste, die es einfach nicht erlauben SRV-Records anzulegen. Sicher kann man immer noch mit "SIP.<sipdomain>" als Fallback arbeiten aber hier sind keine Prioritäten möglich. - SRV-Records und Windows 8.1
Store Apps
Ich habe es nicht selbst geprüft, aber angeblich können Windows 8.1 Store Apps keine SRV-Records auflösen. Damit ist zumindest der Lync App Client auf A-Records und Lyncdiscover angewiesen - Hybrid-Mode
Wenn ihre Benutzer z.B. sowohl auf Lync On-Premises als auch in der Office 365 Cloud sind, dann leitet der DNS-Eintrag den Anwender auf den On-Prem-Edge. Der Client muss sich da erst mal anmelden ehe er dann einen Redirect auf die Cloud erhält. Da kann eine Anfrage per HTTP viel schnelle den "richtigen" Zugangspunkt für einen User in der anderen Welt liefern. - Sicherheit
DNS-Anfragen kann jeder stellen. Eine Lyncdiscover-Abfrage erwartet eine Authentifizierung. Der Sicherheitsgewin ist aber gering. Auch eine Sicherung per HTTPS ist gegenüber einem DNS-Records nicht vorhanden, da hier dann auch bei der Datenverbindung mit SIP/TLS gearbeitet wird - Datenumfang
Per DNS und Zugriff auf den Edge/SIP-Server ist aber auf jeden Fall erst einmal ein SIP-Stack erforderlich. Dienst wie UCWA, die nur HTTP sprechen, müssten dazu mit Code aufgebläht werden, der gar nicht erforderlich ist.
Es gibt also schon den ein oder anderen Grund, warum ein DNS-Eintrag, der auf einen SIP-Server verweist, nicht mehr ausreichend ist. Letztlich können wir schimpfen aber es nicht ändern, so dass wir und überlegen müssen, wie diese neue Herausforderung integriert wird.
Intern und Extern
Eine Schlüsselkomponenten ist die Möglichkeit des Clients sehr früh zu unterscheiden, ob er "intern" oder "extern" ist, d.h. ob er im in internen gerouteten LAN ist und vermutlich keine Firewall die Kommunikation behindert und z.B. Kerberos verfügbar ist oder ob er von extern über Tunneltechnologien und strengere Zertifikatchecks eine Verbindung aufbauen muss. Outlook und Exchange unterscheiden hier erst einmal nicht. Autodiscover liefert einfach die internen und externen URLs und der Client versucht dann eine Verbindung.
Bei Lync werden für die interne Auflösung zusätzliche DNS-Einträge verwendet, die idealerweise aus dem Internet nicht auflösbar sind. Das widerspricht nicht der Funktion, dass ein Mobilclient über Lyncdiscoverinternal.<sipdomain> intern den Lync Pool erreicht und dann in der Antwort dennoch externe URLs bekommt. Das ist erforderlich, damit gerade die "springenden Clients", die mal intern mal extern sind, immer über den gleichen Weg zum Server kommen und so Sessions weiter verwendet werden können.
Lync Client prüfen also immer zuerst die "Internen" Namen, ehe sie dann die externen Namen abfragen.
Wenn Sie keinen SplitDNS nutzen, dann schauen Sie sich die Option PinpointDNS / Geo-DNS an.
Viele Firmen nutzen intern für das Active Directory eine "private Zone", z.B. "domain.intern" und der interne DNS-Server betreibt auch nur diese Zone. Die offizielle DNS-Zone, die auch für die Bildung der SIP-Adressen und Mail-Adressen zuständig ist. wird aber nur im Internet "gehostet". Dann ist es ungünstig in dieser externen Zone auch die internen Namen zu veröffentliche. Dabei stört weniger die "Sichtbarkeit" der internen Namen, da Sicherheit durch eine korrekte Konfiguration und Firewalls erreicht wird und nicht durch "Verbergen". Aber es stört das ein externer Client ohne direkten Zugriff auf die internen Server dennoch die internen Namen auflösen kann und daher einige Zeit versucht so die Dienste zu erreichen.
In so einem Fall ist es besser in der externen Zone auch nur externen DNS-Einträge vorzunehmen und von intern die Zone als Kopie parallel zu führen (SpitDNS/Split Brain DNS, DNS) und dort die internen Einträge zu addieren. Alternativ können Sie zumindest für die A-Records auch mit PinpointDNS die internen Einträge nur von intern auflösbar machen.
Abfragen und Clients
Nicht alle Lync Clients verhalten sich gleich. Je nach Client kommt das eine, das andere oder sogar beide Verfahren zum Einsatz. Die Clients arbeiten die Optionen von oben nach unten ab und sobald ein "Match" vorhanden ist, wird diese Option gezogen und weitere nicht mehr evaluiert. Ein Lync 2013 Client, bei dem ich Lyncdisover und Lyncdiscoverinternal per "hosts"-Datei ins Leere gesendet habe, zeigen im Fiddler sehr gut, dass sie zuerst intern per HTTP und dann per HTTPS eine Verbindung versuchen und dann extern:
Die letzte Antwort enthält als JSON-Struktur die Daten für den Anwender:
Microsoft beschreibt dies auch auf der TechNet:
The decision about whether
to use subject alternative name lists on reverse
proxies is based on whether you publish the
Autodiscover Service on port 80 or on port 443:
"Initial Autodiscover Process using Port 80
we support the initial automatic discovery
connection over port 80, which is then
redirected to port 8080 on the Director or Front
End Server.
Quelle:
http://technet.microsoft.com/en-us/library/jj945616.aspx
Wenn man mit NetMon 3 oder Wireshark die DNS-Anfragen für eine nicht existente SIP-Domain mitschneidet, wird auch ersichtlich, welche Abfolge der Lync 2013 Client durchläuft:
Das ganze lässt sich dann in eine Tabelle bringen, in der pro Client die Zugriffe aufgezeigt werden.
Protokoll | Record | Name | Lync 2010 Win |
Lync Mac |
Lync 2013 Win |
Lync Mobile IOS/WP/Android |
Lync Phone (Aries) |
Lync StoreApp (Win RT) |
LyncWeb App |
UCWA |
---|---|---|---|---|---|---|---|---|---|---|
http |
A |
lyncdiscoverinternal.<sipdomain> |
Nein |
Nein |
Ja |
Ja |
Nein |
Ja |
Ja |
Ja |
https |
A |
lyncdiscoverinternal.<sipdomain> |
Nein |
Nein |
Ja |
Ja |
Nein |
Ja |
Ja |
Ja |
http |
A |
lyncdiscover.<sipdomain> |
Nein |
Nein |
Ja |
Ja |
Nein |
Ja |
Ja |
Ja |
https |
A |
lyncdiscover.<sipdomain> |
Nein |
Nein |
Ja |
Ja |
Nein |
Ja |
Ja |
Ja |
sip/TLS |
SRV |
_sipinternalstls._tcp.<sipdomain> |
Ja |
Ja |
Ja |
Nein |
Ja |
Nein |
Nein |
Nein |
sip/TLS |
SRV |
_sip._tls.<sipdomain> |
Ja |
Ja |
Ja |
Nein |
Ja |
Nein |
Nein |
Nein |
sip/TLS |
A |
sipinternal.<sipdomain> |
Ja |
Ja |
Ja |
Nein |
Ja |
Nein |
Nein |
Nein |
sip/TLS |
A |
sip.<sipdomain> |
Ja |
Ja |
Ja |
Nein |
Ja |
Nein |
Nein |
Nein |
sip/TLS |
A |
sipexternal.<sipdomain> |
Ja |
Ja |
Ja |
Nein |
Ja |
Nein |
Nein |
Nein |
Es ist ebenfalls gut zu sehen, dass Einträge von OCS, z. B. _SIP._TCP gar nicht mehr abgefragt werden.
Die Tabelle gibt den Stand Jul 2014 wieder. Updates auf dem Client können das Verhalten ändern.
Lyncdiscover, Zertifikate und Redirect
Wenn immer mehr als eine SIP-Domain ins Spiel kommt, stellt sich die Frage der Zertifikate. Auf der Seite Viele SIP-Domains habe ich das Thema aus der Brille eines Hosters beleuchtet und Firmen mit vielen SIP-Domains haben durchaus die gleiche "Herausforderung".
Die Auflösung über LyncDiscover erlaubt dem Client nun per HTTP eine Verbindung zum Server aufzubauen, der dann ohne Zertifikatsprobleme bei einem Lync Server landen kann und per JSON-Antwort natürlich die weitere Daten erhält. Beim Zugriff per _sipinternaltls._tcp.<sipdomain> ist es bislang immer erforderlich, dass das Zertifikat auch einen Hostnamen mit der SIP-Domäne enthält oder auf dem Client eine "TrustModelData" gepflegt wird.
Das ist bei Lyncdiscover leider nicht anders. Wenn der Zugriff per HTTPS erfolgt und der Name nicht im Zertifikat ist, dann bekommt der Client eine Zertifikatswarnung. Die ist unerwünscht und sollte nicht genutzt werden.
Fordern Sie bitte nie einen Anwender auf, eine Zertifikatwarnung zu ignorieren.
Wenn Sie aber Lyncdiscover per HTTP nutzen, dann entfällt zwar die Zertifikatwarnung aber wenn der Hostname der LyncWeb-Dienste in einer anderen Domäne ist, dann bekommt der Client einen Hinweis, dass seine Anfrage "umgeleitet" wird. Hier z.B. ein Lync 2013 Communicator und einem Lync Mobile auf IOS.
Diese Meldung sollten die Anwender können und bestätigen. Auf Windows Clients können Sie diese Meldung durch eine Gruppenrichtlinie vermeiden, indem Sie über den Schlüssel "TrustedModelData" addieren.
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Communicator\TrustedModelData
Wenn der Anwender bei der Rückfrage zustimmt, trägt der Communicator die Adresse an folgender Stelle ein.
HKEY_CURRENT_User\Software\Microsoft\Communicator\<sipaddress>\TrustModelData
Leider kann so eine "Vorgabe" nicht auf dem mobilen Client hinterlegt werden. Hier ist es als "Normal", dass die "Umleitungswarnung" kommt.
- Lync Hosting:Viele SIP-Domains
- Lyncdiscover redirection using CNAME records
http://www.exchange2010.com/2013/03/lyncdiscover-redirection-using-cname.html
Lync Discover "Antwort"
Es ist relativ einfach, eine LyncDiscover-Anfrage zu analysieren. Die erste Anfrage ist eine HTTP-Anfrage um die Zugänge zu erhalten. Das können Sie auch mit einem Browser einfach durchführen.
http://lyncdiscover.netatwork.de/?sipuri=Useristegal@netatwork.de
Die Antwort ist einen XML-Struktur, die dem Client die weiteren URLs vorgibt
Damit kann der Client dann direkt diese URLs weiter ansprechen um die übrigen Daten zu ermitteln. Um dann die HTTPS-Anfragen zu analysieren ist wieder Fiddler das Mittel der Wahl. Sehr viel einfacher geht aber der Zugriff z.B., mit dem :Lync Connectivity Analyser, welcher nach Eingabe der Daten ebenfalls die Checks durchführt und die Ergebnisse anzeigt:
Hinweis: Die Daten sind nur bedingt "geheim". Die meisten Informationen lassen sich auch lyncdiscover auch anonym ermitteln. Genau genommen ist es nur der interne Name des Lync Server, der nur als authentifizierter Benutzer ermittelt werden kann. Der Server ist aber sowieso nicht aus dem Internet erreichbar.
LyncDiscover Konfigurationsplanung
Webseiten unterliegen oft eine Änderung und das folgende Diagramm habe ich auf "Determine DNS Requirement" (http://technet.microsoft.com/en-us/library/gg398758.aspx) gefunden und hier als Kopie bereitgestellt. Es beschreibt sehr gut den Ablauf bei einem Lync 2013 Client.
Ich habe das Bild allerdings etwas gestaucht.
LyncDiscover Ablauf
Ausgehend von dem obigen Flussdiagramm und den Ausführungen können Sie ja schon erahnen, was Lync beim Start treibt. Um nicht alles erneut zu beschreiben, habe ich hier ein paar Links gesetzt, die mehr oder weniger alle das Gleiche beschreiben.
Deep Dive Into The Microsoft
Lync 2013 Client Sign In Process
http://channel9.msdn.com/events/TechEd/NorthAmerica/2014/OFC-B412
http://channel9.msdn.com/events/Lync-Conference/Lync-Conference-2014/CLNT400
Deep Dive Into The Microsoft
Lync 2013 Client Sign In Process
https://www.youtube.com/watch?v=hRMDjv7pAGM
- Autodiscover Service
Requirements
http://technet.microsoft.com/en-us/library/hh690012.aspx - Planning für Mobility
Lync Server 2010 http://technet.microsoft.com/en-us/library/hh689981(v=ocs.14).aspx
Lync Server 2013 http://technet.microsoft.com/en-us/library/hh689981(v=ocs.15).aspx - Deploying Mobility
Lync Server 2010 http://technet.microsoft.com/en-us/library/hh690055(v=ocs.14).aspx
Lync Server 2013 http://technet.microsoft.com/en-us/library/hh690055(v=ocs.15).aspx - LyncDiscover and Auto
Discovery Deeper Dive
http://www.lyncexch.co.uk/lyncdiscover-and-auto-discovery-deeper-dive/ - Determine DNS Requirements
http://technet.microsoft.com/en-us/library/gg398758.aspx
Sehr guter Artikel über die DNS-Anforderungen - DNS Requirements für Automatic Client Sign-In
http://technet.microsoft.com/en-us/library/gg425884.aspx - Lync 2013 (Client) and
LyncDiscoverInternal
http://www.ntsystems.it/post/Lync-2013-(Client)-and-LyncDiscoverInternal.aspx - Understanding Lync Discover
and It’s Problems
http://masteringlync.com/2013/04/10/understanding-lync-discover-and-its-implications/ - LyncDiscover and Auto
Discovery Deeper Dive
http://www.lyncexch.co.uk/lyncdiscover-and-auto-discovery-deeper-dive/ - Microsoft Lync Server 2010
Mobility Service and Microsoft
Lync Server 2010 Autodiscover
Service
http://www.microsoft.com/en-us/download/details.aspx?id=28356 - Lync Server 2010 – Mobility
Deep Dive – Autodiscover Service
https://blogs.technet.microsoft.com/nexthop/2012/04/25/lync-server-2010-mobility-deep-dive-autodiscover-service/ - Lync Server Autodiscover and
the Lync Windows Store App
http://blogs.technet.com/b/nexthop/archive/2012/11/09/understanding-lync-server-autodiscover-to-support-the-lync-windows-store-app.aspx - Lync 2013 Client
Autodiscover
http://blog.schertz.name/2012/12/lync-2013-client-autodiscover/ - Lync 2013 Client Login using
LyncDiscover and
LyncDiscoverInternal
http://tsoorad.blogspot.de/2012/10/lync-2013-client-login-using.html - Lync 2013 (Client) and
LyncDiscoverInternal
http://www.ntsystems.it/post/Lync-2013-(Client)-and-LyncDiscoverInternal.aspx - LyncDiscover and Auto
Discovery Deeper Dive
http://www.lyncexch.co.uk/lyncdiscover-and-auto-discovery-deeper-dive/ - Lync 2013 autodiscover
http://blog.bogopol.com/?p=63
Weitere Links
- Autodiscover
- SIP Logon
- PinpointDNS / Geo-DNS
- Anycast
- Viele SIP-Domains
- Fiddler
- NetMon 3
- UC und DNS
-
Diving into Lync Client Logins
https://frankwhitepfe.wordpress.com/2011/07/15/diving-into-lync-client-logins/ - SfB online Client Sign in
and Authentication Deep Dive
Part 1: http://www.babylon365.net/sfb-online-client-sign-in-and-authentication-deep-dive-part-1/
Part 2 http://www.babylon365.net/sfb-online-client-sign-in-and-authentication-deep-dive-part-2
Part 3 http://www.babylon365.net/sfb-online-client-sign-in-and-authentication-deep-dive-part-3/ - SfB online Client Sign in
and Authentication Deep Dive
Part 7 (Hybrid) http://thewindowsupdate.com/2019/05/20/sfb-online-client-sign-in-and-authentication-deep-dive-part-7-hybrid/ - Skype for Business
Autodiscover & Authentication–Revisited
https://teamsdude.com/2019/01/29/skype-for-business-autodiscover-authentication-revisited/