Hentikan Windows NLA dari berulang kali mendeteksi jaringan lokal sebagai yang baru, Jaringan Tidak Dikenal

14

Saya mengelola jaringan bisnis kecil dengan sejumlah PC Windows 10 dan 7. Kadang-kadang tetapi cukup sering pengguna mengeluh bahwa mereka tidak dapat lagi mengakses folder bersama dengan rekan kerja lainnya. Pemecahan masalah cepat menentukan bahwa masalah ini disebabkan oleh "Jaringan tidak dikenal yang terdeteksi" yang kemudian menerapkan profil jaringan "Publik" alih-alih profil jaringan "Pribadi", sehingga Homegroup / berbagi file, dll. Tidak berfungsi. Dari pencarian saya ini adalah masalah umum bagi banyak pengguna. Saya tidak melihat solusi yang diusulkan yang berfungsi.

Lingkungan Hidup:

  • Semua PC Windows terhubung melalui Ethernet berkabel (meskipun mereka mungkin memiliki Wifi NIC)
  • Mereka semua terhubung ke 48 port Avaya L2 managed switch, semua pada subnet 10.10.10.x yang sama
  • Saklar terhubung ke router rumah Asus RTN-66U
  • Router Asus terhubung ke modem kabel
  • Router Asus menyediakan DHCP ke mesin Windows
  • Saya telah mengkonfigurasi router dengan reservasi DHCP untuk setiap PC Windows, yaitu PC selalu mendapatkan alamat IP yang sama saat bootup
  • Tidak ada pengontrol domain

Masalah:

Meskipun saya telah mengonfigurasi semua profil jaringan Windows mesin aktif = Pribadi, mereka sering (setiap beberapa minggu atau lebih) kembali ke Publik, yang mencegah berbagi file dll.

Upaya perbaikan:

Pada setiap PC Windows saya telah memodifikasi Kebijakan Grup Lokal Computer Configuration->Security Settings->Network List Manager Policies:

  • Jaringan Tidak Dikenal = Pribadi
  • Mengidentifikasi Jaringan = Pribadi

Pengamatan:

Saya percaya masalahnya adalah layanan Windows Network Location Awareness (NLA) mendeteksi jaringan baru yang menyebabkan Profil Jaringan baru dibuat yang kemudian default ke Publik (walaupun di atas saya telah mengkonfigurasi Kebijakan Grup Lokal ke default ke Privat) . Banyak komputer menunjukkan bahwa Windows telah mendeteksi Jaringan Tidak Dikenal baru berkali-kali, yaitu mereka menunjukkan "Jaringan 14", yaitu ada 14 profil jaringan yang berbeda. Saya melihat ini beberapa profil saat meninjau profil sini di Registry: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles.

Ke-14 profil adalah ketika komputer benar-benar terhubung ke jaringan yang sama seperti dijelaskan di atas.

Saya belum dapat menemukan sumber daya yang menjelaskan dengan tepat bagaimana NLA menghasilkan pengidentifikasi unik untuk jaringan dan karenanya mengapa ia dapat mendeteksi bahwa ia telah menemukan jaringan baru.

Pertanyaan:

Bagaimana saya mencegah Windows mengidentifikasi jaringan lokal saya yang salah sebagai jaringan baru? Mungkin akan membantu jika saya tahu langkah apa yang NLA ikuti untuk menghasilkan pengidentifikasi unik untuk jaringan?

PaulH
sumber
1
Saya sedikit mengedit pertanyaan Anda untuk membantu memfokuskannya pada pertanyaan tentang penyelesaian masalah yang sebenarnya. Lihat masalah XY .
Saya katakan Reinstate Monica
NLA mengidentifikasi jaringan berdasarkan alamat MAC dari gateway default yang ditentukan untuk adaptor jaringan itu. Apakah mungkin router Anda tidak dapat diakses oleh komputer ini? Apakah masalah tampaknya mempengaruhi banyak komputer dalam waktu singkat, atau hanya satu pengguna dalam satu hari, kemudian pengguna lain pada waktu yang sama sekali berbeda?
Saya katakan Reinstate Monica
Mungkin lihat Komputer \ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ NetworkList \ Signatures \ Tidak dikelola atau setidaknya di sekitar lokasi itu dalam registri - dan lihat apakah DefaultGatewayMAC dan DNSSuffix cocok dengan yang Anda harapkan
Ross
PaulH - Lihat jawaban saya ketika Anda mendapat momen, inilah yang saya gunakan dengan kesuksesan yang cukup solid dalam lingkungan produksi seperti yang saya masukkan di bagian Metode 1 tetapi saya juga memberikan rincian lebih lanjut dengan bagian Metode 2 dari jawaban saya. Saya harap Anda menemukan salah satu solusi ini bermanfaat seperti yang saya miliki untuk masalah ini.
Pimp Juice IT

Jawaban:

5

Metode 1

Salah satu cara saya menangani masalah ini pada sistem Windows Server yang kritis dalam satu lingkungan yang saya pelihara adalah dengan skrip batch yang menggunakan Set-NetConnectionProfile dan netsh , dan secara eksplisit mengatur setiap NIC / adaptor tepercaya pada mesin menjadi pribadi pada startup sistem dengan Penjadwal Tugas menggunakan Run whether user is logged on or notdan Run with highest privilegesopsi.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Catatan: Walaupun bounty note menyatakan " Solusi tidak boleh menyebabkan hilangnya konektivitas jaringan untuk diterapkan " Saya ingin menyebutkan bahwa sejak saat masalah ini terjadi, Anda tetap memiliki gangguan jaringan, yang menjalankan skrip ini jika masalah terjadi secara acak ketika sistem tidak reboot yang hanya menjalankan skrip yang sama ini maka masih akan dengan cepat menyelesaikan masalah dan mendapatkan akses jaringan mesin OS kembali dalam urutan kerja dan yang diharapkan.

Selanjutnya, Anda dapat menggunakan Get-NetConnectionProfile untuk mendapatkan nama alias NIC dan nomor indeks untuk dimasukkan ke dalam contoh skrip kumpulan di bawah ini untuk kebutuhan dan / atau sistem Anda.

Skrip Batch

@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

Berikut adalah beberapa metode lain, dengan salah satu dari sekian banyak yang Anda coba tetapi saya meninggalkannya di sana untuk orang lain yang menemukan posting ini jika itu membantu mereka, tetapi ini adalah beberapa cara untuk mencegah hal ini sepenuhnya mungkin tetapi ada selalu akan menjadi kerugian dan kerugian untuk metode apa pun yang Anda pilih untuk digunakan jadi pilih racun Anda dan uji sesuai.

Metode 2 (Banyak Metode)

Jaringan Tidak Dikenal - Pindah dari Publik ke Privat atau Domain

Jika NLA tidak dapat menentukan lokasi koneksi, itu menamakannya "Tidak dikenal" dan menandai lokasi sebagai Publik. Ini memilih Publik karena itu yang paling aman dan Anda tidak akan menginginkan yang kurang jika koneksi ada di DMZ.

Ada dua cara mudah untuk memperbaikinya. Seseorang menggunakan Kebijakan Keamanan Lokal untuk mengubah lokasi default jaringan yang tidak dikenal. Metode kedua menggunakan perubahan ke properti koneksi jaringan untuk memberikan NLA informasi yang diperlukan untuk menempatkan lokasi dengan benar.

Menggunakan Kebijakan Keamanan Lokal

Perhatian: Ini hanya boleh digunakan jika komputer tidak akan pernah memiliki koneksi di LAN Publik. Jika tidak, Anda berisiko menerapkan profil firewall yang kurang aman untuk koneksi publik Anda.

  1. Buka " Kebijakan Keamanan Lokal ".

  2. Klik " Kebijakan Manajer Daftar Jaringan " di panel kiri. (Pilihan ini dimakamkan di versi Windows yang lebih lama.)

  3. Klik dua kali pada " Jaringan Tidak Dikenal " di panel kanan.

  4. Untuk komputer yang hanya ada di jaringan pribadi, tidak apa-apa untuk mengatur " Tipe lokasi " menjadi " pribadi ".

    masukkan deskripsi gambar di sini

Menggunakan Properti Koneksi Jaringan

Ini bukan tentang menambahkan IP gateway karena itu tidak berfungsi dengan baik pada server multi-homed. Sebagai gantinya, kami akan menambahkan akhiran DNS sehingga NLA dapat menemukan pengontrol domain dengan benar yang diketahui menandai lokasi sebagai "Jaringan domain".

  1. Buka Network Connections (dari Network and Sharing Center, klik "Ubah pengaturan adaptor".)

  2. Pergi ke properti dari satu koneksi jaringan yang ditandai sebagai "Tidak Diidentifikasi " tetapi pada LAN pribadi.

  3. Pergi ke properti untuk IPv4 .

  4. Klik tombol " Lanjutan ...".

  5. Pilih tab DNS .

  6. Masukkan nama domain Anda ke dalam kotak teks untuk " akhiran DNS untuk koneksi ini: ".

Nonaktifkan dan kemudian aktifkan koneksi untuk membuat NLA mengidentifikasi kembali lokasi. Setelah mengaktifkan koneksi, Status harus berubah ke nama domain dan Kategori Jaringan menjadi "Jaringan domain". Bergantung pada pengaturan Anda, kemungkinan Anda hanya perlu "memperbaiki" satu koneksi untuk mendapatkan semua koneksi terkait untuk melihat domain.

Pindah dari Pribadi ke Publik

Ada dua cara umum untuk memaksa NLA untuk menandai koneksi sebagai publik. Salah satunya adalah menggunakan aturan firewall untuk memblokir NLA sehingga tidak punya pilihan selain menggunakan lokasi default. Yang lainnya adalah menggunakan registri untuk menonaktifkan NLA pada koneksi.

Menggunakan Firewall

Saya belum menguji ini tetapi teorinya tampaknya baik.

  1. Buka " Windows Firewall dengan Keamanan Lanjutan " (yaitu wf.msc).

  2. Buka Aturan keluar .

  3. Klik pada " Aturan Baru ...".

  4. Gunakan pengaturan ini:

    • Tipe Aturan: Kustom
    • Program: Pilih "Semua program" dan kemudian klik "Kustomisasi ...". Pilih "Kesadaran Lokasi Jaringan" (nama pendeknya adalah NlaSvc).
    • Protokol dan Pelabuhan: Jenis protokol = Apa saja.
    • Cakupan: IP Lokal = Masukkan semua IP publik Anda. Periksa kembali koneksi dengan beberapa IP.
    • Tindakan: Blokir
    • Profil: Semua
  5. Setelah aturan diaktifkan, nonaktifkan dan kemudian aktifkan koneksi jaringan agar NLA mengidentifikasi kembali lokasi.

Menggunakan Registry

Saya belum memiliki pekerjaan ini untuk saya tetapi keadaan saya mungkin berbeda dari Anda. Menemukan nomor koneksi yang benar agak sedikit hit atau miss karena ada lebih banyak entri daripada yang Anda harapkan.

  1. Jalankan regedit

  2. Pergi ke HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

  3. Di bawahnya Anda akan melihat beberapa kunci berlabel 0000, 0001, 0002 dll ... Lihat ini dan temukan adaptor di mana Anda ingin menonaktifkan NLA.

  4. Untuk masing-masing adapter, tambahkan nilai DWORD baru bernama "* NdisDeviceType" dan setel ke 1 (pastikan Anda mendapatkan * di awal nama).

Menjadi Drastis

Profil lokasi disimpan dalam registri dan tampaknya tidak berbahaya untuk menghapusnya dan membiarkan Windows membangunnya kembali. Anda pasti ingin membuat cadangan registri terlebih dahulu dan Anda mungkin harus terhubung ke server melalui KVM daripada remote (RDP). Saya tidak akan bertanggung jawab jika Anda memilih langkah ini karena saya terutama meletakkan ini di sini untuk referensi.

Lokasi profil adalah:

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

sumber

Pimp Juice
sumber
Metode pertama terlihat menjanjikan. Saya tidak yakin tentang metode lain yang melibatkan me-restart layanan NLA karena itu tetap memperbaiki masalah, membuatnya sulit untuk mengetahui apakah me-restart layanan adalah solusinya, atau tindakan lainnya. Sekarang saya hanya perlu mesin yang melakukan kesalahan ini untuk menguji ....
Saya katakan Reinstate Monica
@TwistyImpersonator Ya, metode 1 adalah metode yang saya gunakan dan jalankan sebagai startup. Dalam hal ini, ini adalah server host virtual Hyper-V dengan 4 NIC dan memastikannya berjalan karena startup sejauh ini telah menyelesaikan masalah bagi saya dengan sistem itu. Saya pikir ada satu waktu lain terjadi karena switch jaringan atau router reboot dan daripada me-restart server virtual host saya hanya menjalankan skrip secara manual dan itu menyelesaikan masalah. Saya memperhatikan pertanyaan dan memposting solusi yang saya gunakan dan sumber daya lain yang dikutip yang tampak relevan dan berpotensi membantu.
Pimp Juice,
Saya perhatikan Anda memberikan hadiahnya tetapi saya rasa saya tidak menyadari bahwa itu untuk kebutuhan Anda dan bukan hanya mencoba mendapatkan jawaban dari OP. Itu bagus untuk diketahui juga.
Pimp Juice,
0

Saya mengalami masalah ini tanpa henti pada satu sistem tertentu. Itu akan merusak segalanya di setiap reboot. Saya mencoba semua solusi yang Anda sebutkan. Setelah melelahkan semua yang lain saya terpaksa menonaktifkan layanan "Network Location Awareness". Dari apa yang saya tahu itu tidak diperlukan. Ini secara permanen menyelesaikan masalah saya. Satu-satunya efek samping yang saya perhatikan adalah jendela "Network and Sharing Center" terlihat lucu. Layanan ini tidak ada sebelum Windows 7 dan sama sekali tidak berguna bagi saya.

Layanan.msc

"Kesadaran Lokasi Jaringan", Jenis Startup = "Dinonaktifkan"

HackSlash
sumber
Hmmm, tidak yakin ini adalah ide bagus di lingkungan domain ... atau ketika membawa laptop antara jaringan tepercaya dan tidak tepercaya. Adakah umpan balik dari salah satu skenario itu?
Saya katakan Reinstate Monica
Saya melakukan ini di lingkungan domain saya. Bagus sekali. Jika Anda menggunakan laptop Anda di lingkungan yang tidak tepercaya, Anda harus memiliki perlindungan lainnya. NLA tidak akan menyelamatkan Anda. Yang bisa dilakukan adalah menonaktifkan share secara otomatis. Saya sarankan tidak mengizinkan bagian apa pun pada laptop.
HackSlash
Tanpa NLA, bagaimana sistem Anda beralih antara domain dan profil pribadi, misalnya ketika seorang karyawan membawa pulang laptop?
Saya katakan Reinstate Monica
Tanpa NLA tidak ada profil sama sekali. Untuk apa Anda menggunakan profil ini?
HackSlash
Banyak sistem yang saya kelola memungkinkan lalu lintas masuk ketika terhubung ke jaringan domain, tetapi lalu lintas tersebut diblokir ketika sistem meninggalkan domain. Begitulah cara kami menerapkan pertahanan-dalam-dalam ... port hanya dibuka jika diperlukan dan ditutup di tempat lain.
Saya katakan Reinstate Monica