ระบบไคลเอนต์ในเครือข่าย Active Directory พบว่าไซต์นั้นอยู่ในที่ใด


21

ขณะที่ฉันกำลังรวบรวมงานนำเสนอสำหรับการเริ่มต้นการจัดการ Windows ฉันรู้สึกประทับใจกับคำถามที่ฉันประหลาดใจฉันไม่ได้ถามในเร็ว ๆ นี้

ฉันรู้แล้ว:

  • โฆษณาถูกตั้งค่าอย่างมีเหตุผลในไซต์เพื่อช่วยในการจำลองแบบและลดเวลาแฝงของการสื่อสารที่จำเป็นสำหรับโดเมนระหว่างคอมพิวเตอร์ไคลเอนต์และบริการโดเมน
  • ไซต์ถูกกำหนดโดยซับเน็ตที่ใช้กับไซต์เหล่านั้น
  • โดเมนย่อย _msdcs มีลำดับชั้นของระเบียน SRV สำหรับการค้นหาทั่วไป (_tcp) และสำหรับการค้นหาเฉพาะไซต์ (_sites)
  • คอมพิวเตอร์อย่างใดรู้ว่าพวกเขาอยู่ในเว็บไซต์หรือตัวควบคุมโดเมนตัดสินใจอย่างโปร่งใสในความมหัศจรรย์ของ DNS ... หรือไม่?

บล็อกนี้โพสต์คำแนะนำว่าคอมพิวเตอร์ไคลเอนต์ในเครือข่ายโฆษณาสามารถ "รู้" ว่าไซต์ใดเป็นสมาชิก คำถามของฉันคือถ้าเป็นกรณีนี้พวกเขาจะพบได้อย่างไร

หากลูกค้าไม่รู้ตัว DC จะช่วยเหลือเครื่องในกระบวนการเลือกบริการโฆษณาที่ใกล้เคียงที่สุดไปยังคอมพิวเตอร์ไคลเอนต์นั้นได้อย่างไร

คำตอบ:


29

คำตอบคือครั้งแรกที่ลูกค้าตรวจสอบสิทธิ์กับ Active Directory ไม่ทราบว่ามีเว็บไซต์ใดอยู่

เมื่อเข้าร่วมโดเมนครั้งแรกไคลเอนต์จะทำการสอบถาม DNS และ LDAP ทั่วไปและรับรายชื่อของตัวควบคุมโดเมนทั้งหมดในโดเมนและลงรายการลองใช้การผูก LDAP และ DC ที่ประสบความสำเร็จครั้งแรกที่ผูกกับ - นั่นคือ DC ตัวแรกที่ตรวจสอบความถูกต้องด้วย

หลังจากไคลเอนต์เข้าร่วมโดเมนแล้ว Active Directory จะแจ้งให้ลูกค้าทราบว่าไซต์ใดเป็นของ Active Directory รู้เรื่องนี้เพราะผู้ดูแลระบบได้ใส่ IP ซับเน็ตของลูกค้าใน AD Sites & Services และเชื่อมโยงกับเว็บไซต์

ไดเรกทอรีที่ใช้งานอยู่จะบอกลูกค้าว่าเว็บไซต์โฆษณานั้นคืออะไรและลูกค้าเก็บไว้ในรีจิสทรีของตนเองในHKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DynamicSiteNameค่ารีจิสทรี ด้วยวิธีนี้ในครั้งถัดไปที่ไคลเอ็นต์บูทขึ้นจะทราบว่ามีการสืบค้น DNS เฉพาะไซต์ใดเพื่อให้ได้รับเฉพาะ DC ที่อยู่ในไซต์นั้น

แน่นอนว่าพฤติกรรมเต็มรูปแบบมีการบันทึกไว้ใน KB247811แต่ถ้าคุณต้องการเห็นด้วยตัวคุณเองคุณสามารถเรียกใช้ Wireshark หรือ NetMon และทำการติดตามแพ็คเก็ตแล้วเข้าร่วมโดเมนในขณะที่การสืบค้นกลับกำลังทำงานอยู่ คุณจะเห็นลำดับที่แน่นอนของการสืบค้น DNS และการผูก LDAP คิวรี DNS ที่ตามมาและการผูก LDAP ถูกสร้างขึ้นในโซนย่อยเฉพาะไซต์เนื่องจากโฆษณาได้รับการแจ้งจากลูกค้าว่าไซต์ใดเป็นของไซต์

บริการ Netlogon จะรีเฟรชข้อมูลไซต์โฆษณาเป็นระยะดังนั้นหากคุณย้ายไปที่เครือข่ายอื่นลูกค้าของคุณจะได้รับไซต์ใหม่โดยอัตโนมัติ สิ่งนี้สามารถปรับได้ในHKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\SiteNameTimeoutค่ารีจิสตรี ( ลิงก์ )


GAH! คุณเอาชนะฉันมัน!
MDMarra

4
@MDMarra มันเป็นปรากฏการณ์ที่เกิดขึ้นได้ยาก
Ryan Ries

จากการอยากรู้อยากเห็นการตรวจสอบ netlogon เคยทำซ้ำอีกครั้งหรือไม่? ตัวอย่างเช่นถ้าฉันมีระบบที่อยู่ใน Site1 จากนั้นย้ายบุคคลและอุปกรณ์ไปที่ Site2 เครื่องจะยังคงระบุและพูดคุยกับ Site1 ต่อไปหรือไม่
Peter Grace

อันที่จริงฉันเอามันกลับมา Netlogon สามารถอัปเดตชื่อไซต์แบบไดนามิกได้โดยไม่ต้องเริ่มระบบใหม่: technet.microsoft.com/en-us/library/cc958488.aspx
Ryan Ries

@RyanRies หากคุณต้องการให้ปรากฏในข้อความคำตอบของคุณนั่นจะยอดเยี่ยมมิฉะนั้นฉันจะแก้ไขคำตอบเพื่อรวมมัน
Peter Grace

8

จริงๆแล้วมีหลายฟังก์ชั่นที่เกี่ยวข้องกับ / API แม้ว่ามันจะยาว แต่จริงๆแล้วมันเป็นการอ่าน Active Directory ที่น่าสนใจมากกว่า

ไม่คำนึงถึงคำอธิบายด้านล่างมีสองสิ่งที่คุณต้องระวัง:

  • ถ้า DC ในไซต์ท้องถิ่นไม่ตอบสนองด้วยเหตุผลใดก็ตามคาดว่าไคลเอนต์จะติดต่อตัวควบคุมโดเมนใด ๆ ในโดเมน นี่เป็นเรื่องปกติและเป็นพฤติกรรมเริ่มต้นเสมอ บางครั้งมันไม่ชัดเจนว่าทำไมมันเกิดขึ้น

  • นั่นอาจเป็นสิ่งที่ไม่ดี พิจารณาสถานการณ์ต่อไปนี้: สามไซต์: นิวยอร์กซิตี้ (ฮับ / ดาต้า - เร็ว), ลอสแองเจลิส (พูดกับ NYC - เร็ว) และคาซัคสถาน (พูดกับนิวยอร์ค - ไม่เร็วอย่างแน่นอน) หากลูกค้าของคุณในเว็บไซต์ LA ไม่สามารถติดต่อกับ DC ในพื้นที่ได้ไม่ว่าจะด้วยเหตุผลใดก็ตามก็ไม่น่าเชื่อว่าจะรับรองความถูกต้องกับคาซัคสถาน

มีวิธีแก้ปัญหาสองสามข้อ คุณสามารถทำอย่างใดอย่างหนึ่งหรือทั้งสอง

  • Microsoft สร้างการตั้งค่านโยบายกลุ่ม / รีจิสตรีชื่อ aptly TryNextClosestSite นั่นหมายความว่าลูกค้าแอลเอควรลอง NYC ก่อนโรมมิ่งดาวเคราะห์มองหา DC ยอดเยี่ยม! ใช้เวลาแปดปี แต่ในที่สุดเราก็ได้รับกับ Vista / 2008 จำไว้ว่าไม่ได้เปิดใช้งานโดยค่าเริ่มต้นคุณต้องสร้าง GPO เพื่อเปิดใช้งานสิ่งนี้

  • สำหรับไซต์ที่มีการพูดที่คุณไม่ต้องการให้ DC ให้บริการลูกค้าในไซต์อื่นคุณสามารถสร้างการตั้งค่านโยบายกลุ่ม / รีจิสตรีที่ระบุว่าระเบียน DNS ใดที่ไม่ควรลงทะเบียน สิ่งนี้เรียกว่า DNS Mnemonics


การค้นหาตัวควบคุมโดเมนในไซต์ที่ใกล้ที่สุด (DsGetSiteName API)
http://technet.microsoft.com/en-us/library/cc978016.aspx

การจับคู่ที่อยู่ IP กับชื่อไซต์

"ในระหว่างการเริ่มต้น Net Logon บริการ Net Logon ในแต่ละโดเมนคอนโทรลเลอร์จะระบุวัตถุของไซต์ในคอนเทนเนอร์ของการกำหนดค่านอกจากนี้ Net Logon ในแต่ละโดเมนคอนโทรลเลอร์ยังได้รับแจ้งถึงการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นกับออบเจกต์ของไซต์ด้วย โครงสร้างในหน่วยความจำที่ใช้ในการแมปที่อยู่ IP กับชื่อไซต์

"เมื่อไคลเอนต์ที่กำลังค้นหาตัวควบคุมโดเมนได้รับรายการของที่อยู่ IP ของตัวควบคุมโดเมนจาก DNS ไคลเอนต์เริ่มสอบถามตัวควบคุมโดเมนในการค้นหาตัวควบคุมโดเมนที่พร้อมใช้งานและเหมาะสม Active Directory สกัดกั้นแบบสอบถามซึ่งประกอบด้วย ที่อยู่ IP ของลูกค้าและส่งต่อไปที่ Net Logon บนตัวควบคุมโดเมน Net Logon ค้นหาที่อยู่ IP ของลูกค้าในตารางการจับคู่ subnet-to-site โดยค้นหาวัตถุ subnet ที่ตรงกับที่อยู่ IP ของลูกค้ามากที่สุดแล้ว ส่งคืนข้อมูลต่อไปนี้:

  • ชื่อของเว็บไซต์ที่ลูกค้าตั้งอยู่หรือเว็บไซต์ที่ตรงกับที่อยู่ IP ของลูกค้ามากที่สุด

  • ชื่อของไซต์ที่มีตัวควบคุมโดเมนปัจจุบันอยู่

  • บิตที่ระบุว่าตัวควบคุมโดเมนที่พบนั้นอยู่ (ตั้งค่าบิต) หรือไม่อยู่ (ไม่ได้ตั้งค่าบิต) ในไซต์ที่อยู่ใกล้กับไคลเอ็นต์มากที่สุด

"ตัวควบคุมโดเมนส่งคืนข้อมูลไปยังไคลเอนต์การตอบสนองยังประกอบด้วยข้อมูลอื่น ๆ อีกมากมายที่อธิบายตัวควบคุมโดเมนไคลเอ็นต์ตรวจสอบข้อมูลเพื่อพิจารณาว่าจะพยายามค้นหาตัวควบคุมโดเมนที่ดีขึ้นหรือไม่การตัดสินใจทำดังนี้:

"ถ้าตัวควบคุมโดเมนที่ส่งคืนอยู่ในไซต์ที่ใกล้เคียงที่สุด (ตั้งบิตที่ส่งคืน) ไคลเอนต์ใช้ตัวควบคุมโดเมนนี้

"ถ้าไคลเอนต์ได้พยายามค้นหาตัวควบคุมโดเมนในไซต์ที่ตัวควบคุมโดเมนอ้างว่าไคลเอนต์นั้นอยู่แล้วไคลเอ็นต์จะใช้ตัวควบคุมโดเมนนี้

"ถ้าตัวควบคุมโดเมนไม่ได้อยู่ในไซต์ที่อยู่ใกล้ที่สุดไคลเอนต์จะอัปเดตข้อมูลไซต์และส่งการสืบค้น DNS ใหม่เพื่อค้นหาตัวควบคุมโดเมนใหม่ในไซต์หากการค้นหาครั้งที่สองประสบความสำเร็จตัวควบคุมโดเมนใหม่จะถูกใช้หาก แบบสอบถามที่สองล้มเหลวใช้ตัวควบคุมโดเมนดั้งเดิม

"หากโดเมนที่ถูกสอบถามโดยคอมพิวเตอร์เป็นโดเมนเดียวกับคอมพิวเตอร์ที่เข้าร่วมไซต์ที่คอมพิวเตอร์อยู่ (ตามที่รายงานโดยตัวควบคุมโดเมน) จะถูกเก็บไว้ในรีจิสทรีของคอมพิวเตอร์ไคลเอนต์จะเก็บข้อมูลนี้ ชื่อไซต์ในรายการรีจิสทรี DynamicSiteName ใน HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Netlogon \ Parameters ดังนั้น DsGetSiteName API จะส่งคืนไซต์ที่คอมพิวเตอร์ตั้งอยู่ "

ฟังก์ชัน DsGetDcName
http://msdn.microsoft.com/en-us/library/ms675983%28VS.85%29.aspx

ประเภทของตัวระบุตำแหน่ง
http://technet.microsoft.com/en-us/library/cc978019.aspx

ฟังก์ชันบริการไดเรกทอรี
http://technet.microsoft.com/en-us/subscriptions/ms675900%28v=vs.85%29.aspx

การสนับสนุน DNS สำหรับ Active Directory ทำงานอย่างไร
http://technet.microsoft.com/en-us/library/cc759550%28v=ws.10%29.aspx

วิธีเพิ่มประสิทธิภาพตำแหน่งที่ตั้งของตัวควบคุมโดเมนที่อยู่ภายนอกไซต์ของไคลเอ็นต์
http://support.microsoft.com/kb/306602

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.