หยุด Windows NLA จากการตรวจหาเครือข่ายท้องถิ่นเป็นเครือข่ายใหม่ที่ไม่ระบุชื่อซ้ำ ๆ


14

ฉันกำลังจัดการเครือข่ายธุรกิจขนาดเล็กที่มีพีซี Windows 10 และ 7 เครื่อง ผู้ใช้เป็นระยะ ๆ แต่ค่อนข้างบ่อยบ่นว่าพวกเขาไม่สามารถเข้าถึงโฟลเดอร์ที่ใช้ร่วมกันกับเพื่อนร่วมงานคนอื่นได้อีกต่อไป การแก้ไขปัญหาด่วนระบุว่าปัญหานี้เกิดจากการตรวจพบ "เครือข่ายที่ไม่ปรากฏชื่อ" ซึ่งน่าอับอายซึ่งจะใช้โปรไฟล์เครือข่าย "สาธารณะ" แทนโปรไฟล์เครือข่าย "ส่วนตัว" ดังนั้นการแบ่งปันโฮมกรุ๊ป / ไฟล์ ฯลฯ จึงไม่ทำงาน จากการค้นหาของฉันนี่เป็นปัญหาที่พบบ่อยสำหรับผู้ใช้หลายคน ฉันไม่เห็นวิธีแก้ปัญหาที่เสนอใด ๆ ที่ใช้งานได้

สิ่งแวดล้อม:

  • พีซี Windows ทั้งหมดเชื่อมต่อผ่านสายอีเธอร์เน็ต (แม้ว่าอาจมี Wifi NIC)
  • พวกเขาทั้งหมดเชื่อมต่อกับ 48 พอร์ตสวิตช์ที่จัดการของ Avaya L2 ทั้งหมดบนซับเน็ต 10.10.10.x เดียวกัน
  • สวิตช์เชื่อมต่อกับเราเตอร์ที่บ้าน Asus RTN-66U
  • เราเตอร์ Asus เชื่อมต่อกับเคเบิลโมเด็ม
  • เราเตอร์ Asus มอบ DHCP ให้กับเครื่อง Windows
  • ฉันกำหนดค่าเราเตอร์ด้วยการจอง DHCP สำหรับพีซี Windows แต่ละเครื่องเช่นพีซีจะได้รับที่อยู่ IP เดียวกันเสมอในการบูทเครื่อง
  • ไม่มีตัวควบคุมโดเมน

ปัญหา:

แม้ว่าฉันจะกำหนดค่าโปรไฟล์เครือข่ายที่ใช้งานอยู่ของเครื่อง Windows ทั้งหมด = ส่วนตัวพวกเขาบ่อยครั้ง (ทุกสองสามสัปดาห์หรือมากกว่านั้น) เปลี่ยนกลับเป็นสาธารณะซึ่งป้องกันการแชร์ไฟล์ ฯลฯ

พยายามแก้ไข:

ในพีซี Windows แต่ละเครื่องฉันได้แก้ไขนโยบายกลุ่มท้องถิ่นComputer Configuration->Security Settings->Network List Manager Policies:

  • เครือข่ายที่ไม่ระบุ = ส่วนตัว
  • เครือข่ายที่ระบุตัวตน = ส่วนตัว

ข้อสังเกต:

ฉันเชื่อว่าปัญหาคือบริการการรับรู้ตำแหน่งเครือข่ายของ Windows (NLA) กำลังตรวจหาเครือข่ายใหม่ที่ทำให้เกิดโปรไฟล์เครือข่ายใหม่ที่จะสร้างขึ้นซึ่งจะใช้ค่าเริ่มต้นเป็นสาธารณะ (แม้ว่าจะมีการกำหนดค่านโยบายกลุ่มท้องถิ่น . คอมพิวเตอร์หลายเครื่องแสดงว่า Windows ตรวจพบเครือข่ายไม่ปรากฏหลักฐานใหม่หลายครั้งเช่นพวกเขาแสดง "เครือข่าย 14" นั่นคือมีโปรไฟล์เครือข่ายที่แตกต่างกัน 14 แห่ง ผมเห็นหลายโปรไฟล์เหล่านี้เมื่อตรวจสอบโปรไฟล์ที่นี่ใน HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\ProfilesRegistry:

ส่วนกำหนดค่าทั้งหมด 14 คือเมื่อคอมพิวเตอร์เชื่อมต่อกับเครือข่ายเดียวกันที่อธิบายข้างต้น

ฉันไม่สามารถค้นหาทรัพยากรที่อธิบายได้อย่างชัดเจนว่า NLA สร้างตัวระบุที่ไม่ซ้ำกันสำหรับเครือข่ายได้อย่างไรและเหตุใดจึงอาจตรวจพบว่าได้ค้นพบเครือข่ายใหม่

คำถาม:

ฉันจะป้องกันไม่ให้ Windows ระบุเครือข่ายท้องถิ่นของฉันอย่างไม่ถูกต้องเป็นเครือข่ายใหม่ได้อย่างไร บางทีมันอาจช่วยได้ถ้าฉันรู้ว่าขั้นตอน NLA ตามมาเพื่อสร้างตัวระบุเฉพาะสำหรับเครือข่าย


1
ฉันแก้ไขคำถามของคุณสักเล็กน้อยเพื่อช่วยมุ่งเน้นไปที่การถามเกี่ยวกับการแก้ไขปัญหาจริง ดูปัญหา XY
ฉันพูดว่า Reinstate Monica

NLA จะระบุเครือข่ายตามที่อยู่ MAC ของเกตเวย์เริ่มต้นที่ระบุสำหรับอะแดปเตอร์เครือข่ายนั้น เป็นไปได้หรือไม่ว่าเราเตอร์ของคุณสามารถเข้าถึงคอมพิวเตอร์เหล่านี้ได้หรือไม่? ดูเหมือนว่าปัญหาจะส่งผลกระทบต่อคอมพิวเตอร์หลายเครื่องในช่วงเวลาสั้น ๆ หรือว่าเป็นผู้ใช้เพียงคนเดียวในหนึ่งวันจากนั้นผู้ใช้คนอื่นในเวลาที่แตกต่างกันอย่างสิ้นเชิง
ฉันพูดว่า Reinstate Monica

อาจดู Computer \ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ NetworkList \ Signatures \ Unmanaged หรืออย่างน้อยรอบตำแหน่งนั้นในรีจิสทรี - และดูว่า DefaultGatewayMAC และ DNSSuffix ตรงกับสิ่งที่คุณคาดหวังหรือไม่
Ross

PaulH - ตรวจสอบคำตอบของฉันเมื่อคุณได้รับช่วงเวลานี่คือสิ่งที่ฉันใช้กับความสำเร็จที่ค่อนข้างแข็งแกร่งในสภาพแวดล้อมการผลิตตามที่ฉันใส่ไว้ในส่วนวิธีที่ 1แต่ฉันก็ให้รายละเอียดเพิ่มเติมกับส่วนวิธีที่ 2ของคำตอบของฉัน ฉันหวังว่าคุณจะพบทางออกใด ๆ เหล่านี้มีประโยชน์เท่าที่ฉันมีสำหรับปัญหานี้
แมงดาน้ำผลไม้มัน

คำตอบ:


5

วิธีที่ 1

วิธีการหนึ่งที่ผมได้กระทำกับปัญหานี้ในที่สำคัญระบบ Windows Server ในสภาพแวดล้อมหนึ่งที่ผมรักษาอยู่กับสคริปต์ชุดที่ใช้ชุด NetConnectionProfileและnetshและกำหนดอย่างชัดเจนในแต่ละที่เชื่อถือได้ NIC / อะแดปเตอร์บนเครื่องเพื่อส่วนตัวในการเริ่มต้นระบบด้วยTask Schedulerใช้ Run whether user is logged on or notและRun with highest privilegesตัวเลือก

ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่

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

นอกจากนี้คุณสามารถใช้Get-NetConnectionProfileเพื่อรับชื่อนามแฝงและหมายเลขดัชนี NIC เพื่อใส่ลงในตัวอย่างแบทช์สคริปต์ด้านล่างสำหรับความต้องการและ / หรือระบบของคุณ

Batch Script

@ECHO ON

::: The below PowerShell will set all the nework adapters to private rather than public and unknown as happens.
:DynamicPSScriptBuild
SET PSScript=%temp%\%~n0.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO Set-NetConnectionProfile -InterfaceIndex 12 -NetworkCategory Private>>"%PSScript%" 
ECHO Set-NetConnectionProfile -InterfaceIndex 20 -NetworkCategory Private>>"%PSScript%" 
ECHO Set-NetConnectionProfile -InterfaceIndex 22 -NetworkCategory Private>>"%PSScript%" 
ECHO Set-NetConnectionProfile -InterfaceIndex 24 -NetworkCategory Private>>"%PSScript%"

:PowerShell
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"

:: The below will disable and then re-enable each NIC one-by-one so the unidentfied goes away after set to "private" above
:ResetNICs
SET Array="Ethernet", "Ethernet 2", "Ethernet 3", "Ethernet 4"
FOR %%A IN (%Array%) DO (
    netsh int set int "%%~A" admin=disable
    netsh int set int "%%~A" admin=enable
)
EXIT

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

วิธีที่ 2 (หลายวิธี)

เครือข่ายที่ไม่ระบุ - ย้ายจากสาธารณะเป็นส่วนตัวหรือโดเมน

หาก NLA ไม่สามารถระบุตำแหน่งการเชื่อมต่อได้จะตั้งชื่อเป็น "Unidentified" และทำเครื่องหมายตำแหน่งเป็นสาธารณะ มันเลือกสาธารณะเพราะมันปลอดภัยที่สุดและคุณไม่ต้องการอะไรที่น้อยกว่าถ้าการเชื่อมต่อบน DMZ

มีสองวิธีง่าย ๆ ในการแก้ไขปัญหานี้ หนึ่งใช้นโยบายความปลอดภัยท้องถิ่นเพื่อเปลี่ยนตำแหน่งเริ่มต้นของเครือข่ายไม่ปรากฏหลักฐาน วิธีที่สองใช้การเปลี่ยนแปลงคุณสมบัติการเชื่อมต่อเครือข่ายเพื่อให้ข้อมูล NLA ที่จำเป็นในการจัดวางตำแหน่งอย่างเหมาะสม

การใช้นโยบายความปลอดภัยท้องถิ่น

ข้อควรระวัง: สิ่งนี้ควรใช้ต่อเมื่อคอมพิวเตอร์จะไม่มีการเชื่อมต่อใด ๆ บน LAN สาธารณะ มิฉะนั้นคุณจะเสี่ยงต่อการมีโปรไฟล์ไฟร์วอลล์ที่ปลอดภัยน้อยกว่าที่ใช้กับการเชื่อมต่อสาธารณะของคุณ

  1. เปิด " นโยบายความปลอดภัยท้องถิ่น "

  2. คลิกที่ " นโยบายรายการผู้จัดการเครือข่าย " ในบานหน้าต่างด้านซ้าย (ตัวเลือกนี้ถูกฝังใน Windows รุ่นเก่า)

  3. ดับเบิลคลิกที่ " Unidentified Networks " ในบานหน้าต่างด้านขวา

  4. สำหรับคอมพิวเตอร์ที่มีอยู่บนเครือข่ายส่วนตัวเท่านั้นมันก็โอเคที่จะตั้ง " ประเภทที่ตั้ง " เป็น " ส่วนตัว "

    ป้อนคำอธิบายรูปภาพที่นี่

การใช้คุณสมบัติการเชื่อมต่อเครือข่าย

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

  1. ไปที่การเชื่อมต่อเครือข่าย (จากศูนย์เครือข่ายและการแชร์คลิกที่ "เปลี่ยนการตั้งค่าอะแดปเตอร์")

  2. ไปที่propertieของการเชื่อมต่อเครือข่ายหนึ่งระบุว่าเป็น " ไม่ปรากฏชื่อ " แต่ในระบบ LAN ส่วนตัว

  3. ไปที่คุณสมบัติสำหรับ IPv4

  4. คลิกปุ่ม " ขั้นสูง ... "

  5. เลือกแท็บDNS

  6. ป้อนชื่อโดเมนของคุณในกล่องข้อความสำหรับ " ส่วนต่อท้าย DNS สำหรับการเชื่อมต่อนี้: "

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

ย้ายจากส่วนตัวสู่สาธารณะ

มีสองวิธีทั่วไปในการบังคับให้ NLA ทำเครื่องหมายการเชื่อมต่อเป็นสาธารณะ สิ่งหนึ่งคือการใช้กฎไฟร์วอลล์เพื่อบล็อก NLA เพื่อให้ไม่มีทางเลือกนอกจากใช้ตำแหน่งเริ่มต้น อีกอย่างคือการใช้รีจิสทรีเพื่อปิดการใช้งาน NLA ในการเชื่อมต่อ

การใช้งานไฟร์วอลล์

ฉันยังไม่ได้ทดสอบสิ่งนี้ แต่ทฤษฎีดูเหมือนว่าจะเป็นเสียง

  1. เปิด " ไฟร์วอลล์ Windows ด้วยการรักษาความปลอดภัยขั้นสูง " (เช่นwf.msc)

  2. ไปที่กฎขาออก

  3. คลิกที่ " กฎใหม่ ... "

  4. ใช้การตั้งค่าเหล่านี้:

    • ประเภทกฎ: กำหนดเอง
    • โปรแกรม:เลือก "โปรแกรมทั้งหมด" จากนั้นคลิกที่ "ปรับแต่ง ... " เลือก "การรับรู้ตำแหน่งเครือข่าย" (ชื่อย่อคือ NlaSvc)
    • โปรโตคอลและพอร์ต: ชนิดโปรโตคอล = ใด ๆ
    • ขอบเขต: Local IPs = ป้อน IP สาธารณะของคุณทั้งหมด ตรวจสอบการเชื่อมต่อที่มีหลาย IP อีกครั้ง
    • การดำเนินการ: บล็อก
    • รายละเอียด:ทั้งหมด
  5. เมื่อเปิดใช้งานกฎแล้วให้ปิดใช้งานแล้วเปิดใช้งานการเชื่อมต่อเครือข่ายเพื่อรับ NLA เพื่อระบุตำแหน่งอีกครั้ง

การใช้งาน Registry

ฉันไม่ได้ทำงานนี้ให้ฉัน แต่สถานการณ์ของฉันอาจแตกต่างจากของคุณ การค้นหาหมายเลขการเชื่อมต่อที่ถูกต้องเป็นเรื่องที่ยากหรือคาดเดาไม่ได้เนื่องจากมีรายการมากกว่าที่คุณคาดหวัง

  1. เรียกใช้ regedit

  2. ไปที่ HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

  3. ข้างใต้คุณจะเห็นคีย์หลาย ๆ ตัวที่มีป้ายกำกับ 0000, 0001, 0002 เป็นต้น…มองผ่านสิ่งเหล่านี้และค้นหาอะแดปเตอร์ที่คุณต้องการปิดการใช้งาน NLA

  4. สำหรับอะแดปเตอร์แต่ละตัวให้เพิ่มค่า DWORD ใหม่ที่ชื่อว่า "* NdisDeviceType" และตั้งค่าเป็น 1 (ตรวจสอบให้แน่ใจว่าคุณได้รับ * ที่จุดเริ่มต้นของชื่อ)

เริ่มรุนแรง

ส่วนกำหนดค่าตำแหน่งที่ตั้งจะอยู่ในรีจิสทรีและดูเหมือนว่าไม่เป็นอันตรายที่จะลบออกและอนุญาตให้ Windows สร้างใหม่ได้ คุณจะต้องสำรองข้อมูลรีจิสทรีอย่างแน่นอนก่อนและคุณอาจต้องเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน KVM แทนที่จะใช้ remote (RDP) ฉันจะไม่รับผิดชอบใด ๆ หากคุณเลือกขั้นตอนนี้เนื่องจากฉันวางไว้ที่นี่เป็นหลักสำหรับการอ้างอิง

ตำแหน่งของโปรไฟล์คือ:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles

แหล่ง


วิธีแรกดูสดใส ฉันไม่แน่ใจเกี่ยวกับวิธีการอื่น ๆ ที่เกี่ยวข้องกับการเริ่มบริการ NLA เนื่องจากวิธีนี้จะแก้ไขปัญหาได้เสมอทำให้ยากที่จะทราบว่าการเริ่มบริการเป็นโซลูชันหรือการดำเนินการอื่น ตอนนี้ฉันแค่ต้องการเครื่องจักรที่ทำสิ่งนี้ผิดเพื่อทดสอบ ....
ฉันว่า Reinstate Monica

@TwistyImpersonator ใช่วิธีที่ 1 เป็นวิธีที่ฉันใช้และเพิ่งจะเรียกใช้เมื่อเริ่มต้น ในกรณีนี้มันเป็นเซิร์ฟเวอร์โฮสต์เสมือน Hyper-V ที่มี 4 นิคส์และทำให้แน่ใจว่ามันจะทำงานเมื่อการเริ่มต้นได้แก้ไขปัญหาสำหรับฉันกับระบบนั้น ๆ ฉันคิดว่ามีอีกครั้งที่เกิดขึ้นเนื่องจากสวิตช์เครือข่ายหรือเราเตอร์รีบูตและแทนที่จะรีสตาร์ทเซิร์ฟเวอร์โฮสต์เสมือนฉันเพิ่งเรียกใช้สคริปต์ด้วยตนเองและแก้ไขปัญหาได้ ฉันสังเกตเห็นคำถามและโพสต์คำตอบที่ฉันใช้และแหล่งอ้างอิงอื่น ๆ ที่ดูเกี่ยวข้องและอาจเป็นประโยชน์
Pimp Juice IT

ฉันสังเกตเห็นว่าคุณใส่ความโปรดปราน แต่ฉันคิดว่าฉันไม่ได้ตระหนักถึงความต้องการของคุณมากกว่าแค่พยายามหาคำตอบจาก OP เป็นเรื่องดีที่รู้เช่นกัน
Pimp Juice IT

0

ฉันมีปัญหานี้อย่างไม่สิ้นสุดในระบบใดระบบหนึ่ง มันจะทำลายทุกอย่างในการรีบูตแต่ละครั้ง ฉันลองวิธีแก้ปัญหาทั้งหมดที่คุณพูดถึง หลังจากหมดไปฉันก็หันไปใช้บริการ "ตระหนักถึงตำแหน่งเครือข่าย" จากสิ่งที่ฉันสามารถบอกได้ว่ามันไม่จำเป็น นี่เป็นการแก้ไขปัญหาของฉันอย่างถาวร ผลข้างเคียงเดียวที่ฉันสังเกตคือหน้าต่าง "เครือข่ายและศูนย์แบ่งปัน" ดูตลก บริการนี้ไม่มีอยู่ก่อน Windows 7 และไม่มีประโยชน์กับฉันเลย

services.msc

"การรับรู้ตำแหน่งเครือข่าย" ประเภทการเริ่มต้น = "ปิดการใช้งาน"


อืมไม่แน่ใจว่านี่เป็นความคิดที่ดีในสภาพแวดล้อมของโดเมน ... หรือเมื่อใช้แล็ปท็อประหว่างเครือข่ายที่เชื่อถือได้และไม่น่าเชื่อถือ ข้อเสนอแนะใด ๆ ในสถานการณ์เหล่านั้นอย่างใดอย่างหนึ่ง?
ฉันพูดว่า Reinstate Monica

ฉันทำสิ่งนี้ในสภาพแวดล้อมโดเมนของฉัน ใช้งานได้ดี หากคุณกำลังใช้แล็ปท็อปของคุณในสภาพแวดล้อมที่ไม่น่าเชื่อถือคุณจำเป็นต้องมีการป้องกันอื่น ๆ NLA จะไม่ช่วยคุณ สิ่งที่สามารถทำได้คือปิดการใช้งานการแชร์โดยอัตโนมัติ ฉันอยากจะแนะนำไม่อนุญาตให้แชร์กับแล็ปท็อป
HackSlash

หากไม่มี NLA ระบบของคุณจะสลับไปมาระหว่างโดเมนและโปรไฟล์ส่วนตัวได้อย่างไรเช่นเมื่อพนักงานใช้แล็ปท็อปกลับบ้าน
ฉันพูดว่า Reinstate Monica

หากไม่มี NLA จะไม่มีโปรไฟล์เลย คุณใช้โปรไฟล์เหล่านี้เพื่ออะไร
HackSlash

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