วิธีที่ 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 สาธารณะ มิฉะนั้นคุณจะเสี่ยงต่อการมีโปรไฟล์ไฟร์วอลล์ที่ปลอดภัยน้อยกว่าที่ใช้กับการเชื่อมต่อสาธารณะของคุณ
เปิด " นโยบายความปลอดภัยท้องถิ่น "
คลิกที่ " นโยบายรายการผู้จัดการเครือข่าย " ในบานหน้าต่างด้านซ้าย (ตัวเลือกนี้ถูกฝังใน Windows รุ่นเก่า)
ดับเบิลคลิกที่ " Unidentified Networks " ในบานหน้าต่างด้านขวา
สำหรับคอมพิวเตอร์ที่มีอยู่บนเครือข่ายส่วนตัวเท่านั้นมันก็โอเคที่จะตั้ง " ประเภทที่ตั้ง " เป็น " ส่วนตัว "
การใช้คุณสมบัติการเชื่อมต่อเครือข่าย
สิ่งนี้ไม่เกี่ยวกับการเพิ่ม IP ของเกตเวย์เนื่องจากมันไม่สามารถทำงานได้อย่างถูกต้องบนเซิร์ฟเวอร์ที่มีหลายเครือข่าย แต่เราจะเพิ่มส่วนต่อท้าย DNS เพื่อให้ NLA สามารถค้นหาตัวควบคุมโดเมนได้อย่างถูกต้องซึ่งเป็นวิธีที่รู้วิธีทำเครื่องหมายสถานที่เป็น“ เครือข่ายโดเมน”
ไปที่การเชื่อมต่อเครือข่าย (จากศูนย์เครือข่ายและการแชร์คลิกที่ "เปลี่ยนการตั้งค่าอะแดปเตอร์")
ไปที่propertieของการเชื่อมต่อเครือข่ายหนึ่งระบุว่าเป็น " ไม่ปรากฏชื่อ " แต่ในระบบ LAN ส่วนตัว
ไปที่คุณสมบัติสำหรับ IPv4
คลิกปุ่ม " ขั้นสูง ... "
เลือกแท็บDNS
ป้อนชื่อโดเมนของคุณในกล่องข้อความสำหรับ " ส่วนต่อท้าย DNS สำหรับการเชื่อมต่อนี้: "
ปิดใช้งานแล้วเปิดใช้งานการเชื่อมต่อเพื่อรับ NLA เพื่อระบุตำแหน่งอีกครั้ง หลังจากเปิดใช้งานการเชื่อมต่อสถานะควรเปลี่ยนเป็นชื่อโดเมนและประเภทเครือข่ายเป็น "เครือข่ายโดเมน" ขึ้นอยู่กับการตั้งค่าของคุณเป็นไปได้ว่าคุณจะต้อง "แก้ไข" การเชื่อมต่อเดียวเพื่อรับการเชื่อมต่อที่เกี่ยวข้องทั้งหมดเพื่อดูโดเมน
ย้ายจากส่วนตัวสู่สาธารณะ
มีสองวิธีทั่วไปในการบังคับให้ NLA ทำเครื่องหมายการเชื่อมต่อเป็นสาธารณะ สิ่งหนึ่งคือการใช้กฎไฟร์วอลล์เพื่อบล็อก NLA เพื่อให้ไม่มีทางเลือกนอกจากใช้ตำแหน่งเริ่มต้น อีกอย่างคือการใช้รีจิสทรีเพื่อปิดการใช้งาน NLA ในการเชื่อมต่อ
การใช้งานไฟร์วอลล์
ฉันยังไม่ได้ทดสอบสิ่งนี้ แต่ทฤษฎีดูเหมือนว่าจะเป็นเสียง
เปิด " ไฟร์วอลล์ Windows ด้วยการรักษาความปลอดภัยขั้นสูง " (เช่นwf.msc
)
ไปที่กฎขาออก
คลิกที่ " กฎใหม่ ... "
ใช้การตั้งค่าเหล่านี้:
- ประเภทกฎ: กำหนดเอง
- โปรแกรม:เลือก "โปรแกรมทั้งหมด" จากนั้นคลิกที่ "ปรับแต่ง ... " เลือก "การรับรู้ตำแหน่งเครือข่าย" (ชื่อย่อคือ NlaSvc)
- โปรโตคอลและพอร์ต: ชนิดโปรโตคอล = ใด ๆ
- ขอบเขต: Local IPs = ป้อน IP สาธารณะของคุณทั้งหมด ตรวจสอบการเชื่อมต่อที่มีหลาย IP อีกครั้ง
- การดำเนินการ: บล็อก
- รายละเอียด:ทั้งหมด
เมื่อเปิดใช้งานกฎแล้วให้ปิดใช้งานแล้วเปิดใช้งานการเชื่อมต่อเครือข่ายเพื่อรับ NLA เพื่อระบุตำแหน่งอีกครั้ง
การใช้งาน Registry
ฉันไม่ได้ทำงานนี้ให้ฉัน แต่สถานการณ์ของฉันอาจแตกต่างจากของคุณ การค้นหาหมายเลขการเชื่อมต่อที่ถูกต้องเป็นเรื่องที่ยากหรือคาดเดาไม่ได้เนื่องจากมีรายการมากกว่าที่คุณคาดหวัง
เรียกใช้ regedit
ไปที่ HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
ข้างใต้คุณจะเห็นคีย์หลาย ๆ ตัวที่มีป้ายกำกับ 0000, 0001, 0002 เป็นต้น…มองผ่านสิ่งเหล่านี้และค้นหาอะแดปเตอร์ที่คุณต้องการปิดการใช้งาน NLA
สำหรับอะแดปเตอร์แต่ละตัวให้เพิ่มค่า DWORD ใหม่ที่ชื่อว่า "* NdisDeviceType" และตั้งค่าเป็น 1 (ตรวจสอบให้แน่ใจว่าคุณได้รับ * ที่จุดเริ่มต้นของชื่อ)
เริ่มรุนแรง
ส่วนกำหนดค่าตำแหน่งที่ตั้งจะอยู่ในรีจิสทรีและดูเหมือนว่าไม่เป็นอันตรายที่จะลบออกและอนุญาตให้ Windows สร้างใหม่ได้ คุณจะต้องสำรองข้อมูลรีจิสทรีอย่างแน่นอนก่อนและคุณอาจต้องเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน KVM แทนที่จะใช้ remote (RDP) ฉันจะไม่รับผิดชอบใด ๆ หากคุณเลือกขั้นตอนนี้เนื่องจากฉันวางไว้ที่นี่เป็นหลักสำหรับการอ้างอิง
ตำแหน่งของโปรไฟล์คือ:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles
แหล่ง