Terowong anda sudah aktif, gerbang menjawab ping, dan perkongsian fail masih tamat masa. Gabungan itu jarang menjadi masalah penghalaan: Windows telah meletakkan subrangkaian penyesuai VPN dalam profil Awam, dan setiap peraturan kebenaran yang ditulis untuk Peribadi atau Domain tidak pernah digunakan. Saya pernah menemui ini pada komputer riba yang sampai ke pejabat tanpa masalah dan pada pelayan RRAS yang melayani semua klien lain, dan pembaikannya singkat sebaik sahaja anda menamakan profil yang terlibat. Berikut ialah urutan kerja saya, bersama semakan yang memberitahu anda bila perlu berhenti sebelum langkah seterusnya.

Tentukan profil mana trafik benar-benar tiba

Firewall Windows tidak mempunyai satu mod global. Setiap antara muka yang bersambung membawa kategori, dan paket masuk ditapis mengikut kategori antara muka tempat ia tiba, jadi profil penyesuai VPN yang menentukan apa yang boleh dicapai klien dalam terowong, bukan penyesuai Wi-Fi atau Ethernet di sebelahnya. Baca kedua-dua fakta sebelum mengubah apa-apa:

Get-NetConnectionProfile | Select-Object Name, InterfaceAlias, NetworkCategory, IPv4Connectivity
Get-NetFirewallProfile -Name Public | Select-Object Name, Enabled, DefaultInboundAction

Pada pemasangan OpenVPN atau WireGuard standard, penyesuai VPN muncul sebagai rangkaian tidak dikenali dan mendarat dalam profil Awam, iaitu lalai bagi mana-mana rangkaian yang Windows tidak dapat kelaskan: tiada pengawal domain menjawab melaluinya dan tiada profil gerbang sepadan. Nama antara muka tidak penting di sini, jadi memanggil penyesuai "VPN" atau "Corp" tidak mengubah apa-apa. DomainAuthenticated memerlukan mesin yang disertai domain yang benar-benar boleh mencapai pengawal domain melalui antara muka itu; terowong berpecah yang hanya membawa satu subrangkaian tidak akan memenuhi syarat itu.

Jika peraturan yang anda perlukan sudah terhad kepada kolam VPN dan sudah terpakai pada kategori yang baru anda baca, berhenti di sini: penapisan bukan lapisan anda, dan tempat seterusnya untuk dilihat ialah konfigurasi perkhidmatan. Semakan itu mengambil sepuluh saat dan menjimatkan satu jam penyuntingan peraturan. Nama kategori dan apa yang diliputi setiap satu didokumenkan dalam rujukan Get-NetConnectionProfile.

Sahkan penapisan, bukan penghalaan, sebelum anda menyunting peraturan

Ping ialah ujian yang lemah. ICMP boleh lulus sementara port perkhidmatan digugurkan, dan hos boleh menjawab dari LAN sambil menolak permintaan yang sama melalui terowong. Uji port yang diperlukan klien, dari klien:

Test-NetConnection 10.8.0.1 -Port 445
Test-NetConnection 10.8.0.1 -Port 3389 -InformationLevel Detailed

Jika ujian port gagal, pisahkan kedua-dua lapisan. Kerosakan terowong atau laluan biasanya kelihatan sebagai tiada jawapan langsung dari alamat gerbang, manakala penolakan firewall menunjukkan gerbang yang menjawab dan port perkhidmatan yang tidak menjawab. Pada pelayan Windows yang menerbitkan kolam melalui RRAS, jalankan ujian yang sama dari klien dan baca profil pelayan itu sendiri: antara muka RAS boleh berada dalam kategori yang peraturan masuknya tidak pernah menyebut julat klien, dan sebab itulah mesin melayani LAN-nya sendiri dan menolak setiap klien dalam terowong.

Apabila hasilnya masih kabur, log penolakan bagi profil yang terlibat dan baca log itu:

Set-NetFirewallProfile -Name Public -LogBlocked True `
  -LogFileName "$env:systemroot\system32\LogFiles\Firewall\pfirewall.log"

Entri yang menamakan alamat dan port klien dengan DROP adalah muktamad, dan ia juga memberitahu anda peraturan mana yang hilang. Log yang kosong sementara SYN klien tidak pernah muncul menunjukkan masalah di hulu hos, jadi kembali ke terowong, peraturan NAT, atau laluan kolam sebelum menyentuh objek firewall lain.

Hadkan satu peraturan masuk kepada kolam klien

Pembaikannya ialah satu peraturan kebenaran masuk yang alamat jauhnya ialah kolam, bukan seluruh dunia. Daripada sesi tinggi:

New-NetFirewallRule -DisplayName "VPN clients - SMB 445" `
  -Direction Inbound -Action Allow -Protocol TCP -LocalPort 445 `
  -RemoteAddress 10.8.0.0/24 -Profile Public

Apabila perkhidmatan ialah satu fail binari, utamakan peraturan terhad program dengan -Program dan bukan senarai port; itu mengehadkan pengecualian kepada proses sekali gus kepada julat sumber.

Pemilihan profil ialah tempat kesilapan yang sama dilakukan ke arah bertentangan. -Profile Public mencukupi apabila penyesuai bersifat Awam dan kekal Awam. -Profile Any boleh dipertahankan apabila perkhidmatan mesti berfungsi tanpa mengira cara Windows mengelaskan penyesuai, tetapi hanya selagi skop jauh kekal. Apa yang tidak pernah boleh dipertahankan ialah -RemoteAddress Any pada profil Awam: peraturan itu mengikut komputer riba ke setiap rangkaian kafe dan hotel yang disertainya dan membuka port kepada sesiapa yang berkongsi subrangkaian itu.

Catat kolam di sebelah peraturan. -RemoteAddress 10.8.0.0/24 diam-diam berhenti sepadan pada hari kolam VPN dinomborkan semula, dan kegagalan kelihatan tepat seperti pepijat asal, sebab itulah ia memakan satu petang lagi. Namakan peraturan mengikut perkhidmatan dan julat sumber, simpan bersama dengan -Group, dan baca semula setiap kali definisi kolam berubah. Inventori peraturan yang boleh anda audit pada satu skrin mengalahkan peraturan betul yang tiada siapa dapat mencari.

Ubah kategori hanya apabila kategori itu keputusannya

Menukar antara muka kepada Peribadi juga berkesan, dan itu lalai yang salah. Profil Peribadi membawa senarai panjang peraturan kebenaran terbina dalam, yang merangkumi perkongsian fail dan pencetak, penemuan rangkaian, desktop jauh dan lebih banyak bergantung pada garis dasar, jadi pengelasan semula penyesuai VPN mengaktifkan kesemuanya sekaligus untuk setiap klien dalam terowong. Satu peraturan terhad memberi satu perkhidmatan kepada satu julat. Pada komputer riba yang juga menyertai rangkaian tidak dipercayai, perbezaan itu bukan kosmetik.

Ada kes apabila pengelasan itu benar-benar salah: terowong sentiasa hidup atau antara tapak yang membawa subrangkaian pejabat ialah infrastruktur dipercayai, dan menandakan penyesuai itu sebagai Peribadi ialah pilihan reka bentuk yang sah, dibuat sekali melalui dasar, bukan setiap tiket. Apabila anda melakukannya, lakukan secara eksplisit:

Set-NetConnectionProfile -InterfaceAlias "OpenVPN TAP-Windows6" -NetworkCategory Private

Pada peranti terurus, semak dahulu sama ada Dasar Kumpulan atau garis dasar MDM memiliki tetapan itu. Jika ya, perubahan tempatan dibatalkan pada penyegaran seterusnya, dan gpresult /h akan menamakan dasar yang memilikinya; betulkan di sana, bukan pada titik akhir.

Sahkan dari kedua-dua hujung dan tinggalkan jejak

Sahkan aliran yang dilaporkan pengguna, dari klien, selepas perubahan:

Test-NetConnection 10.8.0.1 -Port 445
Get-NetFirewallRule -DisplayName "VPN clients - SMB 445" | Get-NetFirewallAddressFilter | Select-Object RemoteAddress
Get-NetFirewallRule -DisplayName "VPN clients - SMB 445" | Get-NetFirewallPortFilter | Select-Object Protocol, LocalPort

Kemudian tutup gelung pada perkara yang akan rosak minggu depan. Mulakan semula hos dan uji semula, kerana peraturan yang terhad kepada profil yang salah terus berfungsi sehingga penyesuai kembali dalam kategori lain. Uji dari klien kedua, kerana satu klien yang memegang pajakan lapuk boleh menyembunyikan ketidakpadanan kolam. Kira peraturan yang anda tambah berbanding yang anda buang, kerana pengecualian bertindih ialah cara pembaikan dua baris menjadi dasar penapisan yang tiada siapa dapat menyemak.

Sebelum anda menganggapnya selesai:

  • Profil yang dinamakan dalam peraturan ialah profil pada antara muka tempat trafik tiba.
  • Skop jauh ialah kolam VPN, dan kolam itu sepadan dengan apa yang pelayan benar-benar berikan.
  • Tiada peraturan yang anda tambah menggunakan -RemoteAddress Any pada profil Awam.
  • Tiada apa yang dilumpuhkan untuk membuat ujian lulus, dan setiap perubahan kategori merekod siapa yang meluluskannya.

Artikel berkaitan