Ngăn Windows NLA liên tục phát hiện mạng cục bộ là Mạng mới, không xác định


14

Tôi đang quản lý một mạng doanh nghiệp nhỏ với một số PC Windows 10 và 7. Người dùng không thường xuyên nhưng khá thường xuyên phàn nàn rằng họ không thể truy cập các thư mục được chia sẻ với các đồng nghiệp khác. Xử lý sự cố nhanh xác định rằng sự cố là do "Mạng không xác định được phát hiện" khét tiếng, sau đó áp dụng cấu hình mạng "Công khai" thay vì cấu hình mạng "Riêng tư", do đó chia sẻ tệp Homegroup / tệp, v.v. không hoạt động. Từ tìm kiếm của tôi đây là một vấn đề phổ biến cho nhiều người dùng. Tôi không thấy bất kỳ giải pháp đề xuất nào hoạt động.

Môi trường:

  • Tất cả PC Windows được kết nối qua Ethernet có dây (mặc dù chúng có thể có Wifi Wifi)
  • Tất cả đều được kết nối với một công tắc được quản lý Avaya L2 48 cổng, tất cả trên cùng một mạng con 10.10.10.x
  • Công tắc được kết nối với bộ định tuyến gia đình Asus RTN-66U
  • Bộ định tuyến Asus kết nối với modem Cáp
  • Bộ định tuyến Asus cung cấp DHCP cho các máy Windows
  • Tôi đã cấu hình bộ định tuyến với các đặt chỗ DHCP cho mỗi PC Windows, tức là PC luôn nhận được cùng một địa chỉ IP khi khởi động
  • Không có bộ điều khiển miền

Vấn đề:

Mặc dù tôi đã định cấu hình tất cả các máy Windows cấu hình mạng hoạt động = Riêng tư, chúng thường xuyên (cứ sau vài tuần hoặc lâu hơn) trở lại Công khai, điều này ngăn việc chia sẻ tệp, v.v.

Các bản sửa lỗi đã cố gắng:

Trên mỗi PC Windows, tôi đã sửa đổi Chính sách nhóm cục bộ Computer Configuration->Security Settings->Network List Manager Policies:

  • Mạng không xác định = Riêng tư
  • Mạng nhận dạng = Riêng tư

Quan sát:

Tôi tin rằng vấn đề là dịch vụ Nhận thức vị trí mạng Windows (NLA) đang phát hiện một mạng mới khiến Cấu hình mạng mới được tạo sau đó mặc định thành Công khai (mặc dù ở trên tôi đã định cấu hình Chính sách nhóm cục bộ để mặc định thành Riêng tư) . Nhiều máy tính cho thấy Windows đã phát hiện một Mạng không xác định mới nhiều lần, tức là chúng hiển thị "Mạng 14", tức là có 14 cấu hình mạng khác nhau. Tôi thấy nhiều hồ sơ này khi xem xét các hồ sơ ở đây trong Registry : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles.

Tất cả 14 cấu hình là khi máy tính thực sự được kết nối với cùng một mạng được mô tả ở trên.

Tôi đã không thể tìm thấy một tài nguyên mô tả chính xác cách NLA tạo ra một mã định danh duy nhất cho một mạng và do đó tại sao nó có thể phát hiện ra rằng nó đã phát hiện ra một mạng mới.

Câu hỏi:

Làm cách nào để ngăn Windows xác định không chính xác mạng cục bộ của tôi là mạng mới? Có lẽ nó sẽ hữu ích nếu tôi biết NLA thực hiện các bước nào để tạo một định danh duy nhất cho mạng?


1
Tôi đã chỉnh sửa câu hỏi của bạn một chút để giúp tập trung vào việc hỏi về cách giải quyết vấn đề thực tế. Xem vấn đề XY .
Tôi nói Phục hồi

NLA xác định một mạng dựa trên địa chỉ MAC của cổng mặc định được chỉ định cho bộ điều hợp mạng đó. Có thể bộ định tuyến của bạn đã không thể truy cập được vào các máy tính này? Có phải vấn đề dường như ảnh hưởng đến nhiều máy tính trong một cửa sổ thời gian ngắn, hoặc chỉ một người dùng một ngày, sau đó một người dùng khác vào một thời điểm hoàn toàn khác?
Tôi nói Phục hồi

Có lẽ nhìn vào Computer \ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ NetworkList \ Signatures \ Switch hoặc ít nhất là xung quanh vị trí đó trong registry - và xem nếu DefaultGatewayMAC và DNSSuffix trận đấu những gì bạn mong đợi
Ross

PaulH - Kiểm tra câu trả lời của tôi khi bạn có một khoảnh khắc, đây là những gì tôi đã sử dụng với thành công khá vững chắc trong môi trường sản xuất khi tôi đưa vào phần Phương pháp 1 nhưng tôi cũng cung cấp thêm chi tiết với phần Phương pháp 2 trong câu trả lời của tôi. Tôi hy vọng bạn tìm thấy bất kỳ giải pháp nào hữu ích như tôi có cho vấn đề này.
Pimp Juice IT

Câu trả lời:


5

Phương pháp 1

Một cách tôi đã xử lý vấn đề này trên một hệ thống Windows Server quan trọng trong một môi trường tôi duy trì là với một kịch bản theo gói sử dụng Set-NetConnectionProfilenetsh , và thiết lập một cách rõ ràng mỗi tin cậy NIC / bộ chuyển đổi trên máy tính này để tin vào khởi động hệ thống với Lập lịch tác vụ bằng cách sử dụng Run whether user is logged on or notRun with highest privilegestùy chọn.

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Lưu ý: Mặc dù ghi chú tiền thưởng ghi rõ " Giải pháp không được làm mất kết nối mạng để thực hiện " Tôi muốn đề cập rằng vì khi sự cố này xảy ra, bạn vẫn bị gián đoạn mạng, việc chạy tập lệnh này nếu xảy ra sự cố ngẫu nhiên khi hệ thống xảy ra không được khởi động lại mà chỉ đơn giản là chạy cùng một kịch bản này sau đó vẫn sẽ nhanh chóng giải quyết vấn đề và lấy lại quyền truy cập mạng máy hệ điều hành theo thứ tự làm việc và dự kiến.

Hơn nữa, bạn có thể sử dụng Get-NetConnectionProfile để lấy tên bí danh và số chỉ mục của NIC để đưa vào tập lệnh lô ví dụ bên dưới cho nhu cầu và / hoặc hệ thống của bạn.

Tập lệnh hàng loạt

@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

Dưới đây là một vài phương pháp khác, với một trong số đó là những gì bạn đã thử nhưng tôi đã để nó ở đó cho những người khác đi qua bài đăng này trong trường hợp nó giúp họ, nhưng đây là một vài cách để ngăn chặn điều này hoàn toàn có thể nhưng có luôn luôn có những mặt thăng trầm đối với bất kỳ phương pháp nào bạn chọn sử dụng, vì vậy hãy chọn thuốc độc và thử nghiệm cho phù hợp.

Phương pháp 2 (Nhiều phương thức)

Mạng không xác định - Chuyển từ Công khai sang Riêng tư hoặc Miền

Nếu NLA không thể xác định vị trí kết nối, nó sẽ đặt tên là "Không xác định" và đánh dấu vị trí là Công khai. Nó chọn Công khai vì điều đó an toàn nhất và bạn sẽ không muốn bất cứ điều gì ít hơn nếu kết nối nằm trên DMZ.

Có hai cách dễ dàng để khắc phục điều này. Người ta sử dụng Chính sách bảo mật cục bộ để thay đổi vị trí mặc định của các mạng không xác định. Phương pháp thứ hai sử dụng thay đổi các thuộc tính kết nối mạng để cung cấp cho NLA thông tin cần thiết để đặt đúng vị trí.

Sử dụng chính sách bảo mật cục bộ

Thận trọng: Điều này chỉ nên được sử dụng nếu máy tính sẽ không bao giờ có bất kỳ kết nối nào trên Mạng LAN công cộng. Mặt khác, bạn có nguy cơ có một hồ sơ tường lửa kém an toàn được áp dụng cho kết nối công khai của bạn.

  1. Mở " Chính sách bảo mật cục bộ ".

  2. Nhấp vào " Chính sách quản lý danh sách mạng " trong khung bên trái. (Lựa chọn này được chôn trong các phiên bản Windows cũ hơn.)

  3. Nhấp đúp vào " Mạng không xác định " trong khung bên phải.

  4. Đối với các máy tính chỉ tồn tại trên mạng riêng, bạn có thể đặt " Loại vị trí " thành " riêng tư ".

    nhập mô tả hình ảnh ở đây

Sử dụng thuộc tính kết nối mạng

Đây không phải là về việc thêm một IP gateway vì nó không hoạt động chính xác trên một máy chủ đa homed. Thay vào đó, chúng tôi sẽ thêm một hậu tố DNS để NLA có thể định vị chính xác bộ điều khiển miền, đó là cách nó biết để đánh dấu vị trí là mạng Miền tên miền.

  1. Chuyển đến Kết nối mạng (từ Trung tâm chia sẻ và mạng, nhấp vào "Thay đổi cài đặt bộ điều hợp".)

  2. Tới các propertie s của một kết nối mạng được đánh dấu là " Unidentified " nhưng trên mạng LAN riêng.

  3. Chuyển đến các thuộc tính cho IPv4 .

  4. Nhấp vào nút " Nâng cao ...".

  5. Chọn tab DNS .

  6. Nhập tên miền của bạn vào hộp văn bản cho " hậu tố DNS cho kết nối này: ".

Vô hiệu hóa và sau đó kích hoạt kết nối để có được NLA để xác định lại vị trí. Sau khi kích hoạt kết nối, Trạng thái sẽ thay đổi thành tên miền và Danh mục mạng thành "Mạng miền". Tùy thuộc vào thiết lập của bạn, có thể bạn chỉ cần "sửa" một kết nối để có được tất cả các kết nối liên quan để xem tên miền.

Chuyển từ tư nhân sang công cộng

Có hai cách phổ biến để buộc NLA đánh dấu một kết nối là công khai. Một là sử dụng quy tắc tường lửa để chặn NLA để không có lựa chọn nào khác ngoài sử dụng vị trí mặc định. Hai là sử dụng sổ đăng ký để vô hiệu hóa NLA trên kết nối.

Sử dụng tường lửa

Tôi đã không kiểm tra điều này nhưng lý thuyết có vẻ hợp lý.

  1. Mở " Tường lửa Windows với bảo mật nâng cao " (nghĩa là wf.msc).

  2. Chuyển đến quy tắc đi .

  3. Nhấp vào " Quy tắc mới ".

  4. Sử dụng các cài đặt sau:

    • Loại quy tắc: Tùy chỉnh
    • Chương trình: Chọn "Tất cả chương trình" và sau đó nhấp vào "Tùy chỉnh". Chọn "Nhận thức vị trí mạng" (tên viết tắt là NlaSvc).
    • Giao thức và cổng: Loại giao thức = Bất kỳ.
    • Phạm vi: IP cục bộ = Nhập tất cả IP công cộng của bạn. Kiểm tra kỹ các kết nối có nhiều IP.
    • Hành động: Chặn
    • Hồ sơ: Tất cả
  5. Khi quy tắc được bật, hãy tắt và sau đó kích hoạt kết nối mạng để có được NLA để xác định lại vị trí.

Sử dụng sổ đăng ký

Tôi chưa có công việc này cho tôi nhưng hoàn cảnh của tôi có thể khác với bạn. Tìm số kết nối chính xác là một chút nhấn hoặc bỏ lỡ vì có nhiều mục hơn bạn mong đợi.

  1. Chạy regedit

  2. Đi đến HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

  3. Bên dưới bạn sẽ thấy một số khóa có nhãn 0000, 0001, 0002 vv. Nhìn qua những điều này và tìm các bộ điều hợp nơi bạn muốn tắt NLA.

  4. Đối với mỗi bộ điều hợp, hãy thêm một giá trị DWORD mới có tên "* NdisDeviceType" và đặt thành 1 (đảm bảo bạn nhận được dấu * ở đầu tên).

Bắt đầu quyết liệt

Các cấu hình vị trí được lưu trữ trong sổ đăng ký và dường như vô hại khi xóa chúng và để Windows xây dựng lại chúng. Bạn chắc chắn sẽ muốn sao lưu sổ đăng ký trước và có thể bạn sẽ cần phải được kết nối với máy chủ thông qua KVM chứ không phải từ xa (RDP). Tôi sẽ không chịu trách nhiệm nếu bạn chọn bước này vì tôi chủ yếu đưa nó vào đây để tham khảo.

Vị trí của hồ sơ là:

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

nguồn


Phương pháp đầu tiên có vẻ đầy hứa hẹn. Tôi không chắc chắn về các phương pháp khác liên quan đến việc khởi động lại dịch vụ NLA bởi vì điều đó luôn luôn khắc phục vấn đề, làm cho khó biết liệu khởi động lại dịch vụ là giải pháp hay hành động khác. Bây giờ tôi chỉ cần một cái máy làm sai điều này để kiểm tra ....
Tôi nói Phục hồi Monica

@TwistyImpersonator Có, phương thức 1 là phương thức tôi đã sử dụng và chỉ cần nó chạy khi khởi động. Trong trường hợp này, đó là một máy chủ lưu trữ ảo Hyper-V có 4 NIC và đảm bảo nó chạy khi khởi động đã giải quyết được vấn đề cho tôi với hệ thống cụ thể đó. Tôi nghĩ đã có một lần nó xảy ra do chuyển đổi mạng hoặc bộ định tuyến khởi động lại và thay vì khởi động lại máy chủ lưu trữ ảo, tôi chỉ chạy tập lệnh theo cách thủ công và nó đã giải quyết vấn đề. Tôi nhận thấy câu hỏi và đăng giải pháp tôi đã sử dụng và các tài nguyên được trích dẫn khác có vẻ phù hợp và có khả năng hữu ích.
Pimp Juice IT

Tôi nhận thấy bạn đặt tiền thưởng nhưng tôi đoán tôi đã không nhận ra đó là vì nhu cầu của bạn thay vì chỉ cố gắng để OP trả lời. Điều đó cũng tốt để biết.
Pimp Juice IT

0

Tôi đã có vấn đề này vô tận trên chỉ một hệ thống cụ thể. Nó sẽ phá vỡ mọi thứ ở mỗi lần khởi động lại. Tôi đã thử tất cả các giải pháp bạn đề cập. Sau khi cạn kiệt tất cả, tôi đã dùng đến việc vô hiệu hóa dịch vụ "Nhận thức vị trí mạng". Từ những gì tôi có thể nói nó không cần thiết. Điều này đã giải quyết vĩnh viễn vấn đề của tôi. Hiệu ứng phụ duy nhất tôi nhận thấy là cửa sổ "Trung tâm mạng và chia sẻ" trông buồn cười. Dịch vụ này không tồn tại trước Windows 7 và hoàn toàn không hữu ích với tôi.

Services.msc

"Nhận thức vị trí mạng", Loại khởi động = "Đã tắt"


Hmmm, không chắc đây là một ý tưởng tốt trong môi trường miền ... hoặc khi lấy máy tính xách tay giữa các mạng đáng tin cậy và không tin cậy. Bất kỳ phản hồi về một trong những kịch bản?
Tôi nói phục hồi Monica

Tôi đang làm điều này trong môi trường miền của tôi. Công trình tuyệt vời. Nếu bạn đang sử dụng máy tính xách tay của bạn trong một môi trường không tin cậy, bạn cần phải có các biện pháp bảo vệ khác. NLA sẽ không cứu bạn. Tất cả những gì nó có thể làm là vô hiệu hóa cổ phiếu tự động. Tôi sẽ đề nghị không cho phép bất kỳ cổ phiếu trên máy tính xách tay.
HackSlash

Không có NLA, làm thế nào để hệ thống của bạn chuyển đổi giữa tên miền và hồ sơ cá nhân, ví dụ khi nhân viên mang máy tính xách tay về nhà?
Tôi nói Phục hồi lại

Không có NLA thì không có hồ sơ nào cả. Bạn đang sử dụng những hồ sơ này để làm gì?
HackSlash

Nhiều hệ thống tôi quản lý cho phép lưu lượng truy cập trong nước khi được kết nối với mạng miền, nhưng lưu lượng đó bị chặn khi các hệ thống rời khỏi miền. Đó là cách chúng tôi triển khai các cổng phòng thủ chuyên sâu ... chỉ được mở khi cần thiết và đóng ở mọi nơi khác.
Tôi nói phục hồi Monica
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.