Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule omówiono problem, w którym nowa konfiguracja sesji dla usług LDAP trwa dłużej niż oczekiwano, jeśli dotyczy nazw hostów.
Oryginalny numer KB: 4559609
Symptomy
Uproszczone zapytania protokołu LDAP (Lightweight Directory Access Protocol), które nazwy hostów docelowych losowo zajmują więcej niż oczekiwano odpowiedzi.
Ponadto zdarzenia klienta DNS, takie jak następujące, mogą być rejestrowane w dzienniku zdarzeń:
Nazwa dziennika: System
Źródło: Microsoft-Windows-DNS-Client
Identyfikator zdarzenia: 1014
Poziom: Ostrzeżenie
Użytkownik: USŁUGA SIECIOWA
Opis rozwiązania:
Rozpoznawanie nazw dla nazwy _ldap._tcp.<lokacja>._sites.<Upłynął limit czasu nazwy> po tym, jak żadne ze skonfigurowanych serwerów DNS nie odpowiedziało.
Uwaga 16.
W tym wpisie <dziennika parametr nazwy> może być dowolny z następujących:
- Nazwa NETBIOS domeny
- Nazwa hosta kontrolera domeny
- Nazwa hosta nazwy FQDN dns kontrolera domeny
Ten problem powoduje wiele problemów, które mają wpływ na administratorów, użytkowników i aplikacje. Te problemy obejmują, ale nie są ograniczone do następujących:
- Połączenie LDAP z kontrolerami domeny systemu Windows Server 2008 R2 lub nowszymi wersjami kontrolerów domeny trwa około sześciu sekund. Te same połączenia z kontrolerami domeny systemu Windows Server 2003 lub Windows Server 2008 zwykle zajmują mniej niż jedną sekundę. W takim przypadku kolejne operacje LDAP, takie jak powiązania i wyszukiwania LDAP, wydają się nie mieć dodatkowych opóźnień po początkowym nawiązaniu połączenia LDAP.
- Polecenie LDIFDE.EXE działa wolno niezależnie od tego, czy jest używany/sparametr.
- Skrypt sprawdzania kondycji pakietu administracyjnego usługi Microsoft System Center Active Directory (SCOM ADMP) (AD_General_Response.vbs) działa wolno.
- Usługa Microsoft Użytkownicy i komputery usługi Active Directory (ADUC) działa wolno lub wolno otwiera kontenery jednostki organizacyjnej. Rozszerzenia w Użytkownicy i komputery usługi Active Directory przystawki DSA. MSC używa nazwy komputera FQDN kontrolera domeny jako nazwy domeny.
- Rozszerzenia Centrum administracyjnego usługi Microsoft Active Directory (ADAC) w Centrum administracyjnym usługi Active Directory używają nazwy komputera FQDN kontrolera domeny jako nazwy domeny.
- Konsola zarządzania zasadami grupy firmy Microsoft nie używa stale flag rozpoznawania nazw.
- Skrypty skryptu Języka Visual Basic (VBS), które tworzą wywołania LDAP odwołujące się do w pełni kwalifikowanej nazwy DNS kontrolera domeny, działają wolno.
- Aplikacje .NET Framework korzystające z usług System.DirectoryServices i System.DirectoryServices.Protocols mogą wystąpić opóźnienia podczas tworzenia sesji serwera.
Przyczyna
Począwszy od systemów Windows 7 i Windows Server 2008 R2, system Windows wprowadził zmianę zachowania wyszukiwania nazw, aby rozwiązać dwa wcześniejsze scenariusze problemów:
- Klienci LDAP wracają do PROTOKOŁU NTLM za każdym razem, gdy nazwa domeny NetBIOS jest dostarczana jako nazwa hosta w połączeniu LDAP.
- Klienci LDAP nie łączą się z kontrolerem domeny w domenie, jeśli klient ma taką samą nazwę jak docelowa nazwa domeny NetBIOS.
Opóźnienie występuje, ponieważ jeden z następujących dwóch warunków jest spełniony:
- Napotkasz długi czas oczekiwania na odpowiedź na emisję. Nie widzisz tego opóźnienia, jeśli rozpoznawanie nazw NetBIOS za pośrednictwem protokołu TCP/IP (NetBT) za pośrednictwem emisji jest wyłączone.
- Opóźnienia w rozpoznawaniu nazw DNS występują, gdy aplikacja wykonuje zapytania dotyczące kilku nazw DNS, które nie istnieją.
Opóźnienia można zaobserwować w śladzie sieci, który pokazuje klientów LDAP z uruchomionymi wyszukiwaniami nazw NetBIOS dla rekordu "[HOSTNAME]<0x1C>" przed uruchomieniem wyszukiwania DNS w celu zlokalizowania komputera hosta aplikacji (zobacz Rysunek A).
Rysunek A
Ślad sieciowy klienta LDAP systemu Windows Server 2003 lub 2008 pokazał, że bezpośrednio uruchomił wyszukiwanie DNS komputera hosta bez wyszukiwania NetBIOS dla rekordu "<0x1C>".
Rysunek B
W przypadku systemu DNS są wyświetlane zapytania o nazwy, które kończą się nazwą komputera kontrolera domeny, takie jak następujące:
_ldap._tcp. Default-First-Site-Name._sites. ADDC01.contoso.com
_ldap._tcp. ADDC01.contoso.com
_ldap._tcp. Default-First-Site-Name._sites. ADDC01
_ldap._tcp. ADDC01
Rozwiązanie
W przypadku kierowania serwera LDAP według nazwy hosta zamiast nazwy domeny należy użyć opcji LDAP_OPT_AREC_EXCLUSIVE sesji, aby wskazać, że element docelowy jest nazwą hosta zamiast nazwy domeny.
Ta opcja jest ustawiana inaczej w zależności od używanego interfejsu programowania. Skorzystaj z poniższych informacji jako odwołania.
Wldap32
Jeśli nazwa serwera DNS usługi Active Directory jest przekazywana dla parametruHostNameparameter, ldap_set_option należy wywołać, aby ustawić flagę LDAP_OPT_AREC_EXCLUSIVE przed wywołaniem dowolnej funkcji LDAP, która tworzy rzeczywiste połączenie.
W ten sposób wymusza wyszukiwanie rekordów A i pomija wyszukiwanie rekordów SRV, gdy komputer rozpozna nazwę hosta. W niektórych scenariuszach poprawia wydajność sieci. Na przykład w oddziale, który korzysta z połączenia telefonicznego, przy użyciu wyszukiwania rekordu A może uniknąć wymuszania wybierania numerów w celu wysyłania zapytań do zdalnego serwera DNS dla rekordów SRV podczas rozpoznawania nazw.
ADSI
Jeśli musisz określić serwer, użyj flagi ADS_SERVER_BIND, aby uniknąć niepotrzebnych lub niepoprawnych zapytań do serwera DNS. Aby uzyskać więcej informacji, zobacz tę dokumentację funkcji ADsOpenObject() i powiązanych funkcji.
System.DirectoryServices
Jeśli ścieżka ADsPath zawiera nazwę serwera, określ flagę AuthenticationTypes.ServerBind podczas korzystania z dostawcy LDAP. Nie używaj tej flagi dla ścieżek, które zawierają nazwę domeny lub ścieżki bezserwerowe. Określenie nazwy serwera bez określania tej flagi powoduje niepotrzebny ruch sieciowy.
Na przykład:
DirectoryEntry ent = new DirectoryEntry("LDAP://server01",null,null,AuthenticationTypes.ServerBind);
System.DirectoryServices.Protocols
Podczas przygotowywania nowego połączenia LDAP dołącz obiekt LdapDirectoryIdentifier, który jest skonstruowany przy użyciu nazwy hosta i opcjonalnego portu, z którym chcesz się skontaktować, a także zawiera <w pełniQualifiedDnsHostName> parametr, który jest ustawiony na wartość True.
Nowe domyślne zachowanie w systemie Windows 7, Windows Server 2008 R2 i nowszych wersjach można przywrócić do zachowania systemu Windows 7. Może to spowodować ponowne wprowadzenie problemów, które wpływają na nazwy NetBIOS zgodnie z opisem w sekcji "Przyczyna". Istnieją jednak również scenariusze, w których zachowanie przed systemem Windows 7 zapewnia lepsze wyniki. W związku z tym to ustawienie daje lepsze wyniki, zależy od głównego scenariusza użycia klienta LDAP.
Długoterminowe rozwiązanie powinno zawsze dotyczyć pobierania aplikacji do używania nazw serwerów i domen, które mają odpowiednie flagi podczas wywoływania interfejsów LDAP, ADSI lub .NET. Należy użyć prawidłowych flag, aby aplikacja była niezależna od zależności scenariusza, gdy kod klienta usług katalogowych musi zdecydować metodę rozpoznawania w niejednoznacznych sytuacjach.
Możesz przywrócić zachowanie systemu Windows 7 przed systemem Windows, ustawiając następującą wartość rejestru:
Podklucz: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LDAP
Wpis: UseOldHostResolutionOrder
Typ: REG_DWORD
Dane wartości: 1
W ramach dodatkowego podejścia można wyłączyć rozpoznawanie nazw przy użyciu funkcji rozgłaszania dla platformy NetBt. Zobacz 819108 Ustawienia, aby zminimalizować okresowy ruch sieci WAN w celu skonfigurowania parametru NodeType jako "tryb p".
Konfiguracja węzłów
- Używanie 0x00000008 dla węzła hybrydowego lub węzła h
- Używanie 0x00000004 dla węzła mieszanego lub m-node
- Używanie 0x00000002 dla punkt-punkt WINS lub p-node
- Używanie 0x00000001 dla węzła emisji lub węzła B
Typy węzłów rozpoznawania nazw
- B-Node (emisja): używa emisji do rozpoznawania nazw. (Niezalecane w przypadku większych sieci).
- Węzeł P-Node (element równorzędny do komunikacji równorzędnej): używa tylko usługi WINS, bez emisji. Brak serwera WINS, bez rozpoznawania.
- M-Node (mieszane): najpierw rozgłaszaj, a następnie WINS. (Niezalecane, ponieważ chcesz zminimalizować emisje).
- H-Node (hybrydowa) — najpierw używa usługi WINS, a następnie emisji. (Zalecane, ponieważ zmniejsza liczbę emisji, próbując najpierw WINS i uciekając się do emisji tylko w ostateczności).
Informacje
Aby uzyskać więcej informacji, zobacz następujące artykuły:
Opcje sesji LDAP (zobacz LDAP_OPT_AREC_EXCLUSIVE, 0x98)
ADSI, funkcja AdsopenObject
AdsI AuthenticationEnum z wartością ADS_SERVER_BIND
S.DS AuthenticationTypes wyliczenie z wartością ServerBind
S.DS. P LdapDirectoryIdentifier konstruktor z flagą fullyQualifiedDnsHostName